我正在编写一个程序,用户将在每月和每年输入3个数字,并以2014年1月2日的格式输出。到目前为止,我已经完成了这个
year =input("what year is it")
month=int(input("what is the numerical value of the month"))
day=input("what number day is it")
if month == 1:
January = str(month)
if day == 1 or 21 or 31:
print (day+"st January",year)
elif day == 2 or 22:
print (day+"nd January",year)
elif day ==3 or 23:
print (day+"rd January",year)
elif day == 4 or 5 or 6 or 7 or 8 or 9 or 10 or 11 or 12 or 13 or 14 or 15 or 16 or 18 or 19 or 20 or 24 or 25 or 26 or 27 or 28 or 29 or 30:
print (day+"th January",year)
我遇到的问题是,当我输入一天如4时,它将输出到2014年1月4日。 我正在使用python 3并且已经学习了for循环以及if语句,如果这有帮助
答案 0 :(得分:2)
使用库和词典,一个好的规则要记住,如果你需要两个以上的if
,字典可能会更好。
from datetime import date
ext_dir = {1:'st.', 2:'nd.', 3:'rd.',
21:'st.', 22:'nd.', 23:'rd.',
31:'st.' } # all the rest are th
# prompt for the year month day as numbers remember to int them
thedate = date(year, month, day)
ext = ext_dir.get(day, 'th.')
datestr = thedate.strftime('%%d%s %%M %%Y' % ext)
答案 1 :(得分:1)
您遇到的问题是当您执行检查时:
if day == 1 or 21 or 31:
python中的运算符优先级使得此语句的行为类似于:
if (day == 1) or (21) or (31):
并且在python中,与许多其他语言一样,非null /非零值是“true
”,因此在第一次测试中总是评估为true。要解决此问题,请修改if
语句,并将以下所有测试看起来更像以下内容:
if (day == 1) or (day == 21) or (day == 31):
答案 2 :(得分:0)
year =input("what year is it")
month=int(input("what is the numerical value of the month"))
day=input("what number day is it")
if month == 1:
January = str(month)
if day == 1 or day == 21 or day == 31:
print (day+"st January",year)
elif day == 2 or day == 22:
print (day+"nd January",year)
elif day ==3 or day == 23:
print (day+"rd January",year)
else:
print (day+"th January",year)