2016-07-22 7 views
-2

Im derzeit machen python3 tun, um die gleiche Liste der Dinge immer und immer wieder zu berechnen, wie viele Blumen, die ich kaufen kann:Müssen Sie eine Ausnahme erstellen, um eine Schleife zu beenden?

while True: 
    try: 
     flowerprices=ApiGetFlowerPrices() 
     if flowerprices>3: 
      <CreateException> 
     else: considerbuying() 
Except: 
    pass 

Also, wenn die Blumenpreise über 3 sind, beginne ich gerade wieder, alle Daten, erfrischend . Ich möchte nicht kaufen, wenn der Preis über 3 ist. Ich möchte die While-Schleife neu starten, also bin ich nicht nach etwas wie "Pause".

Ich denke, ich könnte "a" + float (2) versuchen, um eine Ausnahme zu erstellen, aber was ist die elegantere Alternative?

+1

Ersetze '' mit 'break' – inspectorG4dget

+2

Wäre nicht [' continue'] (https://docs.python.org/3/reference/simple_stmts.html#continue) für den Prozess besser geeignet als beschrieben? – glibdud

+0

@ inspectorG4dget, das OP gibt ausdrücklich an, dass die Schleife nicht gestoppt werden soll. –

Antwort

0

Wenn Sie break die Schleife, wird es vollständig stoppen. Sie möchten continue verwenden, damit ApiGetFlowerPrices() erneut aufgerufen wird. Wenn Ihr ApiGetFlowerPrices einen Fehler anstelle einer Zahl zurückgeben könnte, sollten Sie immer noch versuchen/ausgenommen.

while True: 
    try: 
    flowerprices=ApiGetFlowerPrices() 
    if flowerprices>3: 
     continue # It will skip the rest of the loop and start again. 

    else: considerbuying() 

    Except: 
    pass 

Wenn Sie brauchen kein try/except, betrachten die answer by DeepSpace.

1

Sie brauchen weder break noch die Ausnahme. Sie wollen einfach nur den Kauf zu prüfen, ob der Preis unter 3 ist daher:

while True: 
    flowerprices = ApiGetFlowerPrices() 
    if flowerprices < 3: 
     considerbuying() 

Hinweis, dass dies eine Endlosschleife erstellen, damit Sie berücksichtigen müssen, wenn Sie die Preisprüfung beenden möchten.

+0

Du hast Recht, wenn der Api immer eine Zahl zurückgibt. Wenn es einen Fehler zurückgeben könnte, sollten Sie es richtig behandeln. –

+0

@NanderSpeerstra, das ist die Aufgabe von OP. – DeepSpace

+0

Yup, das ist wahr :) –

Verwandte Themen