2017-10-20 86 views
-4

我一直在为岩石,纸张,剪刀游戏编写代码。我必须跟踪用户的胜利,损失和吸引力。我遇到了一个问题,变量获胜,失败和抽签被重置为零。该函数的第二部分执行相同的操作,但将相应的变量赋值为1.制作计数器的Python

def user_choice(): 
    print("Choice must be Rock, Paper, or Scissors.") 
    users_choice = input("Enter your choice here: ") 

    if users_choice == "Rock": 
     print("You chose Rock") 
     player_choice = "Rock" 
     computer_choice(player_choice) 
    elif users_choice == "Paper": 
     print("You chose Paper") 
     player_choice = "Paper" 
     computer_choice(player_choice) 
    elif users_choice == "Scissors": 
     print("You chose Scissors") 
     player_choice = "Scissors" 
     computer_choice(player_choice) 
    else: 
     print("Error: Choice must be one of the following: Rock, Paper, or Scissors") 
     user_choice() 


def computer_choice(player_choice): 
    #This is the program's randomly generated number, from here on out the programm will be refered to as Computer. 
    computer_generated_number = random.randint(1, 3) 
    player_choice = player_choice 

    if computer_generated_number == 1: 
     computer_choice = "Rock" 
     game(player_choice , computer_choice) 
    elif computer_generated_number == 2: 
     computer_choice = "Paper" 
     game(player_choice , computer_choice) 
    elif computer_generated_number == 3: 
     computer_choice = "Scissors" 
     game(player_choice , computer_choice) 


def game(player_choice , computer_choice): 
    wins = 0 
    losses = 0 
    draws = 0 

    if wins or losses or draws >= 1: 
     if player_choice == computer_choice: 
      print("It's a draw!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      draws = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Rock" and computer_choice == "Scissors": 
      print("Rock smashes scissors!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = wins + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Paper" and computer_choice == "Rock": 
      print("Paper covers rock!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = wins + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Scissors" and computer_choice == "Paper": 
      print("Scissors cut paper!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = wins + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Rock" and computer_choice == "Paper": 
      print("Paper covers rock!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = losses + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Paper" and computer_choice == "Scissors": 
      print("Scissors cuts paper!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = losses + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Scissors" and computer_choice == "Rock": 
      print("Rock smashes scissors!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = losses + 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

    if wins or losses or draws == 0: 
     if player_choice == computer_choice: 
      print("It's a draw!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      draws = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Rock" and computer_choice == "Scissors": 
      print("Rock smashes scissors!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Paper" and computer_choice == "Rock": 
      print("Paper covers rock!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Scissors" and computer_choice == "Paper": 
      print("Scissors cut paper!") 
      print("You won!") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      wins = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Rock" and computer_choice == "Paper": 
      print("Paper covers rock!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Paper" and computer_choice == "Scissors": 
      print("Scissors cuts paper!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 

     elif player_choice == "Scissors" and computer_choice == "Rock": 
      print("Rock smashes scissors!") 
      print("You lost") 
      user_input = input("Would you like to play again? Answer must be a yes or no. ") 
      losses = 1 

      if user_input == "Yes" or user_input == "yes": 
       user_choice() 
      elif user_input == "No" or user_input == "no": 
       print("You've won" , wins , "times") 
       print("You've lost" , losses , "times") 
       print("And you've come to a draw" , draws, "times") 
       print("Goodbye") 
+0

你做了什么来调试呢? – astidham2003

+0

您是否试图多次运行此功能? – BenT

+0

我尝试过使用while语句,并且试图在初始分配后能够环绕变量 –

回答

0

我会建议一个简化的“体系结构”。用于获取用户和计算机选择的函数应该返回可以进行比较的值。

import random 

CHOICES = ('rock', 'paper', 'scissors') 

def get_user_choice(): 
    choice = input('Rock, paper, or scissors? ') 
    choice = choice.lower().strip() 
    if choice not in CHOICES: 
     print('Please select one of rock, paper, or scissors') 
     choice = get_user_choice() 
    return choice 

def get_computer_choice(): 
    return random.choice(CHOICES) 

def play_round(): 
    user_choice = get_user_choice() 
    computer_choice = get_computer_choice() 
    print('You selected', user_choice) 
    print('Computer selected', computer_choice) 
    # Compare choices here 
    # Return value indicating win, loss, or draw 

def play(): 
    wins = 0 
    losses = 0 
    draws = 0 
    result = play_round() 
    # Update wins, losses, or draws according to the result 
    # Prompt user to play again or quit 
    return wins, losses, draws 

if __name__ == '__main__': 
    wins, losses, draws = play() 
    # Report wins, losses, and draws