没有重新启动程序和输入整数不起作用

时间:2018-03-31 04:15:37

标签: python loops continue

我正在尝试开发一个程序,其中在游戏结束时用户将输入“是”以使游戏重新开始,而如果用户输入“不”则游戏将结束。对于我的尝试,我似乎无法弄清楚如何使程序工作。我很不确定是否可以使用True。此外,似乎当我输入一个整数时,游戏突然不起作用,但当我输入invalidoutpit消息“错误,输入值无效,再试一次”似乎工作正常。需要帮助,谢谢!!

import random
A1=random.randint(0,9)
A2=random.randint(0,9)
A3=random.randint(0,9)
A4=random.randint(0,9)


P1="O"
P2="O"
P3="O"
P4="O"


while True:
    while True:
            try:
                P1=="O" or P2=="O" or P3=="O" or P4=="O"

            print("Here is your Clue :) :", P1,P2,P3,P4)


            guess=int(input("\nTry and Guess the Numbers :). "))


        except ValueError:
            print("Error, the inputed value is invalid, try again")

            continue


        else:

            guess1=int(guess[0])
            guess2=int(guess[1])
            guess3=int(guess[2])
            guess4=int(guess[3])



        if guess1==A1:
            P1="X"
        else:
            P1="O"

        if guess2==A2:
            P2="X"
        else:
            P2="O"

        if guess3==A3:
            P3="X"
        else:
            P3="O"

        if guess4==A4:
            P4="X"
        else:
            P4="O"

else:
        print("Well Done! You Won MASTERMIND! :D")

answer=input("Would you like to play again? (Yes or No) ")

if answer==Yes:
        print ('Yay')
        continue
else:
        print ('Goodbye!')
        break

3 个答案:

答案 0 :(得分:1)

将游戏包裹在一个功能中,例如:

import sys

def game():
    #game code goes here#

然后在最后,调用该函数重新开始游戏。

if answer=='Yes': # You forgot to add single/double inverted comma's around Yes
    print ('Yay')
    game() # calls function game(), hence restarts the game 
else:
    print ('Goodbye!')
    sys.exit(0) # end game

答案 1 :(得分:0)

试试这个

import random
def game():
    A1=random.randint(0,9)
    A2=random.randint(0,9)
    A3=random.randint(0,9)
    A4=random.randint(0,9)

    P1="O"
    P2="O"
    P3="O"
    P4="O"

    gueses=[]
    while len(gueses)<=3:
            try:
                P1=="O" or P2=="O" or P3=="O" or P4=="O"

                print("Here is your Clue :) :", P1,P2,P3,P4)


                guess=int(input("\nTry and Guess the Numbers :). "))
                gueses.append(guess)


            except ValueError:
                print("Error, the inputed value is invalid, try again")

                continue
    guess1=gueses[0]
    guess2=gueses[1]
    guess3=gueses[2]
    guess4=gueses[3]
    if guess1==A1:
            P1="X"
    else:
            P1="O"

    if guess2==A2:
            P2="X"
    else:
            P2="O"

    if guess3==A3:
            P3="X"
    else:
            P3="O"
    if guess4==A4:
            P4="X"
    else:
            P4="O"
    if P1=="x" and P2=="x" and P3=="x" and P4=="x":
        print("you won")
    else:
        print("YOUE LOSE")
    print("TRUE ANSWERS", A1,A2,A3,A4)
    print("YOUR ANSWER", gueses)
game()
answer=input("Would you like to play again? (Yes or No) ")

if answer=="Yes":
        print ('Yay')
        game()
else:
    print ('Goodbye!')

答案 2 :(得分:0)

以前的答案是好的开始,但缺少其他一些重要的问题。我会像其他人所说的那样,首先将游戏代码包装在一个函数中,然后递归调用它。 guess=int(input("\nTry and Guess the Numbers :). "))还有其他问题。这需要一个整数作为输入,而不是整数数组。最简单的解决方案是将其转换为4个单独的提示,每个猜测一个。我还会缩小错误测试的范围。我已经包含了工作代码,但我会仔细阅读并确保您理解逻辑和调用流程。

import random
def game():
  A1=random.randint(0,9)
  A2=random.randint(0,9)
  A3=random.randint(0,9)
  A4=random.randint(0,9)

  P1="O"
  P2="O"
  P3="O"
  P4="O"

  while True:
    if P1=="O" or P2=="O" or P3=="O" or P4=="O":
      print("Here is your Clue :) :")
      print(P1,P2,P3,P4)
      try:
        guess1=int(input("\nGuess 1 :). "))
        guess2=int(input("\nGuess 2 :). "))
        guess3=int(input("\nGuess 3 :). "))
        guess4=int(input("\nGuess 4 :). "))
      except ValueError:
        print("Invalid Input")
        continue

      if guess1==A1:
        P1="X"
      else:
        P1="O"

      if guess2==A2:
        P2="X"
      else:
        P2="O"

      if guess3==A3:
        P3="X"
      else:
        P3="O"

      if guess4==A4:
        P4="X"
      else:
        P4="O"

    else:
      print("Well Done! You Won MASTERMIND! :D")
      break
  answer=input("Would you like to play again? (Yes or No) ")
  if answer=="Yes":
    print('Yay')
    game()
  else:
    print('Goodbye!')
game()