2012-03-20 15 views
0

私はPythonを初めて使いました。私は、ドル換算を計算し、変更があるかどうか(支払い時)、スペイン語で簡単なプログラムを書いています。事実、対応する行動には2つの選択肢があります。ユーザーが何かに反応すると、エラーメッセージが表示されます。しかし、3つのうちのいずれかを終了した後、私はあなたに "もう一度やりたいですか?"最初から再起動してください。ここに私のコードです: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" 

私の実際の問題は、この "中"の論理を理解することです。私はそれが本当の、または偽のステートメントをチェックするのを望んでいない、私はちょうどそれが何かアクションを完了するたびに再起動したい。

答えて

1

あなたはwhile Trueステートメントを使用して、必要なときにそれを破ることがあります。

while True: 

    [insert your code] 

    if answer=="yes": 
    break 

TrueFalse(0)と反対(1に等しい)ブール値、です。通常whileの文は、テスト条件がFalse(たとえば2<1)のときに壊れます。 while Trueでは、テスト条件は常にTrueなので、ループ自体は決して破られることはありません(ループ内には明示的にbreakが必要です)。

+0

それは間違いなく機能しますが、私がまだ理解していないのは、「真」の背後にある論理です。私は、コードのどこにでも変数Trueを指定していません。 – Krelian

+1

True == 1はPythonでは "while True:"は "while 1"と同じです。ループを解除するまでは無限ループです。 –

+0

@ASTEFANI遅くてもお返事ありがとうございます、私はコメントを逃した...私は答えに単語を追加します。 –

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. 

をこのコードは1回実行されます、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