繁体   English   中英

如何在python中重复石头,纸,剪刀的游戏

[英]How to repeat game of rock, paper, scissors in python

我用python制作了石头,纸,剪刀游戏。 如果用户输入“ yes ”,我将如何使游戏重复进行? 当用户输入石头,纸或剪刀以外的任何东西时,我的代码似乎陷入永无休止的循环

我也试图学习何时何地应该使用函数。 如果您可以显示一种将完成的代码分离为功能的pythonic方法,我将不胜感激。

import random

a = ["rock", "paper", "scissors"]

word = input('Enter rock, paper, or scissors: ')

def game():
    while True:
        try:
            if word not in a:
                raise ValueError #this will send it to the print message and back to the input option
            break
        except ValueError:
            print(" You must enter rock, paper, or scissors.")


    comp_draw = random.choice(a)
    print('The computer drew ' + comp_draw)

    if comp_draw == 'rock' and word=='rock':
        print('It was a tie')
    elif comp_draw == 'paper' and word=='paper':
        print('It was a tie')
    elif comp_draw == 'scissors' and word=='scissors':
        print('It was a tie')

    elif comp_draw == 'paper' and word=='rock':
        print('you lost')
    elif comp_draw == 'rock' and word=='paper':
        print('you won!')

    elif comp_draw == 'rock' and word=='scissors':
        print('you lost')
    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')

    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')
    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')

game()


play_again = input('would you like to play again: ')

没什么大不了的,只需要一个循环

import random

a = ["rock", "paper", "scissors"]

word = input('Enter rock, paper, or scissors: ')

def game():
    while True:
        try:
            if word not in a:
                raise ValueError #this will send it to the print message and back to the input option
            break
        except ValueError:
            print(" You must enter rock, paper, or scissors.")


    comp_draw = random.choice(a)
    print('The computer drew ' + comp_draw)

    if comp_draw == 'rock' and word=='rock':
        print('It was a tie')
    elif comp_draw == 'paper' and word=='paper':
        print('It was a tie')
    elif comp_draw == 'scissors' and word=='scissors':
        print('It was a tie')

    elif comp_draw == 'paper' and word=='rock':
        print('you lost')
    elif comp_draw == 'rock' and word=='paper':
        print('you won!')

    elif comp_draw == 'rock' and word=='scissors':
        print('you lost')
    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')

    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')
    elif comp_draw == 'scissors' and word=='rock':
        print('you won!')


play_again = "yes"

while play_again == "yes":

    game()

    play_again = input('would you like to play again: ').lower()

代替 :

game() 
play_again = input("...")

将游戏循环如下:

while True:
    play_again = input ("would you like to play")
    if play_again == "yes" :
        game() 
        continue 
    elif play_again == "no" :
        break
    else:
        print("answer by yes or no") 
        continue 

还有一个问题是可变单词不在game()的范围内。 它会在第一次运行时起作用,但随后不会运行。 此代码似乎可以正常工作,并且符合预期。

import random

a = ["rock", "paper", "scissors"]

def game():
    while True:
        try:
            word = input('Enter rock, paper, or scissors: ')
            if word not in a:
                raise ValueError # this will send it to the print message and back to the input option
            break
        except ValueError:
            print(" You must enter rock, paper, or scissors.")


    comp_draw = random.choice(a)
    print('The computer drew ' + comp_draw)

    if comp_draw == 'rock' and word =='rock':
        print('It was a tie')
    elif comp_draw == 'paper' and word =='paper':
        print('It was a tie')
    elif comp_draw == 'scissors' and word =='scissors':
        print('It was a tie')
    elif comp_draw == 'paper' and word =='rock':
        print('you lost')
    elif comp_draw == 'rock' and word =='paper':
        print('you won!')
    elif comp_draw == 'rock' and word =='scissors':
        print('you lost')
    elif comp_draw == 'scissors' and word =='rock':
        print('you won!')
    elif comp_draw == 'scissors' and word =='rock':
        print('you won!')
    elif comp_draw == 'scissors' and word =='rock':
        print('you won!')


if __name__ == "__main__":
    game()
    while True:
        if input('Would you like to play_again? ') == 'yes':
            game()
        else:
            break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM