【不具合内容】
文字入力を行わないまま数値変換した際に発生
counter = 1 # 現在、何回目かを記録する変数
while counter <= 10: # counter の値が10以下なら繰り返す
text = input("数字を入力してください")
# 入力された文字が'999'なら
if text == '999':
# ループを中断する
print("中断します")
break
number = int(text) # 入力した文字を数値に変換する
print(counter, "回目:", number * number) # 入力した数値の2乗を表示する
counter = counter + 1 # counter の値に 1 を加算する
print("終了しました")
数字を入力してください
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-24-e6525f8b908e> in <cell line: 3>()
10 break
11
---> 12 number = int(text) # 入力した文字を数値に変換する
13 print(counter, "回目:", number * number) # 入力した数値の2乗を表示する
14 counter = counter + 1 # counter の値に 1 を加算する
ValueError: invalid literal for int() with base 10: ''
【原因】
入力された文字のチェックを行わずにそのままint()で文字→数値の変換を行ったため。
【解決方法】
・入力文字のチェックを行い空文字なら数値変換しないなどで回避する
counter = 1 # 現在、何回目かを記録する変数
while counter <= 10: # counterの値が10以下なら繰り返す
text = input("数字を入力してください")
# if 入力された文字が ''なら
if text == '':
print("入力が無効です")
# ループの先頭に戻る
continue
# 入力された文字が '999' なら
if text == '999':
# ループを中断する
print("中断します")
break
number = int(text) # 入力した文字列を数値に変換する
print(counter, "回目:", number * number) # 入力した数値の2乗を表示する
counter = counter + 1 # counter の値に 1 を加算する
print("終了しました")