这里的初学者。当我输入指定的字符串时,有人能解释和/或帮助我修改这个Python代码以生成正确的输出吗?例如,如果输入三月,输出"02“。目前,程序总是输出00,为一月,无论输入。以下是代码:
x = raw_input("Starting Month: ")
if x == "January" or "january":
stMonth = '00'
elif x == "February" or "february":
stMonth = '01'
elif x == "March" or "march":
stMonth = '02'
elif x == "April" or "april":
stMonth = '03'
elif x == "May" or "may":
stMonth = '04'
elif x == "June" or "june":
stMonth = '05'
elif x == "July" or "june":
stMonth = '06'
elif x == "August" or "august":
stMonth = '07'
elif x == "September" or "september":
stMonth = '08'
elif x == "October" or "october":
stMonth = '09'
elif x == "November" or "november":
stMonth = '10'
elif x == "December" or "december":
stMonth = '11'
else:
print "error"
print stMonth输出:
$ python month.py
Starting Month: march
00提前感谢-任何和所有的帮助都是非常,非常感谢!
发布于 2015-01-01 06:18:42
它不能像预期那样工作的原因是,
if x == "January" or "january":相当于:
if x == "January" or True:第一个if语句将始终是True。
>>> x = 'january'
>>> if x:
... print x
...
january
>>> 使用.lower()函数将输入字符串转换为小写,这样就更容易了。
x = raw_input("Starting Month: ").lower()
if x == "january":
stMonth = '00'
elif x == "february":
stMonth = '01'
elif x == "march":
stMonth = '02'
elif x == "april":
stMonth = '03'
elif x == "may":
stMonth = '04'
elif x == "june":
stMonth = '05'
elif x == "june":
stMonth = '06'
elif x == "august":
stMonth = '07'
elif x == "september":
stMonth = '08'
elif x == "october":
stMonth = '09'
elif x == "november":
stMonth = '10'
elif x == "december":
stMonth = '11'
else:
print "error"
print stMonth发布于 2015-01-01 06:19:11
因为or的优先级高于==:x == 'january' or 'January'实际上与(x == 'january') or 'January'相同,并且'January'的计算结果为true,所以组合语句始终为真。
您应该将每个语句更改为x == 'january' or x == 'January'。
发布于 2015-01-01 06:23:30
你的声明:
if x == "January" or "january":总是返回true,因为它的计算值为:
是x ==“一月”否,则或被计算,它检查一月并返回true。因此,如果您尝试:如果“一月”:它总是返回您的真,因此您得到00作为输出。
您可以使用或使用或使用IN子句,例如:
if x == "January" or x == "january":或
if x in ("January", "january"):https://stackoverflow.com/questions/27728687
复制相似问题