こんにちは、ナナです。
プログラムを動かす際に、ユーザーからプログラムに対して情報を与えたいシーンって結構あるんです。
皆さんの身近なところで言うと、ATMでは引き出し金額をディスプレイをタッチして「10000円」といった形で入力して、お金を引き出しています。
Pythonのプログラムにおいても、ユーザーからの入力情報を受け取ることができます。
本記事では次の疑問点を解消する内容となっています。
では、ユーザー入力を行うための『input関数』の使い方について学んでいきましょう。
『input関数』で行うユーザー情報の受け取り
押忍!今日はプログラムと会話ができるって聞いたっす。プログラムと会話って「ピ・ポ・パ・ピ・ポッ」みたいな言葉を勉強するってことっすか?
今日の講義は『input関数』を使った、プログラムとの対話方法を学ぶよ。
それは「ピ・ポ・パ」といったことじゃなくて、プログラムを使う人とプログラムを作った人が情報をやり取りするってことだよ。
Pythonプログラムでは『input関数』を呼び出すことで、キーボードから入力した文字情報をプログラムで受け取ることができます。
input関数をとりあえず動かしてみよう
この関数については、動かした方が手っ取り早く使いこなせるようになるでしょう。
それでは皆さん、次のプログラムをPyCharm上で動かしてみましょう。
input_data = input()
print("入力データ:", input_data)
このプログラムを動かすと、input関数を呼び出した時点でプログラムはユーザー入力待ちとなり一時停止した状態となります。
この状態でPyCharmの画面に任意のキー入力を行います。今回は「abc」とします。
任意のキー入力を行ったら[Enter]キーで確定します。そうすると次のように表示されます。
abc
入力データ: abc
入力メッセージを促す『input関数』の呼び出し方
先ほどのプログラムでも、ユーザーからの入力を受け取ることができますが、入力時に画面に何も表示されていないのでユーザーは入力する状況に気づかないかもしれません。
次のように事前にprint関数を使ってメッセージを出しておくというのも、ひとつの手ではあります。
print("名前を入力してください!") # メッセージを出しておく
input_data = input()
print("入力データ:", input_data)
名前を入力してください!
NANA
入力データ: NANA
しかし、input関数を毎回呼び出す前に、print関数を呼び出すというのも手間です。
そのため、『input関数』には引数で入力を促すメッセージを指定することが可能です。
# メッセージ付きのinput関数の呼び出し
input_data = input("名前を入力してください!\n")
print("入力データ:", input_data)
名前を入力してください!
NANA
入力データ: NANA
print関数を使ったときと全く同じ結果が得られましたね。
input関数のメッセージは改行が含まれないため、文字列の最後に「\n」を入れておくと改行してくれます。
『input関数』で得られる情報は文字列
押っ忍!『input関数』って便利じゃないっすか‼プログラムを変えなくても自分で与えたい情報をプログラムに渡すことができるっすね。
これを使えば計算とかもできそうっすね。電卓みたいなプログラムも作れそうっす!
うんうん、そうだね。ユーザーからの入力をプログラムで得られるってことは、プログラムの可能性を広げられることになるね。
でもね、注意してほしいことがあるよ。input関数で得られる情報は『文字列情報』なんだよ。だからそのままだと数値の計算としては使えないんだよ。
input関数はキーボードからの情報を文字として受け取ります。そのため計算にはそのまま使えません。
『input関数』で受け取った数を足してみる!
ユーザーに2つの数を入力してもらい、足した結果を画面に表示するプログラムを作ってみました。
# メッセージ付きのinput関数の呼び出し
input_data1 = input("数を入力してください!1つ目\n")
input_data2 = input("数を入力してください!2つ目\n")
# 2つの情報を足した結果を表示
print("足し算した結果:", input_data1 + input_data2)
「13」と「25」の2つの数を入力すると、次の結果が表示されます。
数を入力してください!1つ目
13
数を入力してください!2つ目
25
足し算した結果: 1325
なんということでしょう。足した結果は「38」ではなく、「1325」になってしまいました。
これは、『input関数』が数値ではなく文字として情報を受け取ったため、”13″ + “25”が文字として横並びに結合されて”1325″になってしまったのです。
「文字」と「数値」を変換する関数
このままでは電卓なんて作れませんね。しかし、解決策は用意されています。
Pythonには「文字」と「数値」を相互に変換する関数が用意されています。これを呼び出してしまえばいいのです。
代表的な「数値と文字の変換」を行うための関数は、次のものです。
関数名 | 関数の呼び出し方例 | 変換概要 |
int | int(“123”) | 文字を整数値に変換する |
float | float(“3.14”) | 文字を浮動小数点数に変換する |
str | str(789) | 数値を文字へ変換する |
変換したいものに合わせて呼び出すと、「戻り値」で変換後の情報が手に入ります。
変換関数を使って文字を数値に変換してみよう!
それでは次のように『input関数』で得られた文字を『int関数』によって整数値に変換してみましょう。
# メッセージ付きのinput関数の呼び出し
input_data1 = input("数を入力してください!1つ目\n")
input_data2 = input("数を入力してください!2つ目\n")
# 2つの情報を足した結果を表示
print("足し算した結果:", int(input_data1) + int(input_data2))
数を入力してください!1つ目
13
数を入力してください!2つ目
25
足し算した結果: 38
これでようやくユーザー入力の情報で足し算が実現できました。
Q&A:Pythonの「入力」に関するよくある質問
「入力処理」で何か質問ある人はどうぞ!
Q:int関数で文字を数値にするとして、数値にできない文字だったらどうするの?
押~忍っ!じ、自分は今、とあることを考えているっす。input関数で「a」とかって文字を入れたら数値になれないっすよね。
int関数がいったいどうなるのか実験してみるっす!
いいねー、そういう視点はプログラムをするうえですごく大事な実験だよ。ユーザー入力はキーボードではいろんなパターンが入力できるからね。
やってごらん。
プログラムをするうえで、様々なケースを想像してみるということは大変大事なことです。
ユーザーとは時に意図せぬ操作をするものなのです。「数値を入れなさい」という場面で、アルファベットを入れてしまうユーザーもいるのです。
input_data = input("数を入力してください!\n")
print(int(input_data))
皆さん、数値以外でアルファベットなどを入れて結果を確認しましょう。次のような結果が表示されたことでしょう。
print(int(input_data))
ValueError: invalid literal for int() with base 10: 'a'
エラーが発生しましたね。
これは「ValueError」というエラーで、「int関数の引数は、10進数の文字でないと無効です」ということを示してします。
このようなプログラム実行時に発生するエラーは『例外処理』と呼ばれるプログラムで対処します。今はあまり深く触れませんが、次のようなプログラムで対処できます。
input_data = input("数を入力してください!\n")
# 例外処理
try:
print(int(input_data))
except ValueError:
print("無効な情報です")
数を入力してください!
a
無効な情報です
『例外処理』については、現時点では難しい内容なので、もう少し進めた後に学ぶ機会を設けましょう!
課題:「input関数」の使い方が学べたかを確認しよう
もしも、プログラムが上手く動かなくて困ったときは、答えを見るのではなく「デバッガ」の使い方を学びましょう。
この記事を見ると問題の解決技術が身に付きます。困ったときのオススメ記事です!
課題1:input関数を使って文字情報を受け取ろう!
課題内容
「氏名」の入力を促し、挨拶を行うプログラムを作りなさい。
画面の表示形式は出力期待値と同じとする。
出力期待結果
※白い部分はユーザー入力箇所とする。
氏名を入力してください!
ナナ
こんにちは ナナ さん
input関数の基本をおさらいしておきましょう。
name = input("氏名を入力してください!\n")
print("こんにちは", name, "さん")
input関数を使った一番基礎的なプログラムですね。
課題2:input関数を使って数値計算をしてみよう!
課題内容
ユーザーから三角形の「底辺」「高さ」の2つの情報を受け取り、面積を算出するプログラムを作れ。
画面の表示形式は出力期待値と同じとする。
出力期待結果
※白い部分はユーザー入力箇所とする。
三角形の底辺を入力してください!
10
三角形の高さを入力してください!
5
面積は 25.0 です
int関数を使って数値情報への変換ができるようになっておきましょう。
base = input("三角形の底辺を入力してください!\n")
height = input("三角形の高さを入力してください!\n")
area = int(base) * int(height) / 2
print("面積は", area, "です")
これでユーザー入力の基礎は学べましたね。
C言語技術者が知るべきPython言語との違い:「入力処理」
すでにC言語を習得している人は、次のポイントに気を付けよう!
関数名は異なりますが、ユーザー入力を受け取る流れは基本的に同じです。