これまでの記事では、プログラムの中に書かれたデータを表示したり計算したりする方法を学んできました。しかし、実際は、ユーザーが入力した情報(名前や検索キーワードなど)に応じて結果が変わることがほとんどです。

今回は、プログラムの実行中にユーザーからの入力を受け取ることができる「input()関数」を使ってみましょう。

input()関数の基本的な使い方

Pythonでユーザーからの入力を受け取るには、input()関数を使います。input()関数を使用するには、受け取るための変数名、イコール「=」、input、括弧「()」を使います。括弧の中には、入力を促すメッセージ(文字列)を記述することもできます。

なので例としてinput()関数は、

変数名 = input("メッセージ")

の形式で書くことで、入力されたデータを受け取ることができます。

では実際にやってみましょう。まずは、名前を入力して挨拶をするプログラムを作ってみます。
Google Colaboratoryを開いて新しいノートブックを開き

# ユーザーに名前の入力を求める
name = input("あなたの名前は?:")

#入力された名前を使って挨拶する
print(f"こんにちは、{name}さん!")

とセルに入力して実行してみましょう。

すると、入力ボックスが表示され、「あなたの名前は?:」と聞かれます。そこに自分の名前(例えば「佐藤」)を入力してEnterキーを押してみてください。
結果は

こんにちは、佐藤さん!

と表示されます。このコードではまずinput関数がプログラムを一時停止して入力を待ちます。そして、入力された「佐藤」という文字を変数nameに代入し、その後のprint関数でその変数を使って挨拶を表示させています。

[ポイント]数値を入力したい場合(型変換)

ここで一つ、つまずくポイントがあります。それは、「input()関数で受け取ったデータは、すべて文字列(str)になる」ということです。

たとえ数字の「10」を入力したとしても、Pythonはそれを文字としての「 “10” 」として扱います。そのため、そのまま計算に使おうとするとエラーになったり、意図しない結果になったりします。
では、失敗する例を実際にやってみましょう。

# 好きな数字を入力してもらう
number = input("好きな数字を入力してください:")

#入力された数字に10を足そうとする(エラーになります)
print(number + 10)

これを実行して数字を入力すると、計算の行でエラー(TypeError)が発生してしまいます。文字と数字は直接足し算できないからです。

解決策: int()を使う

入力されたデータを計算に使いたい場合は、文字列を数値(整数)に変換するint()関数を使います。
では、正しく計算できるコードを実際にやってみましょう。

# 好きな数字を入力してもらう
number_str = input("好きな数字を入力してください:")

# 文字列を整数(int)に変換する
number = int(number_str)

# 10を足した結果を表示する
print(number + 10)

とセルに入力して実行してみましょう。入力ボックスに「5」と入れてEnterキーを押します。
すると結果は

15

と表示されます。これは、最初にinputで受け取った文字としての「 “5” 」を、int(number_str)の部分で数値の「5」に変換したため、正しく「5+10」の計算が行われたからです。もし小数を扱いたい場合は、int()の代わりにfloat()を使いましょう。

まとめ

今回は、ユーザーからの入力を受け取る「input()関数」について解説しました。
・ユーザー入力を受け取るには変数 = input(“メッセージ”)の形式で書く。
・input()で受け取ったデータは必ず「文字列」になる。
・計算に使いたい場合はint()やfloat()で数値に変換する必要がある。

これを使えば、簡単な計算機など作れるものの幅が一気に広がります。ぜひ色々な入力を試してみてください。

open-in-colab

今回はこれで終了です。今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogle ColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA