1. ホーム
  2. python

[解決済み] python "break" エラー: ループ外でのブレーク

2022-02-17 19:55:45

質問内容

最初のコードを開発したとき、私はこの問題に直面しました。 break というコマンドを使って、エラー発生時にプログラムを再起動させようとしました。

コードを見ていただければ、より理解できるかと思います。

  Name = str(input("Please enter Your Name:"))
  Age = input("Please enter your age: ")
       if Age != int():
            print ("Error! Check the age")
            break
     elif Age == int():
          continue
  Height = input("Please enter your height: ")
    if Height != int():
         print ("Error! Check the Height")
             break
   elif Height == int():
        continue

 if Age == int() and Age >= 18 and Height == int() and Height >= 148:
  print("You're able to drive a car " + (Name) )

 elif Age == int() and Age < 18 and Height == int() and Height > 148:
    print("You're not able to drive a car " + (Name) )

 elif Age and Height != int() :
     print ("Error! , Age or Height are not numbers")

のエラーが発生しました。

"C:³³,000,000(税込)³,000,000(税込)³,000,000(税込)³,000,000(税込)³,000,000(税込)³,000,000(税込)³,000,000円 ブレーク ^ シンタックスエラー:'break'

ループの外側

どのように解決するのですか?

その break 文は、プログラムではなく、ループを終了するために使用されます。使用方法 sys.exit() をインポートして、プログラムを終了させる必要があります。 sys もあります。

EDIT

コメントへの回答ですが、私なら多分こうします。

while True:

    inputted_name = input("Please enter your name:")

    try:
        name = str(inputted_name)
    except ValueError:
        print("Please enter a valid name")
    else:
        break


while True:

    inputted_age = input("Please enter your age:")

    try:
        age = int(inputted_age)
    except ValueError:
        print("Please enter a valid age")
    else:
        break


while True:

    inputted_height = input("Please enter your height:")

    try:
        height = float(inputted_height)
    except ValueError:
        print("Please enter a valid height")
    else:
        break


if age >= 18 and height >= 148:
    print("You're able to drive a car {}".format(inputted_name))

if age < 18 and height > 148:
    print("You're not able to drive a car {}".format(inputted_name))

というわけで、いくつか変更点があります。

ユーザー入力の各段階が独自のループになっています。try/except/elseステートメントを使って、入力を正しい型にキャストするようにしていますが、ただし ValueErrors (キャストできない場合にスローされます。ユーザーがテキストの答えを input age 例えば 正しい型へのキャストに成功すると、ループは解除され、スクリプトは次の型に移行します。それぞれのループを分けておけば、ユーザーが間違った値を入力しても、全体をやり直す必要がありません。

また format() を挿入します。 name を最終的な文字列に追加することで、文字列連結の手間を省くことができます。

また、ちょっとした注意点ですが、これはPython 3を使用していると仮定しています。しかし、もしあなたがPython 2を使用している場合 input() は、次のように置き換える必要があります。 raw_input() . Python 2 では input() はユーザー入力を式として評価しようとするのに対し raw_input() は文字列を返します。