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)
#
# とすることになるでしょう。