Python,分隔if语句

时间:2014-09-07 11:36:13

标签: python

我一直在做一些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"。它说它没有定义,但超过24行代码说其他明智的。我尝试了很多东西,但仍无法找到解决问题的方法。我似乎找不到定义" month_word"的方法。因为它认为它是最后一部分的一部分而且:"声明。是否有某种命令可以分离语句?而且我所说的是真的,它是最后的一部分"否则:"。我真的可以使用这方面的帮助,这方面的任何信息都会非常有用!

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

将月份更改为字符串会更容易:month = str(now.month)