前提・実現したいこと
正確な値が入力されるまでエラーメッセージを表示したい。
途中でプログラムを止めたくない。
発生している問題・エラーメッセージ
1度目のエラーのみ、exceptに指定したコードが実行され、その後のエラーに対しては実行されない。
例えば、以下のプログラムで、最初の入力に対して「w」という文字を入力すると、数字を入力してほしいという旨のメッセージが流れ、再度入力を促すことができます。しかし、その状態でもう一度「w」や存在しないindexの「4」などを入力すると、"During handling of the above exception, another exception occurred"と表示され、こちらで指定したエラーメッセージの代わりにTracebackが表示されてしまいます。
該当のソースコード
python
1x = ["a", "b", "c"] 2 3try: 4 i = input("type your number: ") 5 result = x[int(i) - 1] 6except ValueError: # 数字以外の文字を入力した場合 7 print("Please input numbers") 8 i = input("type your number: ") 9 result = x[int(i) - 1] 10except IndexError: # リストに含まれる数より大きい数字を入力した場合 11 print("Please input 1 or 2 or 3") 12 i = input("type your number: ") 13 result = x[int(i) - 1] 14else: 15 print(result) # 入力された数字に対応する値を表示する 16
試したこと
try/except/elseを色々組み合わせてみましたが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
windows 10 home
python 3.7.4
visual studio code
pylint pep8
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/25 07:07