Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Python 3.x - Fatal编程技术网

用python调试石头、布、剪刀游戏

用python调试石头、布、剪刀游戏,python,python-3.x,Python,Python 3.x,我正在尝试用Python编写一个石头、布、剪刀模拟器游戏。它在大多数情况下都有效,但偶尔,当我输入我选择的石头、布或剪刀作为分配给变量guess的输入时,什么也不会返回。非常感谢。 节目如下: def main(): print('This game is rock, paper, scissors') number=userguess() num=computernumber() result(number, num) #computernumber funct

我正在尝试用Python编写一个石头、布、剪刀模拟器游戏。它在大多数情况下都有效,但偶尔,当我输入我选择的石头、布或剪刀作为分配给变量guess的输入时,什么也不会返回。非常感谢。 节目如下:

def main():
    print('This game is rock, paper, scissors')
    number=userguess()
    num=computernumber()
    result(number, num)
#computernumber function assigns number to rock, paper, scissors
def computernumber():
    num=random.randint(1,4)
    if num==1:
        print('Computer picks rock')
    elif num==2:
        print('Computer picks paper')
    elif num==3:
        print('Computer picks scissors')
    return num
#userguess assigns rock, paper, scissors to a number
def userguess():
    guess=input("Choose, 'rock','paper',or 'scissors:") #<- this input prompt
    if valid(guess):
        if guess== 'rock':
            number=1
        elif guess== 'paper':
            number=2
        elif guess== 'scissors':
            number=3
        return number
    else:
        print('Please choose a valid response')
        return userguess()
def valid(guess):
    if guess=='rock' or guess=='paper' or guess=='scissors':
        result= True
    else:
        result= False
    return result
def restart():
    again=input('Play again? (y/n)')
    if again=='y':
        main()
    elif again=='n':
        print('Goodbye')
    else:
        print('please enter y or n')
        restart()
#function to display result
def result(num,number):
   if number==num:
       print('Tie')
       restart()
   elif number==1 and num==2:
       print('you won!')
       restart()
   elif number==1 and num==3:
       print ('you lost!')
       restart()
   elif number==2 and num==1:
       print('you lost!')
       restart()
   elif number==2 and num==3:
       print('you won!')
       restart()
   elif number==3 and num==1:
       print('you won!')
       restart()
   elif number==3 and num==2:
       print('you lost!')
       restart() 
main()

我认为问题就在这里

#userguess assigns rock, paper, scissors to a number
def userguess():
    guess=input("Choose, 'rock','paper',or 'scissors:") #<- this input prompt
    if valid(guess):
        if guess== 'rock':
            number=1
        elif guess== 'paper':
            number=2
        elif guess== 'scissors':
            number=3
        return number
    else:
        print('Please choose a valid response')
        # return userguess() 
        # You returned a function which is None
        userguess()
希望这能解决你的问题

另外,我想建议一些缩短代码的快捷方式。例如,上述部分可以缩短如下:

str2num = {'rock': 1, 'paper': 2, 'scissors': 3} # can be defined globally

def userguess():
    guess=input("Choose, 'rock','paper',or 'scissors:") #<- this input prompt
    if valid(guess):
        return str2num[guess]
    else:
        print('Please choose a valid response')
        userguess()

这是一个更好的地方。嗨,下面我的答案能解决你的问题吗?如果你有回应,我很高兴。