invalid literal for int() with base 10: ”

【不具合内容】

文字入力を行わないまま数値変換した際に発生

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("終了しました")

コメントを残す

* 印は必須項目です。メールアドレスは公開されません。

次のHTMLタグと属性を使用することができます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください