0
while True:  #code should only allow integers to be inputed
        try: 
            rolls = int(input("Enter the number of rolls: "))
            break
        except:
            print("You did not enter a valid Integer")

出力は「b」や「d」などの文字に対して機能しますが、ゼロを入力すると、ZeroDivisionError が引き続き発生します

整数のみを許可するコードが必要です。

後でコードでこれを試しました

if rolls <= 0:
    print("You must enter at least one roll")
    print()

ただし、コードの実行は停止せず、エラーは引き続き表示されます。

4

1 に答える 1

1

投稿されたコードには除算がなく、ZeroDivisionError をスローしません。

xyz / rolls後で(その try/catchの外rollsで) 実行されたときに、 が 0 に評価されたときに、例外がスローされる可能性があります。

そのような無効な除算が発生することさえ許さないようにロジックを修正してください。たぶん「0」はゲームを終了することを意味しますか?それとも、「0」は、ユーザーに別のロールを要求する必要があることを意味しますか?


FWIW、「0」を受け入れない入力を読み取るように変更されたコードは次のとおりです。

while True:  #code should only allow integers to be inputed
    try: 
        rolls = int(input("Enter the number of rolls: "))
        if rolls > 0:
            break
    except:
        pass # don't do anything here, because we print below for
             # exceptions and when the if guarding the break failed.
    print("You must enter a valid roll (> 0)")
于 2013-11-03T19:08:01.227 に答える