否则,elif,如果Python出现问题

011*_*100 1 python if-statement

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'
Run Code Online (Sandbox Code Playgroud)

无论您为变量"乐器"输入什么内容,此代码每次都打印出"吉他"选项卡(第一个if语句).

我正在尝试自学python,我只是跳进去学习,这是我正在研究的基本程序,并希望扩展.

我看过网上但是从我读过的关于if else语句的内容来看,我的新手眼睛看起来这段代码应该有效.我错过了一些我无法弄清楚的东西

unu*_*tbu 8

if instrument=='guitar' or 'Guitar':
Run Code Online (Sandbox Code Playgroud)

被解析为

if (instrument=='guitar') or ('Guitar'):
Run Code Online (Sandbox Code Playgroud)

非空字符串'Guitar'被评估为True,因此第一个条件始终是True.

相反,使用

if instrument in ('guitar', 'Guitar'):
Run Code Online (Sandbox Code Playgroud)

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

if instrument.lower() == 'guitar':
Run Code Online (Sandbox Code Playgroud)


Amb*_*ber 7

instrument == 'guitar' or 'Guitar'
Run Code Online (Sandbox Code Playgroud)

应该

instrument == 'guitar' or instrument == 'Guitar'
Run Code Online (Sandbox Code Playgroud)

或更好,

instrument in ('guitar', 'Guitar')
Run Code Online (Sandbox Code Playgroud)

甚至

instrument.lower() == 'guitar'
Run Code Online (Sandbox Code Playgroud)

和低音部分相同.


它总是输出第一个选项的原因是a == b or c......

......实际上是读作的(a == b) or c.

or运营商不使用你是怎么想它是.它是一个逻辑或不是"多选项"分隔符.