如何简化带输入校验的Gregorian Epact计算Python脚本?
简化格里高利历闰余计算脚本的方案
原脚本存在一些可以优化的地方,比如依赖math库计算位数的方式不够直观,还存在潜在的变量未定义问题,下面是简化后的实现,同时保留所有要求的功能:
# 格里高利历闰余计算程序 print("本程序用于计算给定年份的格里高利历闰余值。") # 最多允许5次输入尝试 for attempt in range(5): year_input = input("请输入4位年份(例如:2020):") # 校验输入是否为有效数字且是4位数 if year_input.isdigit() and len(year_input) == 4: year = int(year_input) break # 处理输入错误的情况 if attempt == 4: print("已用完所有尝试次数!") exit() print("输入无效,请输入一个4位数字的年份。") # 计算闰余 century = year // 100 epact = (8 + (century // 4) - century + ((8 * century + 13) // 25) + 11 * (year % 19)) % 30 print(f"该年份的闰余值为 {epact} 天。")
简化说明
- 移除不必要的依赖:删掉了
math库,直接用字符串的isdigit()方法判断是否为纯数字,结合len()判断4位数,逻辑更直观,还避免了原脚本中输入非数字时digits变量未定义的错误。 - 简化循环逻辑:用
for循环直接控制5次尝试,不用手动维护计数变量和状态标记,代码更简洁易读。 - 优化错误处理:当第5次输入仍错误时,直接退出程序,避免后续无效判断。
- 格式化输出优化:用f-string替代拼接式打印,语句更简洁。
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

