def outcome(p1, p2):
x = ''
if p1 == p2:
x = 0
return x
elif p1 == "rock" and p2 == "scissors" or p1 == "scissors" and p2 == "paper" or p1 == "paper" and p2 == "rock":
x = 1
return x
elif p2 == "rock" and p1 == "scissors" or p2 == "scissors" and p1 == "paper" or p2 == "paper" and p1 == "rock":
x = 2
return x
a = 0
while a == 1:
p1 = str(input("P1 choose: "))
while p1 != "rock" or p1 != "paper" or p1 != "scissors":
p1 = str(input("Please select rock/paper/scissors: "))
p2 = str(input("P2 choose: "))
while p2 != "rock" or p2 != "paper" or p2 != "scissors":
p2 = str(input("Please select rock/paper/scissors: "))
b = outcome(p1, p2)
if b == 1:
print("P1 wins\n")
elif b == 2:
print("P2 wins\n")
elif b == 0:
print("Tied\n")
pit = str(input("Another one? yes/no - "))
if pit == "no":
a = 0
raise SystemExit(0)
这部分永远不会停止:
while p1 != "rock" or p1 != "paper" or p1 != "scissors":
p1 = str(input("Please select rock/paper/scissors: "))
这是一个石头剪刀布游戏,当我输入正确或错误,它不工作,并不断重复。我希望它重复,直到你写石头,布,或剪刀,当你写其中一个,退出while循环。你知道吗
其他答案都是正确的,但一种更为恶作剧的方法是列出可接受的输入(或元组),然后检查响应是否在其中:
当您编写更复杂的程序时,这种方法可以很好地扩展:不是简单的列表,而是对参数使用函数调用,在输入验证函数中,对值执行任意数量的测试等。你知道吗
它说:
p
可能不是rock
,paper
,scissors
。如果p
等于这些单词中的任何一个,则整个谓词变成True
,循环继续。在应用De Morgan transform时,您将or
误认为and
。无法退出循环,因为没有p
可以同时等于rock
、paper
、和scissors
。你知道吗你想要的是
你应该重写你的条件:
如果一个条件是正确的,则退出白色循环。你知道吗
相关问题 更多 >
编程相关推荐