instrument=(raw_input("Which kind of tab would you like to view? Enter 'Guitar' or 'Bass' for a random tab " ))
print
if instrument=='guitar' or 'Guitar':
print ("0-3-5---0-3-6-5---0-3-5-3-0")
elif instrument=='bass' or 'Bass':
print ("3-5-12--12-0-5-6-0-0-0-3")
else:
print 'Sorry, please re-enter a proper answer'
此代码每次打印出“吉他”选项卡(第一个if语句),无论您为变量'instrument'输入什么内容。
我正在尝试自学python,我只是跳进去学习,这是我正在研究的基本程序,并希望扩展。
我看过网上但是从我读到的关于if else语句的内容来看,我的新手眼睛看起来这个代码应该有效。我错过了一些我无法弄清楚的东西
答案 0 :(得分:8)
if instrument=='guitar' or 'Guitar':
被解析为
if (instrument=='guitar') or ('Guitar'):
'Guitar'
等非空字符串的评估结果为True
,因此第一个条件始终为True
。
相反,请使用
if instrument in ('guitar', 'Guitar'):
或者,如果您愿意接受像'gUiTAR'
这样的有趣拼写,您可以使用
if instrument.lower() == 'guitar':
答案 1 :(得分:7)
instrument == 'guitar' or 'Guitar'
应该是
instrument == 'guitar' or instrument == 'Guitar'
或更好,
instrument in ('guitar', 'Guitar')
甚至
instrument.lower() == 'guitar'
和低音部分相同。
它始终输出第一个选项的原因是a == b or c
...
...实际上读为(a == b) or c
。
or
运算符未按照您的想法使用。它是合乎逻辑的,而不是“多选项”分隔符。