Python 2.7中的程序循环

时间:2012-03-20 16:05:29

标签: python python-2.7

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

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"

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

2 个答案:

答案 0 :(得分:1)

您可以使用while True语句并在需要时将其中断:

while True:

  [insert your code]

  if answer=="yes":
    break

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

答案 1 :(得分: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),具体取决于您的口味。