print("2つの数を入力して足し算をします") n1 = input("1つめの数を入力してください") n2 = input("2つめの数を入力してください") gokei = int(n1) + int(n2) print("答えは"+str(gokei)+"です")
パイソンの組み込み関数で足し算をしてみようで2つの数字を入力して足し算をするコードを作成しました。
このコードですが、実行者が必ず数字を入力してくれれば良いですが、実際の開発では a 等の数字ではない文字列が入力される事がよくあります。
今回はこの問題を解決してみます。
冒頭のコードを実行して、最初の入力で a を入力してみます。
ValueError: invalid literal for int() with base 10: 'a' on line 4 of main.py
のようなエラーになりました。
このエラーは文字列から数値に変換するint関数で、変換できない値を変換しようとした事が原因です。
このエラーを回避する為にinput関数から返ってきた値が数値の文字列であるか?を判断する処理を追加する必要があります。
n1 = input("1つめの数を入力してください")
では、inputからの値は何の値であっても文字列になり、文字列(str)の組み込み型のメソッドが使用できるようになります。
str型で文字列の内容が数字であるか?を調べるには、
str.isnumeric()
があります。
数値の文字列であればTrue(真)になり、そうでなければFalse(偽)になります。
この内容を踏まえて、冒頭のコードを修正します。
print("2つの数を入力して足し算をします") n1 = input("1つめの数を入力してください") if n1.isnumeric() == False: n1 = 0 n2 = input("2つめの数を入力してください") if n2.isnumeric() == False: n2 = 0 gokei = int(n1) + int(n2) print("答えは"+str(gokei)+"です")
inputから返ってきた値が数字の文字列ではなかった場合は 0 を入れるようにします。
上記の内容を踏まえ1つめの数には a を入れ、2つめの数には b を入れてみます。
2つの数を入力して足し算をします 1つめの数を入力してください a 2つめの数を入力してください b 答えは0です
エラーにならずにコードを終了することができました。
組み込み型について