2017-10-14 153 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'