前提・実現したいこと
whileブロック中の特定の条件でループを終了したいのですが、ループが止まらず、うまくいきませんでした。breakを用いることでうまくいったのですが、なぜ最初の方法でだめだったか原因が知りたいです。
ご教授お願いいたします。
発生している問題・エラーメッセージ
input()で整数が入力された時点で最初のwhileループを終了したいのですが、終了しませんでした。
浮動小数点を入力すると、exceptブロックが実行されValueErrorがTrueだと認識されてループが行われると考え、逆に整数を入力すると、exceptブロックが実行されないためValueErrorがFolseだと認識されてループが終了すると考えました。 おそらくこの考えに間違いがあるのだと思います。
ご指摘お願いします。
該当のソースコード
メインプログラム
python
1import collatz1 2 3while ValueError: 4 print('整数を記入してください:') 5 number=input() 6 try: 7 num=collatz1.collatz(int(number)) 8 except ValueError: 9 print('浮動小数点を記入しないでください。') 10 11while num!=1: 12 num=collatz1.collatz(int(number)) 13 number=num 14 print(num)
モジュール
python
1def collatz(number): 2 if number%2==0: 3 return number/2 4 5 elif number%2==1: 6 return 3*number+1 7 8
試したこと
pyhton
1try: 2 num=collatz1.collatz(int(number)) 3 break
としたらうまくいきましたが最初のコードのどこが悪かったのか分かりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー