`
is_summer = True
print("Values 1-12 correlate to the months of the year")
while is_summer == True:
_month = int(input("Enter the month of the year: "))
if _month == 4 or 5 or 6 or 7 or 8:
is_summer = int(input("It is summer, what is the temperature?: "))
if is_summer in range(60,101):
print("The squirrels are playing")
else:
print("The squirells are not playing")
elif _month == 1 or 2 or 3 or 9 or 10 or 11 or 12:
is_summer = int(input("It is winter, what is the temperature?: "))
if is_summer in range(60,91):
print("The squirrels are playing")
else:
print("The squirrels are not playing")
`
如果我输入1,2,3,9,10,11或12,我的代码将不会转到elif语句。我的嵌套if语句是否错误,或者是否是其他内容?
答案 0 :(得分:1)
您的条件语句的工作原理如下,这就是为什么条件对于您提供的输入并不总是正确的原因。
>>> month = 4
>>> month == 4 or 5 or 6
True
>>> month = 5
>>> month == 4 or 5 or 6
5
您可以使用in
运算符检查您使用_month
检查的值列表中是否存在or
。 in
运算符的工作方式如下
month = 1
month in [1,2,3,4,5] # True
month in [2,3,4,5,6] # False
因此,您可以将程序更改为
is_summer = True
print("Values 1-12 correlate to the months of the year")
while is_summer == True:
_month = int(input("Enter the month of the year: "))
if _month in [4,5,6,7,8]:
is_summer = int(input("It is summer, what is the temperature?: "))
if is_summer in range(60,101):
print("The squirrels are playing")
else:
print("The squirells are not playing")
elif _month in [1,2,3,9,10,11,12]:
is_summer = int(input("It is winter, what is the temperature?: "))
if is_summer in range(60,91):
print("The squirrels are playing")
else:
print("The squirrels are not playing")
答案 1 :(得分:1)
您的问题与if语句有关。
if _month == 4 or 5 or 6 or 7 or 8:
检查_month == 4,或者5是否真实,或者6是否真实等等。
你想做的事:
if _month == 4 or _month ==5 or _month == 6 or _month == 7 or _month == 8:
或更简洁
if 4 <= _month <= 8:
为你的elif做同样的事。虽然如果你知道_month是从1到12,那么它真的可能只是一个别的,而不是一个elif
答案 2 :(得分:1)
您的代码未按预期执行的原因是因为您实际上并未检查_month
是否等于每个数字。
if _month == 1 or 2 or 3
与if _month == 1 or _month == 2 or _month == 3
不同。
将第一个视为if (_month == 1) or (2) or (3)
。 _month == 1
评估为False
,但2
或3
为非零值,评估为True
,因此始终采用第一个if
答案 3 :(得分:1)
您的第一个if
声明基本上是说_month
是4 - 很棒 - 或者5或6或7或8会评估为True
。在Python的if语句中,正整数将始终计算为True
-
if 1:
print("hello!")
将始终打印hello!
。您的if
语句需要如下所示,而不是:
if _month == 4 or _month == 5 or _month == 6 or _month == 7 or _month == 8:
print("hurrah!")
然而,这已经变得不必要了 - 我们可以使用比较运算符(如小于(>
)和大于(<
)来简化这一点,如下所示:
if _month < 3 and _month > 9:
print("hurrah!")