0
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语句在顶部,它只重复我的程序的第一部分,而不是整个事情。

4

1 回答 1

0

那么你应该注意的一件事是你没有设置

total = 0 

在每个循环的开始。所以当用户再次玩游戏时。他将继续使用他之前的总数。您应该移动total = 0到循环的开头

while True:
    total = 0

此外,您需要先解除缩进

while True 

声明,因为它与您的其余代码不正确对齐。

最后,您需要允许用户在选择否以再次尝试后退出 while 循环。

if goagain == "n":
    print("Thanks for playing ... goodbye!" )
    break

这可以通过应用break语句来完成。

于 2013-10-10T05:18:34.433 回答