Python 練習例23

Python 100例

問題:次のような図形(ひし形)を出力してください:

   *
  ***
 *****
*******
 *****
  ***
   *

プログラム分析:まず図形を2つの部分に分けて考えます。前の4行は1つの規則、後の3行は1つの規則です。二重forループを使い、最初のループが行を制御し、2番目のループが列を制御します。

プログラムのソースコード:

例

#!/usr/bin/python # -*- coding: UTF-8 -*- from sys import stdout for i in range(4): for j in range(2 - i + 1): stdout.write(' ') for k in range(2 * i + 1): stdout.write('*') print('') for i in range(3): for j in range(i + 1): stdout.write(' ') for k in range(4 - 2 * i + 1): stdout.write('*') print('')

例(Python3)

def print_diamond(rows):
    # 上半分
    for i in range(1, rows, 2):
        spaces = " " * ((rows - i) // 2)
        stars = "*" * i
        print(spaces + stars)

    # 下半分
    for i in range(rows, 0, -2):
        spaces = " " * ((rows - i) // 2)
        stars = "*" * i
        print(spaces + stars)

# 行数を設定します。必要に応じて調整できます
rows = 7
print_diamond(rows)

上記の例の出力結果は次のとおりです:

   *
  ***
 *****
*******
 *****
  ***
   *

Python 100例

その他の拡張