【发布时间】:2023-01-06 22:06:22
【问题描述】:
尝试编写一个简单的脚本来确定日期的月亮名称。我有一个日期和月亮名称的字典,并尝试遍历每个日期以将今天的日期与满月的日期进行比较,希望最后一场比赛获胜,但 Python 似乎在第一场比赛后停止。
#!/usr/bin/python3
from datetime import date
def get_moon_name(d):
full_moons = {
'2022-12-07': 'Able',
'2023-01-06': 'Baker',
'2023-02-05': 'Charlie',
'2023-03-07': 'Delta' }
for md in full_moons.keys():
moon_date = date.fromisoformat(md)
print(f"Comparing {d} to {moon_date}")
if d >= moon_date:
moon_name = full_moons[md]
return moon_name
if __name__ == "__main__":
d_today = date.today()
print(f"This full moon's name is {get_moon_name(d_today)}")
删除第一个日期将产生 Baker 作为月亮名称,因此如果可以到达它,它就会匹配。
这是 Python 3.9.6 (Mac OS) 或 3.10.9 (Homebrew)。
想法?我敢肯定还有一种更 Pythonic 的方式,但我不明白为什么会失败。
速记: 尝试运行它,预计它会输出 Baker,因为今天是 1 月 6 日,但我得到了 Able,并且没有迹象表明它曾经查看过第二个值。
【问题讨论】:
-
只需缩减行
return moon_name(删除一个缩进单位)
标签: python python-3.x python-3.10