Python: 入出力(インプット&アウトプット)とは

入出力インプットアウトプット Python

どんなプログラムも最終的に誰かに読まれ、理解される出力(アウトプット)が無かったら意味がありません。Pythonではプログラムは頻繁に何らかの入力(インプット)をプログラム動作中にユーザーに求めたり、ファイルなどからの入力を求めたりします。

ユーザーインプット

ユーザーインプットをキーボードから受け付けるために、Pythonではinput()関数を使います。この関数は通常、引数にstringを用います。このstringとして与えられた文字列はユーザーにどんな入力を求めているのかを知らせるためにプロンプトに表示する文字列として利用されます。


input()関数はユーザーが入力した文字列を画面にstringとして出力しますが、保存はしていません。ですので、ユーザーが入力した内容を後で利用したいのであれば、input()関数の出力結果を変数に保存することになります。

input("Enter your name: ")

このコードを実行すると、引数に与えられたEnter your name: が直後に出力され、入力待ち状態になります。今回はTakashiと入力しました。最後にコンピューターからTakashiが出力されて終わっています。この結果は保存されていないので、あとで利用することはできません。

name = input("Enter your name: ")
print("Hello " + name)

次はnameという変数に代入する値としてinput()を利用しています。
Takashiと入力した後にprint()関数の中でnameを使用すると、先ほど入力したTakashiがしっかりと出力されているので、nameにTakashiが保存されていることが確認できました。

このようにinput()関数を用いて得られた内容を後で利用したいのであれば、変数に保存するようにしましょう。

ファイルからの入力

Pythonではファイルから直接データを入力することもできます。特に、大量のデータを要求する場合や、プログラム実行中にユーザーに要求する全ての情報をタイプさせるのが困難である場合などに便利です。

Pythonでは開いているファイルはファイルオブジェクトというものを生成します。このファイルオブジェクトは変数に保存することができるので、これを用いてファイルのコンテンツに色々な処理をこなすことができます。

デスクトップにHello World!などと入力したテキストファイルをメモ帳などで作成して保存してください。今回は名前をhellofile.txtとします。

file = open("hellofile.txt")

上記のコードを記述したinputFile.pyをテキストエディターで作成し、デスクトップに保存して実行してください。

実行後、シェル上で下記のコードを入力して実行してください。

file.read()

open()関数の引数にはファイルの場所を伝えるパスを与えます。その後、取得したデータをfile変数に保存し、シェル上でread()を用いてファイルの中身を出力しています。

注意:ディレクトリの関係で今回はhellofile.txtとinputFile.pyを両方ともデスクトップに保存して実行する必要があります。どちらか一方でも違う場所に保存されている場合、open()関数でファイルを見つけられません。どこからでもopen()関数でファイルを見つけたい場合にはopen()関数の引数に絶対パスを与えてください。

先ほどの続きで、もう一度read()を使ってみてください。

何も出力されていません。読み込みが失敗しているわけではありません。
read()を用いた場合、現在の行から最後の行まで読み込んで出力した後に、コンピューターの内部でカーソルは最終行の一番最後で待機している状態なのです。ですので、そのままの状態でもう一度read()を使うと、その後に何もない状態なので結果的に何も出力されていないのです。

もう一度同じ内容を出力したい場合は一度ファイルを閉じてもう一度開きます。ファイルを閉じるにはclose()を用います。

close()で閉じた後にread()で読み込もうとしても、もう閉じているのでエラーがでていますね。

hellofile.txtにもう一行追加してください。
もう一度inputFile.pyを実行し、ファイルを読み込み、次はread()ではなく、readline()を実行してみてください。

read()は一度に全ての行を読み込むのに対して、readline()は一行ずつ読み込みます。ですので、一回目ではHello World、二回目にはNice to meet you!の行が読み込まれているのが分かります。

ちなみに¥n(\nの場合もあります)は改行を表す記号です。

画面への出力

print()関数は引数に与えた値を画面上に出力するために使います。これは非常に多用途に使える関数で、データ型に関係なく、様々な変数の値や式の結果などを出力できます。

デバッグ機能がついていないエディターを使っている場合にはよくデバッグのためにも用いられます。
変数の値を異なる場所で何回か出力して違いを見たりするのに非常に便利です。

使い方の例をいくつか見ていきましょう!

一つ目はこれまでに何度も用いている文字列の出力です。

二つ目は数値の出力です。一つ目の文字列とあまり違いが無いように見えますが、文字列のデータ型はstring、数値(整数)のデータ型はintegerなので、実はまったく違うデータ型を出力しているんです。

上はfloat型の変数を出力しています。amountという変数に4.5というfloat型の数値が入っていますね。

最後にこちらはリストの出力です。catsという変数はTamaとKuroという文字列を含むリストです。リストについては下記の記事を参考にしてください。

こちらの場合もしっかりとTamaとKuroが出力されていることが確認できますね。

いかがでしたか?入出力をマスターできればプログラムのバリエーションも大きく広がります。

コメント

プロフィール

プロフィール
コードラボJP

大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで

コードラボJPをフォローする
タイトルとURLをコピーしました