如果else语句没有给出所需的输出

时间:2017-10-14 13:06:18

标签: python

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'。但是设计的代码尽管今天是'星期六'(2017年10月14日),仍然会回归'A'。我怎么能解决它?

4 个答案:

答案 0 :(得分:3)

将您的条件更改为:

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

或:

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

在你的版本中'Thursday'是一个非空字符串,因此在被评估为布尔表达式的原子部分时总是很简洁。

答案 1 :(得分:2)

您的if语句与

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

和False或'none empty string'将始终评估为True。

我会将其实现为

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

答案 2 :(得分:2)

你所写的内容相当于两个条件的布尔or

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

Thursday总是求值为True(因为这是在python中评估非空字符串的方式)。

相反,你可以写(更惯用)

today_day in ('Wednesday' or 'Thursday')

today == 'Wednesday' or today == 'Thursday'

答案 3 :(得分:0)

问题是你在问if (today_day == 'Wednesday') or 'Thursday''Thursday'评估为True,因为它不是空字符串,因此place始终为A。你需要做的是

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