プログラムを実行する際に、ユーザーが入力したデータを基に処理を実行したいケースがあると思います。
その際に使用するのが、input関数です。
今回は、Pythonの標準入力である input関数を使用する方法について解説していきたいと思います。
Pythonのinput関数とは?
input関数は、Pythonで使用可能な標準入力です。
ユーザーがキーボードから入力した内容を、文字列として取得することができます。
標準入出力とは?
標準入力・標準出力とは、特に指定がない場合にプログラムがデフォルトで使用するデータの入力元や出力先のことを言います。
通常、標準入力にはキーボード、標準出力には画面が割り当てられていて、Pythonのinput関数や print関数によって実行される入力や出力もこれに従っています。
input関数の使い方
それでは早速、input関数の使い方について見ていきましょう。
基本構文
input関数を使用する際の基本構文は以下のとおりです。
result = input( メッセージ )引数には、入力時に表示するメッセージを文字列で指定することができます。
以下の簡単なサンプルコードで、実際の動きを見てみましょう。
name = input("ユーザー名を入力してください:")
print(f"ようこそ、{name} さん!")ユーザー名を入力してください:山田太郎
ようこそ、山田太郎 さん!実行すると、input関数によって入力待ちの状態となり、値が入力されるまでプログラムの実行が待機状態となります。
入力された値は変数に格納されるので、上記のように他の処理で使用することができます。
input関数の中で数値を扱う
上述したように、input関数で取得するデータは文字列型となっているため、入力した値を使用して計算などを行いたい場合は、数値型に変換する必要があります。
# 整数の場合は int関数
int_num = int(input("整数を入力してください:"))
# 小数の場合は float関数
float_num = float(input("小数を入力してください:"))
print(f"合計数は {int_num + float_num} です")整数を入力してください:5
小数を入力してください:0.5
合計数は 5.5 です型変換することで、変数を使用した計算も問題なく実行できるようになります。
複数行の入力を受け取る
input関数は基本的に、改行コードなどを利用した複数行の入力には対応していません。
そのため、複数行に渡るデータを入力したい場合には、記述方法を工夫する必要があります。
一般的によく使用されるのは、リスト内包表記を使用したデータの取得です。
リスト内包表記とは、リストに格納する要素の定義を行うための記述方法の1つで、既存リストの要素に処理を加えた結果を新たなリストとして取得する際などに使用されます。
以下は、リスト内包表記を使用して複数行の入力を行う場合の一例です。
line_count = int(input("入力する行数を指定してください:"))
input_list = [input() for _ in range(line_count)]
print(input_list)入力する行数を指定してください:3
1行目
2行目
3行目
['1行目', '2行目', '3行目']リスト内包表記に当たるのは、「[input() for _ in range(line_count)]」 の部分です。
上記のように、式や関数などで指定する処理内容と、対象オブジェクトをループ処理する for文を [] 内に記述することで、各ループごとに指定した処理を実行した結果が要素として格納されます。
input関数で複数行の入力を行う場合、入力したい行数の分だけ関数を実行し、各行の値を要素ごとや変数ごとに分けて格納する必要があります。
range型を使用することで、ユーザーが入力した数値をループ回数として指定することができ、処理内容に input関数を指定することで入力したデータが要素としてリストに格納されます。
入力する行数が固定の場合は、以下の方法で変数ごとに値を格納することもできます。
print("好きな果物を2つ入力してください")
input_A, input_B = [input() for _ in range(2)]
print(f"1行目:{input_A}")
print(f"2行目:{input_B}")好きな果物を2つ入力してください
りんご
みかん
1行目:りんご
2行目:みかんinput関数のPython 3.x系と2.x系での違いについて
ここまで解説してきた input関数の仕様は Python3系におけるものであり、Python2系では一部の仕様が異なっています。
3系と違う点は、入力したデータを文字列として扱うか否かです。
Python2系の input関数は、入力したデータを文字列ではなくデータ式として扱います。
例えば、以下の内容でデータを入力するとします。
data = input()
# 1 + 1 と入力
print(data)Python3系の input関数の場合は文字列として取得されるため、コンソールにはそのまま「 1 + 1 」 と表示されます。
ところが、Python2系の場合はデータ式として取得するため、入力した式を計算した結果である 「 2 」 がコンソールに表示されます。
データ式である関係上、入力内容によっては Python3系では発生しないエラーも起こりうる可能性があります。
このように、Python2系と 3系では取得したデータの型に違いがあります。
まとめ
いかがでしたか?今回は、Pythonで input関数を使用する方法について解説しました。
input関数自体は難しいものではありませんが、入力したデータはその後の処理によって適切に扱う必要があるため、データ型の変換や、意図しないデータが入力された場合の例外処理など、使用の際には入力内容の扱いに注意するようにしましょう。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。