Pythonの標準入力input関数まとめ

こんにちは、今回はPythonの標準入力についてみていきたいと思います。

paizaで問題を解いてレベルアップをするには避けては通れない標準入力ですが、私は何も知らずに突っ込んでさっぱりわからず撃沈した記憶があります。(笑)

そんなことにならないように(ならないと思いますが笑)この記事で標準入力を理解していきましょう。

Pythonのさらに詳しい記事はコチラ

標準入力とは

「標準」とついていますが、特に気にしなくても大丈夫です。なので、標準入力とはただ「入力されたデータを受け取ること」と考えておきましょう。

この時、入力されたデータとは、一つとは限りません。複数入力されつこともあります。ですから、そんな複数個のデータにも対応できるようにしていきましょう。

たくさんのデータを処理しようとするとややこしそうですが、使う関数は一つなので実は結構簡単です♪

標準入力で使うinput関数

Pythonの標準入力で使うのはinput関数です。

以下のようなプログラムを実行したときを考えてみましょう

1行目で入力されたデータを受け取り、そのデータをline変数に格納しています。2行目はおまけです。ちゃんとinput関数で入力データを取得できている確認します。

もし、「Hello world」と入力されたら、「Hello world」と表示されますし、「123」と入力したらもちろん「123」と表示されます。

もし、入力されたデータを表示したいだけなら、わざわざline変数に格納しなくても以下のように書いてもOKです。

このように入力することで1行減らすことができます。もちろん、先ほどのプログラムと出力結果は変わりません。

標準入力input関数の注意点

先ほど紹介したinput関数の注意点はデータ型です。

プログラミングをするうえでデータ型の話は避けては通れないくらい大切ですし、このデータ型の話を理解するだけで大きくレベルアップできます。

関連記事

プログラミングをする上でデータ型の話を避けて通ることはできません。データ型を理解していないとエラーが大量発生してしまうかも。 今回はそんな超重要なデータ型を初心者向けにやさしく解説していきます。この記事の内容を正しく理解してエラーの[…]

Pythonのデータ型

データ型の種類

データ型を細かく分けるとたくさんあるのですが、今回は簡単のために代表的な2つのデータ型を紹介しましょう。

  1. 文字列(string)
  2. 整数(integer)

この二つをまずは覚えておきましょう。

データ型の違いがある理由

なせ、このようにデータ型が分かれているのかというと、「データ型によって役割が異なるから」です。

整数なら四則計算(加減乗除)をすることができますが、文字列で計算することはできないというように、データに対してできる処理が異なるのです。

これは非常に重要なことです。もし、文字列に対して割り算をするとエラーになってしまいます。

上のエラーメッセージに出てきている’str’が文字列を、’int’が整数のデータ型を表しています。

つまり、「文字列は整数で割り算できません」という意味ですね。

もう一つ紹介すると

これも同じエラーが出ていますが、今度は「文字列同士の割り算はできません」ということが書かれています。

このように、データ型を間違えるとエラーが出てくるわけです。ですが、エラーが出てきてもあせらずデータ型を確認して直せば問題ありません。

input関数のデータ型

input関数で受け取ったデータはすべて文字列になります。
つまり、str型のデータになります。

たとえ、「123」というデータを受け取ったとしてもプログラム側では文字列として処理されてしまいます。

なので、入力データを整数として処理したければ

このように、int関数で整数に変換する必要があります。このようにすることで、整数として処理できるので取得した入力データをもとに四則計算ができることになります。

上のように、入力したデータに3が足されて出力されています。もし、intをつけないとこれまで見てきたようにTypeErrorが出てきてしまいます。

もし、エラーが出てきた場合は、データ型をチェックしてましょう!

複数行の標準入力

これまでは、1行のデータを読み込んでいましたが、次に複数行のデータを読み込んでみましょう。データの数は増えますが、input関数を使うことに変わりありません。

input関数を書き連ねる方法

プログラムの書き方はシンプルで、読み込みたいデータの行数だけinput関数を書けばそれでOKです。

例えば上のように書けばいいのです。これは入力データが3行ある場合を想定しています。なので、input関数も3行書いているわけです。

その下に書かれているprint関数はおまけです。ちゃんと3行分読み込まれているかを確認するために書いています。

ちなみに、上のプログラムではint関数を使っていないので、出力された数字は文字列として扱われています。

