パイソンの組み込み型のメソッドを使ってみる

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です

エラーにならずにコードを終了することができました。


組み込み型について

組み込み型 — Python 3.13.2 ドキュメント

同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。