2016-03-19 2 views
-1

Я пытаюсь сделать игру ножницы для каменной бумаги на питоне, пытаясь реализовать систему очков для побед/потерь. когда я запускаю код, меня спрашивают выбрать каменную бумагу или ножницы, я выбираю свой ответ, но потом меня спрашивают по какой-то причине, может ли кто-нибудь помочь мне? (Я довольно много начинающих)Код Python запускается два раза

from random import randint 
def RPS(): 
    UserPts = 0 
    AIPts = 0 
    def Game(): 
     moves = ["Rock","Paper","Scissors"] 
     def genAImove(): 
      genai = moves[randint(0,2)] 
      return genai 
     genAImove() 
     AImove = genAImove() 
     def genUserMove(): 
      genu = raw_input("Choose your move ('Rock','Paper' or 'Scissors')\n") 
      return genu 
     genUserMove() 
     UserMove = genUserMove()   
     if UserMove == "Rock" and AImove == "Rock": 
      print "The AI chose rock too.\nDraw." 
      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Rock" and AImove == "Paper": 
      print "The AI chose paper.\nLoss." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Rock" and AImove == "Scissors": 
      print "The AI chose scissors.\nWin." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Paper" and AImove == "Rock": 
      print "The AI chose rock.\nWin." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Paper" and AImove == "Paper": 
      print "The AI chose paper.\nDraw." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Paper" and AImove == "Scissors": 
      print "The AI chose scissors.\nLoss." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Scissors" and AImove == "Rock": 
      print "The AI chose rock.\nLoss." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Scissors" and AImove == "Paper": 
      print "The AI chose paper.\nWin." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
     if UserMove == "Scissors" and AImove == "Scissors": 
      print "The AI chose scissors.\nDraw." 

      def cont(): 
       cnt = raw_input("Do you want to continue? (Y\N)") 
       if cnt == "Y": 
        Game() 
       elif cnt == "N": 
        exit 
       else: 
        print "Pick Y or N" 
        cont() 
      cont() 
    Game() 
RPS() 

ответ

2

В этих строках:

genUserMove() 
UserMove = genUserMove() 

Вы первый вызов genUserMove, который просит вас, а затем называют его снова и присвоить результат.

Просто удалите первую строку.

+0

Большое спасибо за быстрый ответ, он исправил мою проблему. Я слишком усложнил это, потому что я не знал, как работают глобальные переменные, поэтому я создал функцию в функции, но столкнулся с одной и той же проблемой глобальных переменных, исследовал ее немного больше и осознал свои ошибки, и теперь моя игра функциональна с точками тоже, хотя с гораздо большим количеством кода, чем нужно. – dragoljub

Смежные вопросы