answer7_2.py
def pyramid(n):
"""高さnのピラミッドを出力する。"""
# 上半分と頂点の行を出力する
for i in range(1, n+1):
print('#'*i)
# 下半分を出力する
for i in range(n-1, 0, -1):
print('#'*i)
for i in range(2, 5):
pyramid(i)
print()
# 章末問題 7章【2】解答例
#
# 関数pyramidでは、「#」の数が増えていく上半分(頂点の行を含む)と、
# 減っていく下半分(頂点を含まない)を分けて出力しました。
# 4〜5行目が上半分、7〜8行目が下半分です。
#
# 「#」を複数個出力するのに文字列と整数の乗算を使っています
# (5、8行目)が、2重ループを使ってもよいです。
#
# 2行目はドキュメント文字列(p.93コラム)で、関数についてのコメントです。
# 式文で、評価して得られる文字列は使われないので、実行に影響ありません。
#
# ピラミッドの間の空行は12行目のprint()で空けています。
# このコードだと最後にも空行が出力されます。それを避けるには
#
# for i in range(2, 4):
# pyramid(i)
# print()
# pyramid(4)
#
# などとするか、よりシンプルに
#
# pyramid(2)
# print()
# pyramid(3)
# print()
# pyramid(4)
#
# とすることになるでしょう。