elif, elseまで行かない...
pythonというかプログラミングを初めて数ヶ月,気づくのにかなり時間がかかったので同じようにハマった方の役に立てばと投稿です.
###間違った例
if a == 'hoge' or 'fuga':
print('coffee')
else:
print('tea')
このコードではa
に何を代入してもcoffee
と出力され,else:
は無視されます.
私が意図した条件はaの値が'hoge'か'fuga'なら'caffee'を出力
なんですが,実際pythonではaの値が'hoge'か,もしくは,文字列'huga'が空でないか
と解釈されてしまいます.
if文において,条件が文字列のみの場合は,空でなければTrue
,''
という風に空ならFalse
になるから,条件1 or '文字列'
では常にTrue
になるわけですね.なので,
###正しい例
if a == 'hoge' or a == 'fuga':
print('coffee')
else:
print('tea')
たったこれだけです...
これで,a
にhoge
やfuga
以外を代入すると,tea
と表示されます.
今回,例ではor
を使ってますが,当然,and
などでも同じようなミスで意図しない挙動が起きると思いますのでご注意を!