因此,我正在练习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而不是脱机版本。无论如何,我们将不胜感激。
答案 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")