否则,elif,如果 Python 中存在问题


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 语句来看,在我的新手看来,这段代码应该可以工作。我错过了一些我无法弄清楚的东西

if instrument=='guitar' or 'Guitar':

解析为

if (instrument=='guitar') or ('Guitar'):

'Guitar'这样的非空字符串被计算为 True ,所以第一个条件总是True

相反,请使用

if instrument in ('guitar', 'Guitar'):

或者,如果你愿意接受像'gUiTAR'这样的有趣拼写,你可以使用

if instrument.lower() == 'guitar':
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运算符的使用方式与您认为的那样。它是一个逻辑或,而不是"多个选项"分隔符。

最新更新