2016-10-05 10 views
-1

こんにちはpythonコミュニティ、エラー特定の境界をキャプチャする

これをループからどのように停止できますか?

error33 = int(2) 
    while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen"))##Float input is being used as 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        break 

この作品の多くのおかげ

+2

「error33」は決して変更されませんか?その後、それは停止しません。 – fzzle

+1

コードも作成しますか? – PortableGibbon

+1

このコードでは多くのことが間違っています。 intをintにキャストする必要はありません。error33 = 2は問題ありません。あなたの状態は 'error33'にあります。これは決して変更されず、全く使われません。もう一方の中に2つの「中」があり、そのうちの1つは決して終わらない。あなたのループは 'survivalrateforjuveniles'が浮動小数点ではない場合にのみ壊れます。' survivalrateforjuveniles'が0と1の間の浮動小数点でなければ、あなたはそれを壊すことを望んでいるようです。 – Efferalgan

答えて

-2

...

error33 = 2 
while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen\n")) 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        error33 = 0 
        break 

私は、あなたがやっている内容を正確に把握していない...しかし、私は私がこれに似たsomehtingを使用すると思う:

error33 = 2 
survivalrateforjuveniles = -1.0 
while error33 > 1: 
    while not (0 < survivalrateforjuveniles < 1): 
     survivalrateforjuveniles = input("Please enter the survival rate for poomen\n") 
     try: 
      survivalrateforjuveniles = float(survivalrateforjuveniles) 
     except ValueError: 
      survivalrateforjuveniles = -1 
     print("Please enter a number between 0 and 1") 

    print('do what you want') 
    error33 =0 

あなたのソリューションとあまり違いはありませんが、breakは不要で、より頑丈に見えます。しかし、survivalrate...と他の入力(あなたが持っていると思います)を読む関数を作ることは、同じコード行を2回以上使用しないので良いでしょう(良いソフトウェアを書く基本的な習慣の1つです) 。

+1

そして、 'else'部分で' error33'が変更されるべきであることをどのように知っていますか? – Matthias

+0

@Matthias私はちょうどあなたがあなたのコードで使用する形状だと思った。ある時点で、ループを終了する場合は、そのエラーを変更する必要があります。あなたはどこでそれを変更することができます。それが入力が浮動小数点でなければならないという事実に相対的であれば、私は 'survivalrate ... 'の後にそれを変更します。 –

関連する問題