2016-07-22 5 views
-2

イムは、現在のpython3は、私が購入することができますどのように多くの花を計算するために何度も何度も、物事の同じリストをやらせ:花の価格が3以上である場合ループを終了するために例外を作成する必要がありますか?

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

だから、私はすべてのデータをリフレッシュ、再起動。私は価格が3を上回っていれば買うことを検討したくありません。 私はwhileループを再開したいので、 "break"のようなものの後にはいけません。

私は例外を作成するために "a" + float(2)を試すことができたと思いますが、もっとエレガントな選択肢は何ですか?

+1

'を' break 'に置き換えよう – inspectorG4dget

+2

プロセスには、[続行](https://docs.python.org/3/reference/simple_stmts.html#continue)しないでください。記載されている? – glibdud

+0

@ inspectorG4dget、OPは明示的にループを停止すべきではないと述べています。 –

答えて

0

ループがbreakの場合、完全に停止します。 ApiGetFlowerPrices()が再び呼び出されるように、continueを使用します。 ApiGetFlowerPricesが数字の代わりにエラーを返す可能性がある場合は、引き続きtry/exceptを使用する必要があります。

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

    else: considerbuying() 

    Except: 
    pass 

try/exceptが不要な場合は、answer by DeepSpaceとしてください。

1

breakも例外もありません。

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

あなたが価格をチェックを停止するときに検討する必要がありますので、これは無限ループを作成すること: あなたは、単に価格がゆえ、3未満であれば購入を検討したいです。

+0

Apiが常に数値を返す場合は正しいと思います。エラーを返す可能性がある場合は、正しく処理する必要があります。 –

+0

@NanderSpeerstraはOPの仕事です。 – DeepSpace

+0

うん、それは本当だ:) –

関連する問題