2017-10-14 8 views
-1
from datetime import date 
import calendar 

my_date = date.today() 
today_day = calendar.day_name[my_date.weekday()] 

if today_day == 'Wednesday' or 'Thursday': 
    place = 'A' 
else: 
    place = 'B' 

最初は、「今日」が「水曜日」または「木曜日」の場合は「A」、それ以外の場合は「B」に設定したいと考えています。しかし、今日の土曜日(14/10/2017)にもかかわらず、設計コードは「A」を返し続けました。どうすれば修正できますか?ブール式の原子一部として評価するとき'Thursday'が空の文字列であり、そのような常にtruthyとしてあなたのバージョンではelse文で出力が得られない場合

if today_day in ('Wednesday', 'Thursday'): 

if today_day == 'Wednesday' or today_day == 'Thursday': 

か:

+0

'[ '水曜日'、 '木曜日']であればtoday_day'であなたのif文を交換してください –

答えて

0

としてこれを実装します。 'Thursday'は、空の文字列ではないため、Trueと評価されます。したがって、placeは常にAになります。何をする必要がある、あなたが書かれている何

if today_day == 'Wednesday' or today_day == 'Thursday': 
    place = 'A' 
else: 
    place = 'B' 
2

あなたの文は

if (today_day == 'Wednesday') or 'Thursday': 

とFalseまたは「どれも空の文字列」にeqivalentであるが、常に真と評価されます場合。

私は、問題は、あなたがif (today_day == 'Wednesday') or 'Thursday'を求めているです

weekday = date.today().weekday() 
place = 'A' if weekday in [3,4] else 'B' 
2

は二つの条件

(today_day == 'Wednesday') or 'Thursday' 

Thursdayorは常にTrueに評価ブール値と等価である(つまりはpythonで評価されるか非空の文字列だからです) 。

代わりに、あなたが(もっと慣用)を書くことができる

today_day in ('Wednesday' or 'Thursday') 

または

today == 'Wednesday' or today == 'Thursday' 
関連する問題