前のページへ戻る

わかるまで教えます パイソン講座 コツコツと一歩ずつ

健太郎先生が本気でお教えします!

訪問者数

Pythonの入出力処理

コマンドプロンプト上でデータを変数に入力するためには(標準入力から、つまり sys.stdinから入力)、組み込み関数である
input 関数を使用します。もし 引数 prompt が存在すれば,それが末尾の改行を除いて標準出力に書き出されます。
キーボード入力から1行読み込んで,文字列に変換して返します。その際に、末尾の改行を除去します。
このように、input 関数は、入力されたデータを戻り値で返しますが、それは必ず文字列になります。

また変数などの値を標準出力(sys.stdout)に表示するためには、組み込み関数である print 関数を使います。
print 関数は与えられたオブジェクトを、スペースで区切り、標準出力に表示して、最後に改行をします。
なお、print 関数の書式は詳しく書くと以下の通りです。

		print(*objects, sep='', end='\n',file=sys.stdout, flush=False)			
		
 objects (単数でも複数でも可)を、separator (デフォルトは半角スペース)で区切りながらテキストストリーム file (デフォルトは標準出力)
に表示し、最後に endを表示します。objects が与えられていない場合は、end だけを書き出しします。なお、sep, end, file を与える場合
キーワード引数 ( sep="@" 等の形) として与える必要がある。
		>>> a = input("data? ")		# inputで入力されたデータは必ず文字列になる。
		data? 13 3.141592654 abcd
		>>> a 				# a は文字列なので、シングルクォーテーションつきで表示される
		'13 3.141592654 abcd'
		>>> b = a.split()	# スペース1文字で分割して,リスト b に代入
		>>> b
		['13', '3.141592654', 'abcd']
		>>> x = int(b[0])		# 最初の要素を数値に変換してxに代入
		>>> y = float(b[1])		# 2番目の要素を浮動小数点数に変換してyに代入
		>>> z = b[2]			# zに3番目の要素を代入
		>>> print(x, y, z)		# x、y、zの表示
		13 3.141592654 abcd
		>>> str = "x = {0:3d}, y = {1:.2f}, z = {2:s}".format(x, y, z)	# format関数で表示体裁を整えて表示
		>>> print(str)
		x =  13, y = 3.14, z = abcd
		>>> print("2023 9 28", sep = "/", end="\t\n")	# 区切り文字を/に、最後にタブと改行を表示する。
		2023/9/28       
		
 上のプロンプト文において,a に入力したデータを代入していますが、ここは数値であっても文字列と見なされます。
新たに変数bを用意し、スペースを区切り文字として、a を分割し、リストとして代入しています。
文字列を分割して新たにリストとして生成する関数 split 関数については、こちらを参照して下さい。
生成された文字列を数値に変換して、x・y・zに代入しています。int(), float()も重要なので、おさえておきましょう。
int() は 文字列を整数値に変換し、float() は 文字列を 浮動小数点数に変換する関数になります。
こういう作業をするのは、Pythonでは文字列では計算ができないためです。そのため、これらの関数で変換してあげる必要があります.
あとは、print 関数で、xとyとzの値を表示します。しかし、あとにまた見慣れない関数・メソッドが出てきましたが、
これは、format 関数と言って、表示の書式を指定する関数になります。非常に多くのパラメーターがあり、覚えるのも大変です。
ですが、覚えると有用な関数でもあります。プログラムを作成する際に、意識的にも使っていけば徐々に覚えれると思います。
この関数ものちほど詳しく説明できたらと思っています。

ファイルの入出力について

Pythonにはプログラム単体で実行できる他に、外部からデータを受け取って読み書き処理を行うアプリケーションの開発が可能です。
例えば、Pythonでは、テキストファイルや、JSONファイル、XMLファイル、CSVファイルといった形式のファイルを扱えます。
これらのファイルは、記述ルールのある、データ構造の情報を持っており、プログラムで扱いやすい形式です。
詳細に具体例を交えて説明していきたいと思います。
①JSON(JavaScript Object Notation)
 JSONは、構造化されたデータを表すための形式になります。データの内容を柔軟に表現できて、Webの標準技術として採用されています。
例えば、Webアプリケーションなどの様々な場面で幅広く利用されています。
また、PythonではJSON形式データを扱うためのライブラリも多く用意されています.

	◎JSON形式

		構文:   {"キー": "値", "キー":{"キー": "値"}, "キー":[{"キー": "値"},………], ………}

		 このように、{}内にキーと値をセットにしてコロンで区切って記述します。キーは必ず「"」で囲みます。また、値にはキーと値の組み合わせ、
		つまり入れ子構造にすることが可能です。値とキーの組合せを複数入れる際には、[]の中に記述して{}のまとまりをカンマで区切ります。
		
②XML(eXtensible Markup Language)
 XMLは、HTMLのようにタグを利用してデータ構造を表しますが、タグの名前は自分で自由に設定できるのが特徴です。
JSONと同様、Webの標準技術となっており、現在多くのプログラムにてサポートされております。
この形式のファイルはおもに、アプリケーションの設定項目を保存しておくためのファイルとして、利用されています。
他には、顧客の注文伝票や、本や自動車などといった品物の属性情報、などが用途として挙げられると思います。
	◎XML形式

		構文:	<タグ名>値</ タグ名>

		例:
		<items>
			<item>
				<id>01</id>
				<name>cat</name>
				<image>cute001.jpg</image>
			</item>
			<item>
				<id>02</id>
				<name>owl</name>
				<image>cute002.jpg</image>
			</item>
			<item>
				<id>03</id>
				<name>parakeet</name>
				<image>cute003.jpg</image>
			</item>
		</items>
		
③CSV(Comma Separated Value)
 CSVは聞いたことがある人も多いと思います。Excelなど表計算ソフトを使用していると、聞くと思います。
これは、行と列の表で表されるデータの形式になります。行は改行までの文字列が1つの固まりとなっており、
この固まりをレコードといいます。列は、1レコード(1行)をカンマなどの区切り文字で区切って表します。
人の目で見ても理解しやすく、また手作業での編集も容易であることから、表形式で表現できるもののデータ
をまとめる際によく利用されます。
	◎CSV形式

		構文:		header,header,header,header,……………[改行]
				value,value,value,value,…………………[改行]

			このように、各国の項目名をカンマ「,」で区切ります。1行目はヘッダ行で、項目の名称を表しています。
			実際の値は、2行目以降に記述することになります。

		例:
			id,name,age,organization,job,status,class
			1,奥野健太郎,40,A社,プログラマ,会社員,Python入門
			2,奥野健一郎,42,B社,情報セキュリティマネージャー,部長,Java入門
			3,奥田健生,44,C社,情報アナリスト,役員,JavaScript入門
			4,奥山健吉郎,37,B社,ITサービスマネージャー,契約社員,Python入門
			5,奥尻健飛,34,E社,プログラマ,派遣社員,Java入門

			上の場合、ヘッダ行が「id」 「name」 「age」 「organization」 「job」 「status」 「class」 で、レコードは5つあります。
		
このように、CSV形式は単純な形式なので、作りやすいというメリットはありますが、列はすべての行に対して共通であるため、
レコードごとに項目を設定することができません。また、環境によっても、記述ルールが異なるというデメリットも存在しています。