简单的Python代码不起作用(或字符串比较)

时间:2019-03-02 14:37:58

标签: python-3.x

因此,我正在练习python,并执行简单的任务,所以我尝试制作了Rock Paper Scissors游戏。它一直在搞砸,并且我已经将大多数代码减少到了令人讨厌的代码的程度。当我尝试执行此操作时,无论我在p_choice输入中输入什么内容,它都认为它是石头,纸或剪刀。无论我写的是“ rock”,“ a”还是“ ro”或其他任何内容,代码都将输出X。

def game(): 
      p_choice = input("Rock, Paper, Scissors?: ").lower() 
      if p_choice == "rock" or "paper" or "scissors":
        print("X")
      else:
        print("Y")

值得注意的是,间距不是导致问题的原因,显然,print命令不是用于最终代码的,但我只是将它用作查看预期功能是否正在发生的快速方法。不是,我什至无法理解为什么。有人知道发生了什么吗?

可能值得一提的是,我正在使用在线exectuterrepl.it。由于我已经问过一个问题,所以我不妨在这里问另一个问题:我的计算机不会执行python脚本。它只是打开窗口并立即关闭它,即使应该在关闭之前提示用户输入。因此,为什么要使用repl.it而不是脱机版本。无论如何,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

编程语言中的==运算符通常将左侧的表达式与右侧的表达式进行比较。此外,or的优先级较低。这意味着您所使用的表达式的计算结果为: (p_choice == "rock") or ("paper") or ("scissors")"paper""scissors"始终被评估为True,从而使整个表达式始终有效地True

正确的代码是:

def game(): 
  p_choice = input("Rock, Paper, Scissors?: ").lower() 
  if p_choice in ["rock", "paper", "scissors"]:
    print("X")
  else:
    print("Y")