python石头剪刀gam中的错误输出

2024-10-01 00:34:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图用我有限的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代码,而是来自程序的文本。你知道吗


Tags: oryouifglobalwinpaperprintscissors
2条回答

您的问题从以下几行开始:

userChoice == "Rock" or "rock"

要么使用userChoice.lower(),要么使用userChoice in ("Rock", "rock")。一开始会有帮助,这只是第一眼。你知道吗

扩展。这里的问题是,你在比较userChoice == "Rock",它是真的还是假的,然后你说的是or "rock",它本身的计算结果是真的(任何非空字符串都是真的)。另请参见:this answer on string truth values。你知道吗

userChoice == "Rock" or "rock"

这一行的值总是true,因为它类似于(userChoice==“Rock”)或“Rock” 请尝试以下操作: userChoice==“摇滚”或userChoice==“摇滚”

有关布尔运算符的文档,请参见此链接:https://docs.python.org/3.1/library/stdtypes.html

相关问题 更多 >