Python,分离if语句
我最近在写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
你的问题是因为 day
、month
和 year
是整数,而你却把它们和字符串进行比较。所以你的第二个 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)