新規記事の投稿を行うことで、非表示にすることが可能です。
2021年01月01日
入出力 (1):キーボード,ディスプレイ
記事内容の出典:フリーテキスト「Python3入門」
このページの更新:2021/01/02
キーボードからの入力を受け付ける
キーボードからの入力を受け付けるには input 関数を使用します.
input( プロンプト文字列 )
これを実行するとその時点でキーボードからの入力待ちとなります.(次の例)
s = input()
print('入力された文字列:',s)
これを実行すると Google Colab.の場合は次のような表示となり,キーボードからの入力を待ちます.
ここに例えば 'Pythonプログラミング' という文字列を入力して Enter を押します.すると次のような結果となります.
Pythonプログラミング
入力された文字列: Pythonプログラミング
input 関数は受け取った入力を文字列の形で返します.
■ 応用例:入力繰り返しループ
先の例を応用した,キーボードからの入力をそのまま出力する処理を繰り返すプログラムを次に示すます.
while True:
s = input('入力してください: ')
print('入力された文字列:',s)
if s == 'end':
break
このプログラムは 'end' と入力するまで処理を繰り返します.
'一行目','二行目','end' と次々と入力すると次のようになります.
入力してください: 一行目
入力された文字列: 一行目
入力してください: 二行目
入力された文字列: 二行目
入力してください: end
入力された文字列: end
このように 入力→処理 のサイクルを構成する手法はアプリ開発にしばしば用いられます.
出力のための書式整形
数値計算の結果を出力する次の例について考えましょう.
print( '有理数の近似値: 1/3 =', 1/3, ', 1/7 =', 1/7, ', 1/11 =', 1/11 )
実行結果:
有理数の近似値: 1/3 = 0.3333333333333333 , 1/7 = 0.14285714285714285 , 1/11 = 0.09090909090909091
この print による出力を更に簡潔に実現し,結果を更に見やすくするための方法について考えます.
まず,上の例のように print 関数にたくさんの引数を並べる形で出力内容を与えるのは余り良い方法ではありません.それよりも,出力内容を1つの文字列として作成(書式整形)した後,それを print などに渡して出力するという方法が多く用いられます.
以下に,書式整形のためのいくつかの方法について説明します.
書式整形の方法 (1):format メソッド
format メソッドを用いると,複数の値から1つの文字列を構成することができます.
書式文字列.format( 値の並び )
例を挙げてこの方法について説明します.先の例の出力を format を用いた形で実行してみましょう.(次の例)
s = '有理数の近似値: 1/3 = {} , 1/7 = {} , 1/11 = {}'.format(1/3,1/7,1/11)
print( s )
実行結果:
有理数の近似値: 1/3 = 0.3333333333333333 , 1/7 = 0.14285714285714285 , 1/11 = 0.09090909090909091
この例では書式文字列として '有理数の近似値: 1/3 = {} , 1/7 = {} , 1/11 = {}' というものも用いており,この文字列中の { } の部分に format の引数を埋め込んでいます.このような形式で出力内容を構成すると,出力結果が直感的にわかりやすくなります.
次に,出力する数値の表現を調整しましょう.今回のように,小数点以下の桁が長い場合は小数点以下の桁数を短い目に丸めて出力するのが一般的です.では,小数点以下の桁数を3桁に制限して出力する方法の例を示します.(次の例)
s = '有理数の近似値: 1/3 = {:5.3f} , 1/7 = {:5.3f} , 1/11 = {:5.3f}'.format(1/3,1/7,1/11)
print( s )
実行結果:
有理数の近似値: 1/3 = 0.333 , 1/7 = 0.143 , 1/11 = 0.091
この例のように,書式文字列に埋め込む数値のところに {:5.3f} とありますが,これは「全長5桁,小数点以下3桁の浮動小数点数」を意味します.また,5.3f の部分を置換フィールドといいます.(書式指定子と呼ぶこともあります)
現実的な使い方としては format の式を直接 print 関数の引数に与えることが多いです.(次の例)
print( '有理数の近似値: 1/3 = {:5.3f} , 1/7 = {:5.3f} , 1/11 = {:5.3f}'.format(1/3,1/7,1/11) )
実行結果:
有理数の近似値: 1/3 = 0.333 , 1/7 = 0.143 , 1/11 = 0.091
■ 様々な置換フィールド
置換フィールドは「長さ」と「データ型」を並べて書いたもので,データ型毎に様々なものがあります.(下の表)
(表の出典:フリーテキスト「Python3入門」)
■ 置換フィールドに値を埋め込む順番
書式文字列の中の { } には format の引数に与えられたものが順番に埋め込まれますが,埋め込みの順序を変えることができます.(次の例)
print( '{2:3s},{1:3s},{0:3s}'.format('0番目','1番目','2番目') )
実行結果:
2番目,1番目,0番目
この例のように,置換フィールドのコロン「:」の前に format メソッドの引数のインデックスを与えることができます.
■ 埋め込む値のアラインメント(左寄せ,右寄せ,中央揃え)
置換フィールドのコロン「:」の右側に >,<,^ などの記号を記述することで,それぞれ右寄せ,左寄せ,中央揃えのアラインメントができます.(次の例)
print( '整数(無指定){:7d}(無指定)'.format(123) )
print( '整数(左寄せ){:<7d}(左寄せ)'.format(123) )
print( '整数(右寄せ){:>7d}(右寄せ)'.format(123) )
print( '整数(中揃え){:^7d}(中揃え)'.format(123) )
実行結果:
整数(無指定) 123(無指定)
整数(左寄せ)123 (左寄せ)
整数(右寄せ) 123(右寄せ)
整数(中揃え) 123 (中揃え)
アラインメントの指定をしない場合,数値は右寄せ,文字列は左寄せになります.
書式整形の方法 (2):f-string
format メソッドによる書式整形と同様の方法を更に簡便な形で実現するのが f-string による書式整形です.これはPython3.6の版から導入された,比較的に新しい機能です.
f-string による書式文字列はクオート記号の直前に f を記します.そして,置換フィールドの左側のコロン「:」の直前に埋め込むべき値を持った変数の名前を記述します.(次の例)
v1 = 123
v2 = 3.141592653589793
v3 = 'プログラミング'
print( f'整数→{v1:3d},浮動小数点数→{v2:6.4f},文字列→{v3:7s}' )
実行結果:
整数→123,浮動小数点数→3.1416,文字列→プログラミング
書式整形の方法 (3):% 演算子
C や Java に似た方法で書式整形する % 演算子(下記)があります.
書式文字列 % (値のタプル)
% 演算子の使用例を下に示します.
print( '整数→%3d,浮動小数点数→%6.4f,文字列→%7s' % (123,3.141592653589793,'プログラミング') )
実行結果:
整数→123,浮動小数点数→3.1416,文字列→プログラミング
Python3 の基礎 − 超入門・再入門 −