没有重新启动程序和输入整数不起作用
Posted
技术标签:
【中文标题】没有重新启动程序和输入整数不起作用【英文标题】:not restarting for program and input integer not working 【发布时间】:2018-03-31 04:15:36 【问题描述】:我正在尝试开发一个程序,其中在游戏结束时用户将输入“是”以使游戏重新开始,而如果用户输入“否”则游戏将结束。对于我的尝试,我似乎无法弄清楚如何使程序工作。我很不确定是否可以使用 double while True 。此外,似乎当我输入一个整数时,游戏突然不起作用,但是当我输入一个无效输出时,消息“错误,输入的值无效,重试”似乎工作正常。急需帮助,谢谢!!
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
【问题讨论】:
我建议你编辑你的帖子,专注于你遇到问题的代码的一小部分,而不是粘贴整个程序。 @rwp 我不同意。一般来说,是的,但是有跨越这段代码长度的错误,所以拥有完整的代码是看到这一点的唯一方法。 我建议您创建一个最小示例(模型),在其中放置虚拟游戏而不是真实游戏,并尝试使重复/停止逻辑到位。 【参考方案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
【讨论】:
这是一个很好的起点。游戏代码中还有其他问题需要解决。【参考方案2】:试试这个
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!')
【讨论】:
【参考方案3】:前面的答案是好的开始,但缺少其他一些重要问题。正如其他人所说,我会首先将您的游戏代码包装在一个函数中并递归调用它。 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()
【讨论】:
以上是关于没有重新启动程序和输入整数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
驱动程序重新启动后 Spark Streaming 检查点不起作用