Python,分离if语句

1 投票
2 回答
1199 浏览
提问于 2025-04-20 06:40

我最近在写Python代码,遇到了一些麻烦。我在一个比较大的脚本里有两个if语句:

    from datetime import datetime
answer_simpl = "worded_date"
if answer_simpl == "worded_date":
    now = datetime.now()
    day = now.day
    month = now.month
    year = now.year
if day == "1":
    num_th = "st"
elif day == "21":
    num_th = "st"
elif day == "31":
    num_th = "st"
elif day == "2":
    num_th = "nd"
elif day == "22":
    num_th = "nd"
elif day == "32":
    num_th = "nd"
elif day == "3":
    num_th = "rd"
elif day == "23":
    num_th = "rd"
else: num_th = "th"
if month == "1":
    month_word = "January"
elif month == "2":
    month_word = "Febuary"
elif month == "3":
    month_word = "March"
elif month == "4":
    month_word = "April"
elif month == "5":
    month_word = "May"
elif month == "6":
    month_word = "June"
elif month == "7":
    month_word = "July"
elif month == "8":
    month_word = "August"
elif month == "9":
    month_word = "September"
elif month == "10":
    month_word = "October"
elif month == "11":
    month_word = "November"
elif month == "12":
    month_word = "December"
print("The date is {}{} of".format(day,num_th),month_word,year)

当我运行这个代码时,它能正常工作,直到试图打印“month_word”时。它提示“month_word”没有定义,但在之前的24行代码里却有提到过。我尝试了很多方法,还是找不到解决办法。我好像没法定义“month_word”,因为它被认为是最后一个“else:”语句的一部分。有没有什么命令可以把这些语句分开?我说的是否正确,它真的是最后一个“else:”的一部分?我真的需要一些帮助,任何信息都会对我很有帮助!

2 个回答

0
elif month == 9: # you need to check against an integer

把月份改成字符串会更简单: month = str(now.month)

5

你的问题是因为 daymonthyear 是整数,而你却把它们和字符串进行比较。所以你的第二个 if 语句不会执行任何 month_word = ... 的代码,这样 month_word 这个变量就不会被定义。

把你的条件改成整数,比如 elif month == 5:

更新

另外,试着想一个比这个更好的实现方式,比如:

import calendar
from datetime import datetime

now = datetime.now()
day = now.day
month = now.month
year = now.year

num_th = {1:  'st',
          21: 'st',
          31: 'st',
          2:  'nd',
          22: 'nd',
          3:  'rd'}.get(day, 'th')
month_word = calendar.month_name[month]

print("The date is {}{} of".format(day, num_th), month_word, year)

撰写回答