Python石头剪纸列表选项

2024-05-14 07:13:03 发布

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

说明:编写一个程序,允许用户在电脑上玩石头、布、剪刀。该程序将由菜单驱动(详见下文)。用户可以通过在菜单中选择玩游戏来继续玩游戏。一场游戏由一场战斗组成:赢、输或平局。对于一场战斗,用户进行移动,然后显示计算机移动,然后显示谁赢得了这场战斗的描述。不要打破领带。 一旦用户选择退出,程序就会显示刚刚玩过的所有游戏的赢/输/平记录 在游戏过程中,用户将按以下顺序输入详细信息:

菜单选项(1个整数,1个玩游戏,2个退出) 玩家的移动(1弦、‘石头’、‘布’或‘剪刀’)

我的问题是,我不知道如何让计算机从我的列表中选择并接受它。我一直收到这个…1

import random
def main():
  """
  Runs a game of Rock, Paper, Scissors. Asks the user for input and plays against the computer. 
  """
  
  #print display message
  print('Lets play Rock, Paper, Scissors!')
  
  moves_list = ['Rock', 'Paper', 'Scissors']
  #a place to keep track of scores
  tied = 0
  computer = 0
  player = 0

  #create a variable to control loop 
  play_again = 1 

  comp_choice = process_comp()
  player_choice = process_player()
  winner = determine_winner(player_choice, comp_choice)

  #while loop for multiple games 
  while play_again == 1:
    comp_choice = process_comp()
    player_choice = process_player()
    if comp_choice == 'Rock' or comp_choice == 'rock':
      print('Computer chooses rock.')

    elif comp_choice == 'Paper' or comp_choice == 'paper':
      print('Computer chooses paper.')

    else:
      print('Computer chooses scissors.')

    #call the determine winner function    
    winner = determine_winner(player_choice, comp_choice)

    #check who won the game and add 1 to the correct winner 
    if winner == 'computer':
      computer += 1

    elif winner == 'player':
      player += 1

    else:
      tied += 1
    
    #ask user if they want to play again 
    play_again = input('Would you like to play again? (Enter 1 for yes, 2 for no): ')

    #display number of games that were won
    print()
    print('There were', tied, 'tied games.')
    print('The player won', player, 'games.')
    print('The computer won', computer,'games.')

#define the computer process function 
def process_comp():
  #make computer choose a move from list 
  choosen = random.choice(moves_list)
  return choosen

#make sure user enters correct option. 
def process_player():
  player_choice = int(input('Rock, Paper, Scissors? (Enter 2 if you want to quit):'))
  
  #if the player enters 2, quit the game   
  if player_choice == 2:
    print('Thank you for playing!')
  play_again = 2
  
  #check if user is inputting correct selections 
  while player_choice != 'Rock' or player_choice != 'rock' and player_choice != 'Paper' or player_choice != 'paper' and player_choice != 'Scissors' or player_choice != 'scissors' and player_choice != 2:
    print('Error! Please enter an option that was given.')
    player_choice = int(input('Rock, Paper, Scissors? (Enter 2 if you want to quit):'))
  return player_choice

#define the determine winner function. 
def determine_winner(player_choice, comp_choice):
  
  #setup computer selections 
  if comp_choice == 'Rock' or comp_choice == 'rock':
    if player_choice == 'Paper' or player_choice == 'paper':
      print('You win!')
      winner = 'player'

    elif player_choice == 'Scissors' or player_choice == 'scissors':
      print('The computer wins!')
      winner = 'computer'

    else:
      print('The game is tied. Try again.')
      winner = 'tied'

  if comp_choice == 'Paper' or comp_choice == 'paper':
    if player_choice == 'Rock' or player_choice == 'rock':
      print('The computer wins!')
      winner = 'computer'

    elif player_choice == 'Scissors' or player_choice == 'scissors':
      print('You win!')
      winner = 'player'

    else:
      print('The game is tied. Try again.')
      winner = 'tied'

  if comp_choice == 'Scissors' or comp_choice == 'scissors':
    if player_choice == 'Rock' or player_choice == 'rock':
      print('You win!')
      winner = 'player'

    elif player_choice == 'Paper' or player_choice == 'player':
      print('The computer wins!')
      winner = 'computer'

    else:
      print('The game is tied. Try again.')
      winner = 'tied'

  return winner

main()

Tags: ortheifcomputerpaperplayerprintscissors
1条回答
网友
1楼 · 发布于 2024-05-14 07:13:03

您正在尝试将字符串(例如rock)转换为整数(数字)。这是不可能的,因为Python无法知道您希望将其转换为的整数。相反,您可以将process_player()更改为以下内容。我简化了while语句,删除了对int的翻译,然后检查player_choice是否等于字符串'2'而不是整数版本,它应该可以工作

    def process_player():
        player_choice = input('Rock, Paper, Scissors? (Enter 2 if you want to quit):')

        # if the player enters 2, quit the game   
        if player_choice == '2':
            print('Thank you for playing!')

        # check if user is inputting correct selections 
        while player_choice.lower() not in ['rock', 'paper', 'scissors', '2']:
            print('Error! Please enter an option that was given.')
            player_choice = input('Rock, Paper, Scissors? (Enter 2 if you want to quit):')
        return player_choice

相关问题 更多 >

    热门问题