- 「文字列」と「数値」のちがい
- 「文字列」を「数値」に変換
- 「数値」を「文字列」に変換
キーボードで入力した数字で計算させたいんだけどなあ、、、
それなら、int関数を使うとよいですよ
前回の学習で、input関数で文字列を読み込ませることはできました。しかし、計算をさせたい場合はそのまま使うとエラーが出てしまいます。
なぜなら、数字を「文字列」として扱っているからです。計算させる場合は、数字を「数値」に変換し、コンピュータに認識させなければなりません。
ちょっとややこしくなってきましたね(苦笑)
今回は、「文字列と数値の違い」と「読み込んだ数字を使って計算する」書きかたを解説していきます。
それでは、さっそくはじめていきましょう!
『文字列』と『数値』の違い
突然ですが、”1” を思い浮かべてください。
人間は頭の中で、「1+1」「100分の1」などの数値の ”1” と、「1丁目」「1等賞」などの文字列の ”1” を、知識や経験から自動変換できます。
一方、コンピュータにとって ”1” は、文字列か数値かを指定しないと理解できません。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関数の引数に与えて演算結果を表示させています。
文字列を数値に変換②:読込みと変換をシンプルに書こう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関数とは逆に「数値→文字列」に変換してくれます。
まとめ
小数点付きで扱いたいとき(浮動小数点数)は、float関数を使います。使いかたはint関数と同じですので、書き換えて実行してみましょう。
実際のプログラミングは、まだまだ複雑な処理を行います。基礎的な関数を覚えておかないと苦労するので、しっかり抑えておきましょう。
学習のまとめ
- 指定なしの読込みは文字列型
- int関数は、文字列を「整数」に変換して返却する
- float関数は、文字列を「浮動小数点数」に変換して返却する
- 2進、8進、16進への変換は、int(文字列, 基数)と指定する
- str関数は、数値を「文字列」に変換して返却する
今回は以上です、それではまた!
ー くらしと仕事をワンランク上に ー
以上、YAKUMO(@yakumostyle)でした。
コメント