创建循环所以整个任务重复

时间:2013-10-10 04:42:01

标签: loops python-3.x nested

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

1 个答案:

答案 0 :(得分:0)

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

total = 0 

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

while True:
    total = 0

此外,你需要先解决你的问题

while True 

语句,因为它与其余代码没有正确对齐。

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

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

这可以通过应用break声明来完成。