Python3におけるprintと改行について

Pythonのprint() functionはデフォルトでは改行(‘\n’)で終わる。
しかし、end parameter “end =”を入れる事で好きな文字で終える事が出来る。
些細な点だが忘れていたので簡単にまとめた。

for loopを利用して色々試してみる。

ファイルで実行

ファイル”forloop.py”を作成して中身を下記の通りに記述する。

for x in (1, 3, 5, 7, 9):
    print(x**2)

for x in [1, 3, 5, 7, 9]:
    print(x ** 3, end = " ")

for x in "spring":
    print(x * 2)

for x in range(1, 10, 2):
    print(x ** 4, end = " ")

print("")

for x in "summer":
    print(x * 3)

このファイル“forloop.py”を実行すると下記が出力される。

$ python3 floop.py 
1
9
25
49
81
1 27 125 343 729 ss
pp
rr
ii
nn
gg
1 81 625 2401 6561 
sss
uuu
mmm
mmm
eee
rrr

実行行、$ python3 floop.pyの後の
2〜6行は、最初の二乗(x**2)のループの出力。
デフォルトなので改行されて出力されている。

7行目は2つめの三乗(x**3)のループの出力。
こちらでは「end = ” ” 」を入れた事で、デフォルトの改行ではなく、各出力(プリント)の後に「” “」スペースが入る事で 一行にまとめて出力される。

この三乗の出力の最後も同様に改行では無くスペースなので、
7行目の最後、3乗の式最後729の後には改行の代わりにスペース” “となる。
その後に3つ目の式の文字*2のループの出力一つ目、ssが入り、このssの後にはデフォルトの改行(‘\n’)が入る。
それ以降は8〜12行まで値+改行が続く。

13行目は4つ目、1〜10まで1から2ずつ増やした数を4乗するループの出力。
これも出力の後にスペースを入れているので1行になる。

13行目と14行目が、2つ目のループ出力と3つ目のループ出力の間の7行目、8行目と違うのは、4つ目の式の後すぐに’print(“”)’の行を置いたこと。
この一行のお陰で、5つ目の式の文字*3のループは4つ目のループの後で改行された後、14行目から始まり、19行目まで続く。

因みにここで改行だから、と’print(“\n”)’としてしまうと、
改行を出力した後に、さらにデフォルトの改行が入って2行改行してしまうので注意。

# python3 floop.py の5つ目をprint("") => print("\n")に変えた場合の13行目以降
1 81 625 2401 6561 

sss
uuu
mmm
mmm
eee
rrr

余分に改行が入っているのが分かります。

出力を1行改行させたい時は空文字の出力’print(“”)’でOK。

for loopを1行にまとめた時のインデント

蛇足だが、for x in ():のループについて、:以降は改行&インデントとしなくても、一行で記述が可能。この場合、”:”とprintの一文字目”p”の間は何も無くても良いし、スペースが有っても良い。インデント以外はおおらかなイメージ。
下記はターミナルで実行したコードと出力。

>>> for x in (1, 3, 5, 7, 9):print(x**2)
... 
1
9
25
49
81
>>> for x in [1, 3, 5, 7, 9]: print(x ** 3, end = " ")
... 
1 27 125 343 729 

>>> for x in "spring":  print(x * 2)
... 
ss
pp
rr
ii
nn
gg

プログラムはなぜ動くのか第3版
求められているからこその第3版発売でしょう。
私の様な初心者がプログラムの概要を掴むには分かり易い本。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

3 + 8 =

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください