【问题标题】:Check if input is equal to x and y then print检查输入是否等于 x 和 y 然后打印
【发布时间】:2019-08-12 15:05:55
【问题描述】:

我正在尝试让这个示例代码工作:

a = ("good ")
b = ("morning")
z = input("Hi: ")
z
if z == "hello":
    print("good day!")
elif z == a and b:
    print("Good Night")
else:
   print("nope")

因此,如果键入的输入是“早安”(a 和 b),我希望它打印“晚安”,但它没有这样做。相反,它正在打印“不”。我做错了什么?

【问题讨论】:

  • and 不是字符串连接的正确运算符。我想你的意思是elif z == a + b:
  • 谢谢这就是我的意思,如果我想要它没有特定的顺序怎么办,例如如果 z == b + a 和 z == a + b 一样
  • @Yukon elif z == a + b or z == b + a:
  • a和b赋值上的括号是多余的

标签: python string concatenation


【解决方案1】:

您需要连接 a 和 b 字符串,因为当您有条件 a 和 b 时,它会寻找使 a 和 b 为真而不是通过连接它们!所以你可以在条件中做 a + " " + b 而不是 a 和 b !

【讨论】:

    【解决方案2】:

    and 不会像您认为的那样连接(也称为连接)字符串。它使用布尔运算符作为逻辑与。就像其他人建议的那样,您可以使用+ 将它们连接起来,但是您的a 字符串末尾有一个空格,所以如果它是相反的顺序(morning good),它将不起作用。也许使用这样的东西:

    a = "good" # notice the trailing space is not there
    b = "morning"
    
    if (z == (a + " " + b) or z == (b + " " + a)):
        # rest of your code...
    

    或者如果你喜欢花哨的新 f 字符串,你可以在你的 if 语句条件中使用它:

    (z == (f'{a} {b}') or z == (f'{b} {a}'))
    

    希望有帮助!

    【讨论】:

      【解决方案3】:

      a and b相当于检查a是否为非空字符串,为True。然后返回b。但是 z 不等于 b 所以它失败了。您可能打算连接它们,这是使用字符串的+ 符号完成的。将该 if 语句更改为:

      elif z == a + b:
          print("Good Night")
      


      如果您想忽略顺序,您可以执行以下操作:
      elif (z == a + b) or (z == b + a):
          print("Good Night")
      

      【讨论】:

      • a and b 永远不会是 True,它将是第一个允许 Python 确定表达式真实性的字符串。因此,'a' and 'b' 的计算结果为 'b''' and 'b''a' and '' 均计算为 ''
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多