我是编程的初学者(仅9天)。
我最近了解了if,else语句。 但是我在应用它时遇到了一个问题。
使用代码时
y=input('ans>>')
if y=='c':
q=5
elif y=='a'or'b'or'd':
q=-1
else:
q=0
print(q)
当我输入c时,它会给我5,当我输入a时,它会给我-1,但
当我只输入a,b,c,d时,每次仍然给我-1,但应该输入0
我该如何解决?
答案 0 :(得分:1)
y=input('ans>>')
if y=='c':
q=5
elif y in ['a', 'b', 'd']: //similar to y=='a' or y=='b' or y=='d'
q=-1
else:
q=0
print(q)
答案 1 :(得分:1)
问题出在elif
状态。 or
的评估顺序与您预期的不同。 Python将其读取为:
((y == 'a') or 'b') or 'd')
如果y == 'a'
是False
,则其求值为(False or 'b') or 'd'
。 False or 'b'
的计算结果为'b'
,最后'b' or 'd'
的计算结果为'b'
,它不为零或None
,因此elif
会将其视为是True
。
根据其他人的建议,写:
elif y == 'a' or y == 'b' or y == 'd':
或写:
elif y in ['a', 'b', 'd']:
答案 2 :(得分:1)
我可能建议您学习布尔类型及其操作,例如“或”,“和”。 简而言之-您必须在比较的逻辑表达式上使用“ and”和“ or”进行操作:
y =='a'
y =='b'
y =='d'
所有这三个应该是产生True或False的不同比较 然后您可以测试逻辑“或”和“与”的结果。 ''' 如果y =='a'或y =='b'或y =='d':
请记住,对布尔值进行逻辑运算会产生以下结果:
True或False为True
对与错就是错
假和假就是假
假或假是假
我希望这会有所帮助