15分でわかるプログラミング基礎(型によるエラー回避術)

はじめに

プログラミングをやっているとエラーはつきものです。今回はエラーの回避術の一つを紹介します。プログラミング初心者や参考書の本などで勉強されている方はプログラミングにおける”型”の理解は難しかと思っています。私も参考書を読むと初めの方に”型”という項目がありますが、読んでいて面白くないから読み飛ばしていました。実際にプログラミングをやり始めるとtype errorを頻繁に起こしてしまいます。この解決方法や初心者の方の理解の助けになればと思いますので、ぜひ最後まで読んでいただけると幸いです。

コードと解説

やりたいこと

まず、やりたいことを確認します。 「I am」という文字と「J.A.」または「30」という文字を結合して「I am J.A.」または「 I am 30」という文字にしたいと思います。「I am」という文字は共通なので、Commonという変数に”string”(文字列)という”型”で格納します。また、「J.A.」と「30」をNameとAgeという変数に”string”と”int”(整数)という”型”で格納します。


CommonとNameを結合し「I am J.A.」という文章を作りたいと思います。Ageの方も同様に「I am 30」という文章も作りたいと思います。これをコードに反映させると以下のようになります。

コード

Common = "I am"
Name = "J.A."
Age = 30

SentenceName = Common + Name
SentenceAge = Common + Age

print(SentenceName)
print(SentenceAge)

コードの実行①

上記コードを実行すると

TypeError: can only concatenate str (not “int”) to str

というエラーを吐き出します。これを解決するために、このエラーをGoogleなどでコピペして調べます。または英訳します。そうすると文字列という型と整数という型は連結できません。ということが分かりました。

このエラーが出たのがおそらくNameとAgeの型が違うかもしれないと疑い、それぞれの型を調べます。調べるコードを以下に示します。追加という行が調べるコードです。printは結果を出力する関数で、typeというのが()の中身の”型”を調べる関数になります。

Common = "I am"
Name = "J.A."
Age = 30

SentenceName = Common + Name
print(type(Common))        #追加
print(type(Age))        #追加
SentenceAge = Common + Age

print(SentenceName)
print(SentenceAge)

コードの実行②

コードを実行し、エラーは出ますがよくよく読んでみると

<class ‘str’>
<class ‘int’>

のような文章が出力されているかと思います。printを書いた順に結果が出力されるので、上の行がCommonの型を出力し、下の行はAgeの型を出力しています。Commonの型は”str”でAgeの型は”int”になっていることが分かりました。

これが分かったので、strとintの結合方法を調べます。すると文字の+演算はstr同士でなければならないということを何とか調べます。intをstrに変えれば解決できそうです。

そこで、次にintをstrに変える方法を調べます。するとstr関数という変換方法が見つかりました。それではそれを反映させ見ましょう。

以下のコードの「#追加」という行を追加しました。新しいAgeという変数にstr(Age)という古いAge(=30)をstr関数で変換したものを格納します。そして、一応、新しく変換したAgeの型も調べておきます。

Common = "I am"
Name = "J.A."
Age = 30

SentenceName = Common + Name
print(type(Common))
print(type(Age))
Age = str(Age)         #追加
print(type(Age))        #追加
SentenceAge = Common + Age

print(SentenceName)
print(SentenceAge)

コードの実行③

これを実行するとエラーが出ず、以下の結果を出力し、最後の2行は本来出力したかった結果が出力されているかと思います。

<class ‘str’>
<class ‘int’>
<class ‘str’>

Commonはstrという型、古いAgeはintという型、新しいAgeはstrという型になっていることが分かり、Ageをintからstrに無事に変換できていることも確認できました。
最後に確認用に追加した行を削除して完成です。最終的に以下のようなコードになります。

コードの完成形

Common = "I am"
Name = "J.A."
Age = 30

SentenceName = Common + Name

Age = str(Age)
SentenceAge = Common + Age

print(SentenceName)
print(SentenceAge)

最後に

今回はプログラミング初心者の方や参考書などで勉強している方が初めに陥りやすい”型”によるエラーーを解説しました。”型”によるエラーは慣れたころになっても意外なところで起きるエラーもあります。また、中級者以上でも”型”については常に意識していると思いますので、真面目に勉強しましょうとまでいきませんが、頭の片隅に常においておきましょう。

2023/08/24 J.A.

コメント

タイトルとURLをコピーしました