2017-10-14 90 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'。我怎麼修復它?當作爲一個布爾表達式的原子部分評價If else statement does not desired results

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

在您的版本'Thursday'是一個非空字符串,因此總是truthy:

+0

替換爲您的if語句'如果today_day在[ '星期三', '星期四']' –

回答

0

的問題是你是問if (today_day == 'Wednesday') or 'Thursday''Thursday'的計算結果爲True,因爲它不是空字符串,因此place將始終爲A。你需要做的是

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

更改條件:

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

或。

2

你的if語句是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'