Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 石头、布、剪刀问题_Python - Fatal编程技术网

Python 石头、布、剪刀问题

Python 石头、布、剪刀问题,python,Python,我正在使用Python创建一个非常简单的石头、布、剪刀游戏,但无法解决这个问题。 每次我在命令提示符下输入答案时,它都会输出消息“输入无效,请重试!”这是我告诉它的,如果有无效的输入。但是,我并没有输入无效的输入,而是继续打印出来,而不是“Rock wins!”等等,还有“你想再玩一次吗?”?(True或False)在回答之前打印出来,当我键入True时,它会显示无效输入。我试着绕着复赛线移动,但没有任何效果 这是游戏,显示错误: What's your name? Bob And your n

我正在使用Python创建一个非常简单的石头、布、剪刀游戏,但无法解决这个问题。 每次我在命令提示符下输入答案时,它都会输出消息“输入无效,请重试!”这是我告诉它的,如果有无效的输入。但是,我并没有输入无效的输入,而是继续打印出来,而不是
“Rock wins!”等等,还有
“你想再玩一次吗?”?(True或False)
在回答之前打印出来,当我键入
True
时,它会显示
无效输入。我试着绕着复赛线移动,但没有任何效果

这是游戏,显示错误:

What's your name? Bob
And your name? Bill
 Bob, Do you want to choose rock, paper, or scissors? rock
 Bill, Do you want to choose rock, paper, or scissors? paper
Do you want to play again? (True or False) True
Invalid input, try again!
import sys 

user1 = input('What\'s your name?')
user2 = input('And your name?')
user1_answer = input('%s, Do you want to choose rock, paper, or scissors?' % user1)
user2_answer = input('%s, Do you want to choose rock, paper, or scissors?' % user2)

def compare(u1, u2):
    if u1 == u2:
        return('It\'s a tie!')
    elif u1 == 'rock':
        if u2 == 'scissors':
            return('Rock wins!')
        else:
            ('Paper wins!')
    elif u1 == 'scissors':
        if u2 == 'rock':
            return('Rock wins!')
        else:
            ('Paper wins!')
    elif u1 == 'scissors':
        if u2 == 'paper':
            return('Scissors wins!')
        else:
            ("Rock wins!")
    elif u1 == 'paper':
        if u2 == 'scissors':
            return('Scissors wins!')
        else:
            ('Rock wins!')
    elif u1 == 'paper':
        if u2 == 'rock':
            return('Paper wins!')
        else:
            ('Scissors wins!')
    elif u1 == 'rock':
        if u2 == 'paper':
            return('Paper wins!')
        else:
            ('Scissors wins!')
    else:
        return('Invalid input, try again!')

rematch = bool(input('Do you want to play again? (True or False)'))

print(compare(user1_answer, user2_answer))
这是我的代码:

What's your name? Bob
And your name? Bill
 Bob, Do you want to choose rock, paper, or scissors? rock
 Bill, Do you want to choose rock, paper, or scissors? paper
Do you want to play again? (True or False) True
Invalid input, try again!
import sys 

user1 = input('What\'s your name?')
user2 = input('And your name?')
user1_answer = input('%s, Do you want to choose rock, paper, or scissors?' % user1)
user2_answer = input('%s, Do you want to choose rock, paper, or scissors?' % user2)

def compare(u1, u2):
    if u1 == u2:
        return('It\'s a tie!')
    elif u1 == 'rock':
        if u2 == 'scissors':
            return('Rock wins!')
        else:
            ('Paper wins!')
    elif u1 == 'scissors':
        if u2 == 'rock':
            return('Rock wins!')
        else:
            ('Paper wins!')
    elif u1 == 'scissors':
        if u2 == 'paper':
            return('Scissors wins!')
        else:
            ("Rock wins!")
    elif u1 == 'paper':
        if u2 == 'scissors':
            return('Scissors wins!')
        else:
            ('Rock wins!')
    elif u1 == 'paper':
        if u2 == 'rock':
            return('Paper wins!')
        else:
            ('Scissors wins!')
    elif u1 == 'rock':
        if u2 == 'paper':
            return('Paper wins!')
        else:
            ('Scissors wins!')
    else:
        return('Invalid input, try again!')

rematch = bool(input('Do you want to play again? (True or False)'))

print(compare(user1_answer, user2_answer))
您得到的是“无效输入,请重试!”因为您的输入字符串不是
“rock”
“paper”
,它们实际上是
“rock”
“paper”
。您可以使用
str.strip
从输入字符串中去除空白。也可以考虑在你的代码结束时输入空白>输入<代码>提示。

您的代码还有其他问题。例如,您从不使用
重新匹配
。您需要将主逻辑放入
中,而
重新匹配一次的
循环为false。(考虑在比赛结束时要求复赛,而不是在比赛之前。)

此外,
if
逻辑的某些分支不返回任何内容,例如

else:
    ('Paper wins!')
这和

else:
    pass

你的问题不是关于石头、布、剪刀。如果你在写Python 3代码,请同时添加该标记。看起来你根本没有使用“重新匹配”。
print(repr(user1\u-answer))
etc@Vel我试过了,但仍然得到了无效的输入答案