在输入日期为2023-3-31后就没有输出了,还有在输入日期的月份为8月时显示e变量没有
2条回答 默认 最新
- 梦幻精灵_cq 2023-11-01 02:17关注解决 无用评论 打赏 举报 编辑记录
关注
【以下回答由 GPT 生成】
这段Python代码存在以下问题:
- 代码中使用了未定义的变量
e
,在赋值之前使用了该变量,会导致NameError
。 print(f"第%.0f天{e}")
这行中的格式化字符串有错误,应该使用%
作为占位符,如print("第%.0f天" % e)
。- 在条件判断语句中,对于月份在1-12范围内的情况,没有考虑2月份的情况,应该在
b in range(1, 13)
的条件中添加and b != 2
。 - 在条件判断语句中,对于月份为1、3、5、7的情况,没有处理除了闰年之外的情况,应该使用
or
来连接两个条件,如((a % 4 == 0) and (a % 100 != 0)) or (a % 400 == 0)
。 - 在条件判断语句中,对于月份为1、3、5、7的情况,计算
e
的公式错误,应该是e = n + 31 * (b-1) + c
。 - 在条件判断语句中,对于月份为8、10、12的情况,计算
e
的公式错误,应该是e = n + 31 * (b-1) + 30 * ((b-1)//2)
。 - 在条件判断语句中,对于月份为2、4、6、9、11的情况,计算
e
的公式错误,应该是e = n + 31 * (b-1) + 30 * ((b-1)//2) - 1
。 - 在条件判断语句中,对于不在指定日期范围内的情况,没有给出提示信息,可以添加
print("输入错误")
来提示输入错误。
修正后的代码如下:
a, b, c = map(int, input().split('-')) n = c if b in range(1, 13) and c in range(1, 32): if b != 2: if b in [1, 3, 5, 7]: if ((a % 4 == 0) and (a % 100 != 0)) or (a % 400 == 0): e = n + 31 * (b-1) + c else: e = n + 31 * (b-1) + c - 1 elif b in [8, 10, 12]: e = n + 31 * (b-1) + 30 * ((b-1)//2) if ((a % 4 == 0) and (a % 100 != 0)) or (a % 400 == 0): e = n + 31 * (b-1) + 30 * ((b-1)//2) + 1 elif b in [2, 4, 6, 9, 11]: e = n + 31 * (b-1) + 30 * ((b-1)//2) - 1 if ((a % 4 == 0) and (a % 100 != 0)) or (a % 400 == 0): if b == 2: e = n + 31 * (b-1) + c else: e = n + 31 * (b-1) + 30 * ((b-1)//2) + 1 else: if (a % 4 != 0): if c not in range(1, 29): print("输入错误") else: if c not in range(1, 30): print("输入错误") print("第%.0f天" % e) else: print("输入错误")
【相关推荐】
- 你可以看下这个问题的回答https://ask.csdn.net/questions/7750410
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python绘制随机森林重要度排序条形图,以及把重要度之和前0.9显示出来,用于观察
- 同时,你还可以查看手册:python- 定义扩展类型:已分类主题- 终结和内存释放 中的内容
- 您还可以看一下 王进老师的跟着王进老师学开发之Python篇第一季:基础入门篇课程中的 时间日期案例演示02小节, 巩固相关知识点
- 除此之外, 这篇博客: Python数据清洗--日期时间变量的处理中的 数据框里面对时间变量的操作 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- 代码中使用了未定义的变量