【问题标题】:If else statement does not give desired output [duplicate]如果 else 语句没有给出所需的输出 [重复]
【发布时间】:2017-10-14 13:06:18
【问题描述】:
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”。我该如何解决?

【问题讨论】:

  • if today_day in ['Wednesday', 'Thursday']替换你的if语句

标签: python


【解决方案1】:

将您的条件更改为:

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

或:

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

在您的版本中,'Thursday' 是一个非空字符串,因此在作为布尔表达式的原子部分进行评估时始终为真。

【讨论】:

    【解决方案2】:

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

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

    Thursday 的计算结果始终为 True(因为这就是在 python 中计算非空字符串的方式)。

    相反,您可以编写(更惯用的)

    today_day in ('Wednesday' or 'Thursday')
    

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

    【讨论】:

      【解决方案3】:

      你的 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'
      

      【讨论】:

        【解决方案4】:

        问题是你在问if (today_day == 'Wednesday') or 'Thursday''Thursday' 计算结果为 True,因为它不是空字符串,所以 place 将始终为 A。你需要做的是

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

        【讨论】:

          猜你喜欢
          • 2021-07-17
          • 2023-02-09
          • 1970-01-01
          • 2016-12-12
          • 2015-03-04
          • 2013-10-14
          • 2018-10-19
          • 1970-01-01
          • 2021-09-23
          相关资源
          最近更新 更多