forループを使う方法

入力データの行数だけinput関数を書くにしても限界があります。100行ものデータを読み込むときに100行分input関数を書いていると、とても見にくいプログラムになります。

その時に使うのがforループです。もし、10行分のデータを読み込むとわかっている場合、

このように書くことでコンパクトにまとまります。このプログラムでは、input関数で読み取ったデータをprint関数で表示する作業を10回繰り返すという意味になっています。

ただし、このプログラムでは受け取ったデータを表示しているだけで保存できていないので、保存したい場合はリストを使うとよさそうです。

空っぽのリストに読み込んだデータが次々に格納されています。

リストにデータを追加するのはappendですね。これの詳しい使い方も別の記事で紹介したいと思います。

ちなみに、こんな書き方もあります。

先ほどはカラのリストを用意しましたが、今回はその中にinput関数とforループを使って一気にリストを作っています。

Pythonのfor・while・if文に関する記事たち
5

よくあるinpu関数の使い方

これまで紹介した内容を組み合わせると、いろんな標準入力に対応することができます。新しい関数も出てくるので必見です!

任意の行数の入力データを読み込む

毎回あらかじめ決まった行数のデータを読み込むとは限りません。例えばあるクラスのテストの得点を読み込むとき、データの個数は各クラスの人数によって変わります。

そんな時には、最初の行でデータの個数を書いておき、その数の分だけforループ文を繰り返すことになります。

上の例では、入力データの1行目に4とあるので、その続きに4つのデータがあるということが分かります。

このようにするとデータの個数が分からなくても入力データごとに対応できますね♪

スペース区切りの入力データはsplitメソッド

これまでは1行に一つのデータを読み込んでいましたが、次は1行に複数個のデータがスペースで区切られている場合を考えましょう。

スペース区切りのデータとは以下のようなことを言います。スペースで区切られているのが分かります。

このデータをinput関数で読み込むときは

上のようにsplitメソッドを使うと勝手にスペースで区切ってくれて、さらにリストに要素を格納してくれます。

しかし、このままでは出力データであるリストの各要素に’(シングルクオート)がついてるので文字列であることが分かります。

もし、この各要素を整数として扱いたい場合はというとmap関数を使います。

文字列リストを整数リストに変換map関数

map関数の使い方は整数に変換することがすべてではありませんが、今回は脱線しないようにmap関数の説明はこの程度にしておきましょう。

重要なことはmap関数ではmapオブジェクトが返されるということです。なので、リストにしたければlist関数を使いましょう。

ここまでわかると上に書いていたプログラムは以下のように書くことで整数のリストを作ることができます。

1行目の「input().split()」は先ほども見たように文字列のリストを返します。それをmap関数で整数に変換してlist関数でリストに戻すことになります。

オブジェクトの話になると難しく感じるかもしれませんが、重要な考え方なのでまた別の記事でまとめたいと思います。

リストではなく各変数に格納する

先ほどはスペース区切りの入力データをリストに格納しましたが、次は一つ一つの変数に代入しましょう。

一行目で3つの変数を用意しています。今回はデータの個数が3つであることわかっているので、このように書けます。

もし、入力データを整数として扱いたい場合は

1行目でmap関数を使っているので整数として各変数に代入することができます。

map関数を使ってリストを作りたいときはlist関数が必要ですが、今回のようにリストでない場合はmap関数だけで整数として扱うことができます。

まとめ

今回は標準入力でつかうinput関数を紹介していきました。わたしは、始めたての頃、標準入力で苦労した記憶があります。

paizaではこの標準入力ができないとスキルチェック問題が解けないのでぜひマスターしていきましょう。

また、今回紹介した関数たちを組み合わせることでいろんな入力に対応できるので試行錯誤しながら試してみてください。

関連記事

プログラミングの勉強での山場の一つであるPythonの関数の解説をしていきます。引数・戻り値の解説から組み込み関数一覧まで紹介しています。 関数とは? 関数とは入力値を処理してある値を出力する装置のことを言います。ブラックボッ[…]

Pythonの関数とは?

当ブログではPython初心者が独学で習得するためのカリキュラムを公開中!

初心者がPythonを独学で習得できたロードマップはコチラ

プログラミング関連の記事はコチラ

python 標準入力 input関数
最新情報をチェックしよう!