2012-03-20 41 views
0

我是新来的Python,我正在写西班牙语的一个简单程序来计算美元转换,以及是否会有任何变化(付款时)。事情是,有两种选择“si o no”和相应的动作。如果用户回应其他内容,则会给他们一个错误信息。但是,在三者中的任何一个完成后,我想让它问你:“你想再做一次吗?”然后从头开始重新启动。这里是我的代码:Python中的程序循环2.7

print "Buenos Dias!\n" 

pregunta = raw_input ("Pagara algo en dolares? (si/no)>") 

if pregunta == "si": 

    total = input ("Cuanto es el total a pagar?\t") 
    tasa = input ("Cuanto es la tasa de hoy?\t") 
    dolares = input ("Cuanto va a pagar en dolares?\t") 
    calculo = (total - tasa*dolares) 

    if calculo > 0: 

     print "\nLa diferencia que debe pagar en cordobas es %.2f" % calculo 

    else: 

     print "\nDebe dar un cambio de %.2f" % calculo 

elif pregunta == "no": 

    total = input("Cuanto es el total a pagar?\t") 
    paga = input ("Cuanto le entregara?\t") 
    cambio = paga - total 

    print "\nDebe de darle un cambio en cordobas de %.2f" % cambio 

else: 
    print "\nNo me diste una respuesta correcta.\n" 

我真正的问题是理解这个“while”逻辑。我不希望它检查真或假的陈述,我只是希望它在每次完成任何操作时重新启动。

回答

1

你可以使用一个while True声明,打破它,当你需要:

while True: 

    [insert your code] 

    if answer=="yes": 
    break 

True是一个布尔值(等于1),相反False(0)。当测试条件为False(例如2<1)时,通常while语句中断。由于while True,测试条件显然总是True,因此循环永远不会自行断开(您必须在循环内部明确地指定break)。

+0

它确定地工作,但我仍然不明白的是“真”背后的逻辑。我没有在代码中的任何地方指定一个变量True。 – Krelian 2012-03-21 17:39:58

+1

在python中为True == 1,所以“while True:”等同于“while 1”,直到你打破循环时才是无限循环。 – 2016-05-26 17:32:08

+0

@ASTEFANI谢谢你回答迟到,我错过了评论......我会在答案中添加一个单词。 – 2016-05-27 07:07:47

1

while条件检查后面的语句,如果语句是True它将执行该块。执行后,它会再次检查语句,如果它再次True,它会再次执行,直到你停止执行与break或语句返回False

例子:

x = True 
while x: # This will check if the x is True or not, in our case, it's True 
    x = False # We set x to False, so the code will not be executed again. 

此代码将执行一次,因为x不再是True

又如:

while True: # This code block will execute forever as True is ALWAYS True. 
      # We have to use break statement to stop execution. 
    do_something(); # 
    if no_more: # if we don't want to execute it anymore, it will break the execution. 
     break 
    do_another(); # this code will NOT be executed if no_more is True. 
        # Because "break" statement stop execution IMMEDIATELY. 

所以,你应该记住的是,如果你有一个variable而非True检查语句在开始的时候你的代码块将即使地方完成内执行代码块将变量设置为False。但如果您使用break它将立即停止执行。根据你的口味,你也可以同时使用(一个variablebreak)。

+0

我感谢您的帮助! – Krelian 2012-03-21 19:24:23