如何创建“石头剪刀布”程序

时间:2018-07-16 02:25:10

标签: python loops for-loop

我是python的新手,正在参加在线课程。我对python中的许多函数不是很熟悉,因此,如果您可以对它进行一些基本的跟踪,我将不胜感激。我正在尝试制作一个与用户一起运行Rock,Paper和Scissors的程序,但是num_games在“ for i in range”中不被接受。另外,我已经运行了它,发现剪刀可以击败Rock(这是无政府状态!)。谁能帮助我?预先感谢!

import random

def comp_turn():

    comp_move = random.randint(1,3)

    if comp_move == 1:
        return "Rock!"

    elif comp_move == 2:
        return "Paper!"

    else:
        return "Scissors!"

def main():

    num_games = int(input("Enter how many games you would like to play: "))

    print "You are going to play " + str(num_games) + " games! Here we go!"

    num_wins = 0

    for i in range(num_games):

        user_move = input("Choose either Rock, Paper or Scissors and enter it: ")

        cpu_turn = comp_turn()

        print "The computer went with: " + cpu_turn

        if user_move == 'Rock' and cpu_turn == 'Scissors':
            print "You won! Nice job!"
            num_wins +=1

        elif user_move == 'Paper' and cpu_turn == 'Rock':
            print "You won! Nice job!"
            num_wins +=1

        elif user_move == 'Scissors' and cpu_turn == 'Paper':
            print "You won! Nice job!"
            num_wins +=1

        elif user_move == cpu_turn:
            print "Oh! You tied"

        else:
            print "Whoops! You lost!"
            return num_wins

print main()

3 个答案:

答案 0 :(得分:1)

这应该是您想要的:

import random

def comp_turn():
   return random.choice(['Rock','Paper','Scissors'])
def main():
   num_games = int(input("Enter how many games you would like to play: "))
   print("You are going to play " + str(num_games) + " games! Here we go!")
   num_wins = 0
   for i in range(num_games):
      user_move = input("Choose either Rock, Paper or Scissors and enter it: ")
      cpu_turn = comp_turn()
      print("The computer went with: " + cpu_turn)
      if user_move == 'Rock' and cpu_turn == 'Scissors': print("You won! Nice job!"); num_wins +=1
      elif user_move == 'Paper' and cpu_turn == 'Rock': print("You won! Nice job!"); num_wins +=1
      elif user_move == 'Scissors' and cpu_turn == 'Paper': print("You won! Nice job!"); num_wins +=1
      elif user_move == cpu_turn: print("Oh! You tied")
      else: print("Whoops! You lost!");
   return num_wins
print(main())

甚至更好:

import random

def comp_turn():
   return random.choice(['Rock','Paper','Scissors'])
def main():
   num_games = int(input("Enter how many games you would like to play: "))
   print("You are going to play " + str(num_games) + " games! Here we go!")
   num_wins = 0
   winning=[('Rock','Scissors'),('Paper','Rock'),('Scissors','Paper')]
   for i in range(num_games):
      user_move = input("Choose either Rock, Paper or Scissors and enter it: ")
      cpu_turn = comp_turn()
      print("The computer went with: " + cpu_turn)
      if (user_move,cpu_turn) in winning:
         print('You won!')
         num_wins+=1
      elif user_move == cpu_turn:
         print('Same')
      else:
         print('You lost!')
   return num_wins
print(main())

另一个很好的选择:

import random

def comp_turn():
   return random.choice(['Rock','Paper','Scissors'])
def main():
   num_games = int(input("Enter how many games you would like to play: "))
   print("You are going to play " + str(num_games) + " games! Here we go!")
   num_wins = 0
   d={}.fromkeys([('Rock','Scissors'),('Paper','Rock'),('Scissors','Paper')],'You Won')
   for i in range(num_games):
      user_move = input("Choose either Rock, Paper or Scissors and enter it: ")
      cpu_turn = comp_turn()
      print("The computer went with: " + cpu_turn)
      if not user_move == cpu_turn:
         print(d.get((user_move,cpu_turn),'You lost!'))
      else:
         print('Same')
   return num_wins
print(main())

答案 1 :(得分:0)

这就是您想要的:

import random

outcome = random.choice(['Rock', 'Paper', 'Scissors'])
print(outcome)

答案 2 :(得分:0)

您是否尝试过删除“!”在 comp_turn 函数中?看来 cpu_turn 变量将包含“ Rock!”,“ Scissors!”。或“纸!”而如果if-else条件正在寻找“ Rock”,“ Scissors”或“ Paper”而不带“!”。因此,无论播放器或CPU选择什么,它都会在“ for”循环中进入“ else”,并且播放器会失败。

这是修改后的代码:

import random

def comp_turn():
    comp_move = random.randint(1,3)
    if comp_move == 1: return "Rock"
    elif comp_move == 2: return "Paper"
    else: return "Scissors"

def main():
    num_games = int(input("Enter how many games you would like to play: "))
    print("You are going to play " + str(num_games) + " games! Here we go!")
    num_wins = 0
    for i in range(num_games):
        user_move = input("Choose either Rock, Paper or Scissors and enter it: ")
        cpu_turn = comp_turn()
        print("The computer went with: " + cpu_turn)
        if user_move == 'Rock' and cpu_turn == 'Scissors':
            print("You won! Nice job!")
            num_wins +=1
        elif user_move == 'Paper' and cpu_turn == 'Rock':
            print("You won! Nice job!")
            num_wins +=1
        elif user_move == 'Scissors' and cpu_turn == 'Paper':
            print("You won! Nice job!")
            num_wins +=1
        elif user_move == cpu_turn:
            print("Oh! You tied")
        else: print("Whoops! You lost!")
    return num_wins
print(main())

请注意,玩家的输入也区分大小写。希望这会有所帮助!