我一直试图用我有限的python知识制作一个python石头布剪刀游戏,但对计算机/编程逻辑有很好的理解。这是我的密码:
def Main():
from random import randint
global computerChoice
global userChoice
print "Ok, let's play 3 rounds."
for i in range(3):
userChoice = raw_input("Rock, paper, or scissors? ")
computerChoice = randint(1,3)
if userChoice == "Rock" or "rock":
userChoice = 1
choiceCompare()
elif userChoice == "Paper" or "paper":
userChoice = 2
choiceCompare()
else:
userChoice = 3
choiceCompare()
def choiceCompare():
global userChoice
global computerChoice
if userChoice == computerChoice:
print "I chose the same thing! It's a draw!"
elif userChoice != computerChoice:
if userChoice == 1:
if computerChoice == 2:
print "Yes! I chose paper, you lost!"
elif computerChoice == 3:
print "Dang. I chose scissors, you win."
elif userChoice == 2:
if computerChoice == 1:
print "Man. I chose rock, you win."
elif computerChoice == 3:
print "I chose scissors, you loose!"
else:
if computerChoice == 1:
print "Ha! I chose rock, you loose."
elif computerChoice == 2:
print "Aww, man! I chose paper, you win."
if __name__ == "__main__":
Main()
当我运行它时,我会得到完全错误的输出,比如:
Ok, let's play 3 rounds.
Rock, paper, or scissors? paper
I chose the same thing! It's a draw!
Rock, paper, or scissors? paper
I chose the same thing! It's a draw!
Rock, paper, or scissors? paper
Dang. I chose scissors, you win.
或者这个:
Ok, let's play 3 rounds.
Rock, paper, or scissors? scissors
Yes! I chose paper, you lost!
Rock, paper, or scissors? scissors
Yes! I chose paper, you lost!
Rock, paper, or scissors? scissors
Dang. I chose scissors, you win.
不过,rock似乎运转良好:
Ok, let's play 3 rounds.
Rock, paper, or scissors? rock
Dang. I chose scissors, you win.
Rock, paper, or scissors? rock
I chose the same thing! It's a draw!
Rock, paper, or scissors? rock
Yes! I chose paper, you lost!
有人能告诉我他们认为哪里不对吗?提前谢谢,利亚姆。你知道吗
另外,我认为嵌套if语句中的choiceCompare函数有问题。我不太清楚是怎么回事。另外,忽略我从运行的程序中复制文本的位中的自动着色,因为它们实际上不是python代码,而是来自程序的文本。你知道吗
您的问题从以下几行开始:
要么使用
userChoice.lower()
,要么使用userChoice in ("Rock", "rock")
。一开始会有帮助,这只是第一眼。你知道吗扩展。这里的问题是,你在比较
userChoice == "Rock"
,它是真的还是假的,然后你说的是or "rock"
,它本身的计算结果是真的(任何非空字符串都是真的)。另请参见:this answer on string truth values。你知道吗这一行的值总是true,因为它类似于(userChoice==“Rock”)或“Rock” 请尝试以下操作: userChoice==“摇滚”或userChoice==“摇滚”
有关布尔运算符的文档,请参见此链接:https://docs.python.org/3.1/library/stdtypes.html
相关问题 更多 >
编程相关推荐