Python 練習例23
問題:次のような図形(ひし形)を出力してください:
* *** ***** ******* ***** *** *
プログラム分析:まず図形を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)
# 上半分
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)
上記の例の出力結果は次のとおりです:
* *** ***** ******* ***** *** *その他の拡張