import sgenrand
# program greeting
print("The purpose of this exercise is to enter a number of coin values")
print("that add up to a displayed target value.\n")
print("Enter coins values as 1-penny, 5-nickel, 10-dime,and 25-quarter.")
print("Hit return after the last entered coin value.")
print("--------------------")
#print("Enter coins that add up to 81 cents, one per line.")
total = 0
#prompt the user to start entering coin values that add up to 81
while True:
final_coin= sgenrand.randint(1,99)
print ("Enter coins that add up to", final_coin, "cents, on per line")
user_input = int(input("Enter first coin: "))
if user_input != 1 and user_input!=5 and user_input!=10 and user_input!=25:
print("invalid input")
total = total + user_input
while total != final_coin:
user_input = int(input("Enter next coin:"))
total = total + user_input
if user_input == input(" "):
break
if total > final_coin:
print("Sorry - total amount exceeds", (final_coin))
if total < final_coin:
print("Sorry - you only entered",(total))
if total== final_coin:
print("correct")
goagain= input("Try again (y/n)?:")
if goagain == "y":
if goagain == "n":
print("Thanks for playing ... goodbye!" )
我一直在尝试创建这个循环,因此当用户接受/如果他接受在最后再次执行时,它可以在最后重复整个程序。
我知道你必须在你的整个程序中有一个while语句,但是我的while true
语句位于顶部,它只重复我程序的第一部分而不是整个程序。
答案 0 :(得分:0)
你应该注意的一件事是你没有设置
total = 0
在每个循环开始时。所以当用户再次玩游戏时。他将继续使用他以前的总数。您应该将total = 0
移到循环的开头
while True:
total = 0
此外,你需要先解决你的问题
while True
语句,因为它与其余代码没有正确对齐。
最后,您需要允许用户在选择“否”后再次尝试时退出while循环。
if goagain == "n":
print("Thanks for playing ... goodbye!" )
break
这可以通过应用break
声明来完成。