将来のためのヒント:自分がコンピュータであるかのように、非常に詳細にコードを考えてみてください。たとえば、私は文字通り自分自身と次のような会話をします。
うーん、 の場合day = 'Saturday'、コードは返さFalseれるべきではないと思いますが返されます。行ごとに何が起こっているか見てみましょう。
def weekend(day):
dayよし、今から良さそう 気がついたら差し替えよう'Saturday'…
if day != 'Saturday' or day != 'Sunday':
- わかりましたので、これを精神的に に翻訳し
if 'Saturday' != 'Saturday' or 'Saturday' != 'Sunday':ます。
- ここで、比較を評価して単純化します。
'Saturday' != 'Saturday'になるFalse
'Saturday' != 'Sunday':になるTrue
- それらを差し込むと、
ifステートメントが とif False or True同じであると言っていることがわかりif Trueます。つまりday = Saturday、 の戻り値につながりますFalse。
day = 'Saturday'ああ、これでケースの何が問題だったのかわかりました。day != 'Sunday'条件は、 が にif評価されたことを意味しTrueます。
したがって、以下のコードはTrueforを返しますがday = 'Saturday'、
def weekend(day):
if day != 'Saturday':
return False
else:
return True
このコードはday = 'Sunday'、
def weekend(day):
if day != 'Sunday':
return False
else:
return True
2 つを と組み合わせることはできませんor。
したがって、将来はそのように自分自身に話しかけてみてください。これは、特に紛らわしいブール論理がある場合に、デバッグに非常に役立ちます。
return day.lower() in ['saturday','sunday'](記録として、これがこれにアプローチする最良の方法だと思います。)