用Python写个小工具网页

描述

简简单单的用 Python 撸一个计算年龄的工具网页,不用对前端特别熟悉,只要专注于工具的逻辑,其他都交给 Python 吧。

1. 总体结构

实现了 3 个功能

前端

2. 正确地计算年龄

输入 2000-01-01

# 用户输入的生日
now = datetime.strptime(B, "%Y-%m-%d")
# 输出现在年龄
delta_y = rd(datetime.now(), now).years
delta_m = rd(datetime.now(), now).months
delta_d = rd(datetime.now(), now).days

前端

前端

3. 警告日期格式有问题

日期格式不正确,比如为 2000/01/01

# 检查日期格式
try:
    val = datetime.strptime(B, "%Y-%m-%d")
except:
    # 如果格式错误,警告提示
    put_error("警告:日期格式不正确")
    time.sleep(3)
    continue

前端

前端

4. 输入日期比现在时间大

比如为 2022-01-29,显示输入时间和现在时间,进行提示

# 日期比现在时间大
put_warning(
    f"找不到结果,现在日期是"
    f"{date[0]}-{date[1]}-{date[2]}, "
    f"你不能使用"
    f"{in_date[0]}-{in_date[1]}-"
    f"{in_date[2]}这个日期。")

前端

前端

5. 需要的第三方模块

我们只需要关注 python 代码,pywebio 会自动生成网页

6. 完整的代码

# 计算年龄
from dateutil.relativedelta import relativedelta as rd
# 获取时间、格式化时间
from datetime import datetime
# 用来延迟
import time
# 用来生成网页
from pywebio.input import *
from pywebio.output import *

while True:
    clear()  # 每次循环先清空所有数据

    # 标题
    put_html(""left"">"
             "年龄计算器")

    # 输入生日日期
    B = input(
        "",
        placeholder="你的生日,格式为 yyyy-mm-dd"
    )

    # 检查日期格式
    try:
        val = datetime.strptime(B, "%Y-%m-%d")
    except:
        # 如果格式错误,警告提示
        put_error("警告:日期格式不正确")
        time.sleep(3)
        continue

    # 解析输入的日期
    in_date = B.split('-')

    # 获取现在时间
    date = datetime.now().strftime("%Y-%m-%d")
    # 解析现在的日期
    date = date.split('-')

    # 转化为数字列表
    in_date = [int(i) for i in in_date]
    date = [int(i) for i in date]

    if in_date <= date:
        # 用户输入的生日
        now = datetime.strptime(B, "%Y-%m-%d")
        # 输出现在年龄
        delta_y = rd(datetime.now(), now).years
        delta_m = rd(datetime.now(), now).months
        delta_d = rd(datetime.now(), now).days
        popup("你的年龄", [put_html(
            "%s 岁
%s 个月
%s 天" % (delta_y, delta_m, delta_d)),
            put_buttons(
                ['点击关闭'],
                onclick=lambda
                    _: close_popup())],
              implicit_close=True)
    else:
        # 日期比现在时间大
        put_warning(
            f"找不到结果,现在日期是"
            f"{date[0]}-{date[1]}-{date[2]}, "
            f"你不能使用"
            f"{in_date[0]}-{in_date[1]}-"
            f"{in_date[2]}这个日期。")
        time.sleep(3)
    clear()
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分