1
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 ステートメント) を出力します。

私は独学でPythonを教えようとしていますが、飛び込んで学習しているだけです.これは私が取り組んでいる基本的なプログラムであり、拡張したいと考えています.

私はオンラインで見ましたが、if else ステートメントについて読んだことから、初心者の目にはこのコードが機能するはずです。私はただ理解できない何かを見逃しています

4

2 に答える 2

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

のように解析されます

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

のような空でない文字列'Guitar'は として評価されるTrueため、最初の条件は常にTrueです。

代わりに、

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

または、 のようなおかしなスペルを受け入れる場合は'gUiTAR'、次を使用できます。

if instrument.lower() == 'guitar':
于 2012-10-08T01:45:15.030 に答える
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あなたが思うように使用されていません。これは論理的な or であり、「複数のオプション」の区切り文字ではありません。

于 2012-10-08T01:44:46.143 に答える