Python新手:为什么这个简单的ifelif(C case块的复制)总是产生相同的结果?

2024-09-30 12:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我是初学者。每当我输入指定的字符串时,有人能解释和/或帮助我修改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

提前感谢-任何和所有的帮助是非常,非常感谢!你知道吗


Tags: or字符串代码程序inputrawifprint
3条回答

您的声明:

if x == "January" or "january":

总是返回true,因为其计算结果为:

是x==“一月”否 然后对or进行求值并检查一月,返回true。所以如果你尝试: 如果“一月”: 它总是返回您的真值,因此您得到00作为输出。你知道吗

您可以在下列子句中使用or或:

if x == "January" or x == "january":

或者

if x in ("January", "january"):

因为or==具有更高的优先级:x == 'january' or 'January'实际上与(x == 'january') or 'January'相同,并且'January'的计算结果为true,所以组合语句总是true。你知道吗

您应该将每个语句更改为x == 'january' or x == 'January'。你知道吗

它不能按预期工作的原因是

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

相关问题 更多 >

    热门问题