【Python攻略】文字列を数値に変換する!? ~int関数とstr関数を使ってみよう~

Python入門
スポンサーリンク
この記事でPythonの何が学べる?
  • 「文字列」と「数値」のちがい
  • 「文字列」を「数値」に変換
  • 「数値」を「文字列」に変換

 

キーボードで入力した数字で計算させたいんだけどなあ、、、

それなら、int関数を使うとよいですよ

 

前回の学習で、input関数で文字列を読み込ませることはできました。しかし、計算をさせたい場合はそのまま使うとエラーが出てしまいます。

 

なぜなら、数字を「文字列」として扱っているからです。計算させる場合は、数字を「数値」に変換し、コンピュータに認識させなければなりません。

 

ちょっとややこしくなってきましたね(苦笑)

 

今回は、「文字列と数値の違い」と「読み込んだ数字を使って計算する」書きかたを解説していきます。

 

それでは、さっそくはじめていきましょう!

 

スポンサーリンク

『文字列』と『数値』の違い

 

突然ですが、”1” を思い浮かべてください。

 

人間は頭の中で、「1+1」「100分の1」などの数値の ”1” と、「1丁目」「1等賞」などの文字列の ”1” を、知識や経験から自動変換できます。

 

一方、コンピュータにとって ”1” は、文字列か数値かを指定しないと理解できません。Pythonでは、デフォルトで文字列として読込まれます。

 

読み込んだ数字で計算したい場合は、文字列を数値に変換するひと手間がプログラムに必要になります。

\ 現場で助かる!Python逆引き大全 /
スポンサーリンク

文字列を数値に変換①:int関数を使ってみよう

 

文字列を数値に変換するには int関数 を使います。実際にプログラムを作って、動きを確認していきましょう。

 

次のようにソースコード書いて、プログラムを実行してください。

 

2つの整数値を読込んで、それらを加減乗除した値を表示するプログラムです。

# 文字列を読み込んで整数に変換

s = input('整数a:')
a = int(s)
s = input('整数b:')
b = int(s)

print('a + b は', a + b, 'です。')
print('a - b は', a - b, 'です。')
print('a * b は', a * b, 'です。')
print('a / b は', a / b, 'です。')
print('a // b は', a // b, 'です。')
print('a % b は', a % b, 'です。')
print('a ** b は', a ** b, 'です。')

 

実行結果

 

プログラムを実行すると、このように表示されます。(ここでは、整数aに5を、整数bに2を入力しています)

整数a:5
整数b:2
a + b は 7 です。
a - b は 3 です。
a * b は 10 です。
a / b は 2.5 です。
a // b は 2 です。
a % b は 1 です。
a ** b は 25 です。

 

解説

 

int(文字列) を呼び出すと、文字列を整数値に変換した値が返却されます。

 

ここでは、文字列型の変数「s」を、int型の変数「a」に代入することで、読み込んだ文字列の「5」「2」を数値に変換しています。

 

その後、print関数の引数に与えて演算結果を表示させています。

 

デフォルトは10進整数ですが、2進、8進、16進の整数に変換したい場合は、int(文字列, 基数)で行います。(例:int(‘0b110’, 2)、int(‘0o75’, 8) など)

文字列を数値に変換②:読込みと変換をシンプルに書こう1

 

さきほどのプログラムですが、「文字列の読込み」と「数値への変換」をまとめてしまうことで、もっとスッキリ書くことができます。

 

次のようにソースコード書いて、プログラムを実行してください。

 

文字列の読込みと変換を1行で書いています。(print関数で表示させる部分はまったく同じです)

# 文字列の読み込みと変換を1行で書く
a = int(input('整数a:'))
b = int(input('整数b:'))

print('a + b は', a + b, 'です。')
print('a - b は', a - b, 'です。')
print('a * b は', a * b, 'です。')
print('a / b は', a / b, 'です。')
print('a // b は', a // b, 'です。')
print('a % b は', a % b, 'です。')
print('a ** b は', a ** b, 'です。')

 

解説

 

実行結果はさきほどと同じように表示されたはずです。

 

int(input(‘文字列’)) のように、input関数をint関数で囲むことで、文字列として読込んだ数字を1行で数値に変換することができます。

 

文字列を数値に変換③:読込みと変換をシンプルに書こう2

 

実行結果に表示された数値の両側にスペースがありますよね? このスペースを消そうと、print(‘a + b は’+ a + b + ‘です。’) と連結するとエラーになってしまいます。

 

これは、文字列と数値を+で連結できないからです。この場合は、str関数を使えばかんたんに解消することができます。

 

次のようにソースコード書いて、プログラムを実行してください。

 

第2引数のstr関数の中で演算させて、前後の引数と連結させます。

# str関数で詰めて表示する

a = int(input('整数a:'))
b = int(input('整数b:'))

print('a + b は' + str(a + b) + 'です。')
print('a - b は' + str(a - b) + 'です。')
print('a * b は' + str(a * b) + 'です。')
print('a / b は' + str(a / b) + 'です。')
print('a // b は' + str(a // b) + 'です。')
print('a % b は' + str(a % b) + 'です。')
print('a ** b は' + str(a ** b) + 'です。')

 

実行結果

整数a:5
整数b:2
a + b は7です。
a - b は3です。
a * b は10です。
a / b は2.5です。
a // b は2です。
a % b は1です。
a ** b は25です。

 

解説

 

実行結果を見てわかるとおり、数値の前後あったスペースが消えましたね。str関数は、int関数とは逆に「数値→文字列」に変換してくれます。

 

\ Python入門の定番といえばコレ! /

まとめ

 

小数点付きで扱いたいとき(浮動小数点数)は、float関数を使います。使いかたはint関数と同じですので、書き換えて実行してみましょう。

 

実際のプログラミングは、まだまだ複雑な処理を行います。基礎的な関数を覚えておかないと苦労するので、しっかり抑えておきましょう。

 

学習のまとめ
  • 指定なしの読込みは文字列型
  • int関数は、文字列を「整数」に変換して返却する
  • float関数は、文字列を「浮動小数点数」に変換して返却する
  • 2進、8進、16進への変換は、int(文字列, 基数)と指定する
  • str関数は、数値を「文字列」に変換して返却する

 

今回は以上です、それではまた!

 

ー くらしと仕事をワンランク上に ー
以上、YAKUMO(@yakumostyle)でした。

 

関連記事:【Python初心者向け】2種類の『入門書』があることを知らないと挫折します。

コメント