【问题标题】:What am I doing wrong with this if statement? [duplicate]我对这个 if 语句做错了什么? [复制]
【发布时间】:2021-09-17 16:29:16
【问题描述】:

我目前正在学习 python,我正在尝试为此创建一个 if 语句,但我只能让它在月份或日期而不是月份和日期工作。

date = int(input("Enter Date Here: "))

monthConversion = {
    "Jan": "January",
    "Feb": "February",
    "Mar": "March",
    "Apr": "April",
    "May": "May",
    "Jun": "June",
    "Jul": "July",
    "Aug": "August",
    "Sep": "September",
    "Oct": "October",
    "Nov": "November",
    "Dec": "December",
}

month = monthConversion.get(input("Enter Key Here: "), "Not a valid key")

if date == "26" and month == "January":
    print("That's My Birthday!!")

print(month, date)

【问题讨论】:

  • 您将日期转换为 int,然后将其与 str ("26") 进行比较
  • 副本的标题与您的问题不同,但答案正是您解决此问题所需要的。找到不同的副本可能并不难,因为这是一个非常常见的初学者错误,但我相信你已经解决了你的问题。

标签: python if-statement


【解决方案1】:

问题在于数据类型: 变量 date 是一个整数,但在您的 if 语句中,您将它与字符串“26”进行比较。您需要将日期转换为字符串或将其与整数进行比较。

if str(date) == "26" and month == "January":
    print("That's My Birthday!!")

if date == 26 and month == "January":
    print("That's My Birthday!!")

【讨论】:

  • 将输入转换为 int 然后再转换回字符串似乎是不必要的。为什么不首先不将其转换为 int 或将其与 int 进行比较?
  • OP 没有询问如何有效地编写这个。问题是 IF 语句有什么问题。由于我们对他将其与字符串进行比较的原因知之甚少,因此最好为他提供两个选项,并让他根据上下文进行选择。
  • 虽然正确,但提供替代解决方案以及解释为什么它们可能更适合肯定不会受到伤害。我喜欢编辑:)
【解决方案2】:

您将 date 转换为 int() ,但在 if 语句中将其放在引号中。只需删除代码中 date == 26 周围的引号即可。它有效。

【讨论】:

    【解决方案3】:

    您正在将字符串与 int 进行比较,您可以尝试:

    if date == 26 and month == "January":
        print("That's My Birthday!!")
    

    【讨论】:

      【解决方案4】:

      除了if 语句之外,您的代码中的所有内容都很好。
      您将date 输入作为int,但在if 语句中您有括号,它是str 而不是@987654326 @.
      在这里,您的代码的调试版本:

      date = int(input("Enter Date Here: "))
      
      monthConversion = { "Jan": "January", "Feb": "February", "Mar": "March", "Apr": "April", "May": "May", "Jun": "June", "Jul": "July", "Aug": "August", "Sep": "September", "Oct": "October", "Nov": "November", "Dec": "December"}
      
      month = monthConversion.get(input("Enter Key Here: "), "Not a valid key")
      
      if date == 26 and month == "January":  # changes here
         print("That's My Birthday!!")
      
      print(month, date)
      

      【讨论】:

      • 其实第二个提示比较难理解;它可能应该说类似"Enter month abbreviation: "
      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多