![見出し画像](https://assets.st-note.com/production/uploads/images/94356948/rectangle_large_type_2_b0592423fe4c888b47d4576c9d9d2f86.png?width=1200)
python図形作成
今回のnoteはpythonでピラミッドとダイヤモンドの図形を作成していきたいと思っています。
初歩的なアルゴリズムになりますので是非勉強の参考にしてください。
ピラミッド表示
まずは、ピラミッドの作成になります。
完成した図は下記の通りになります。
![](https://assets.st-note.com/img/1672291515512-iMqlEaregT.png)
ユーザから何段のピラミッドにするのかデータを受け取りその段数のピラミッドを表示します。
考え方としては*(アスタリスク)の隣に空白をどのくらい開けるのかを計算して*の数はいくつになるのかも計算します。
規則性として最初は1でそこから2ずつ増えています。そこから計算をしていきます。1, 3, 5, …nの順番です。
表示される*の数は入力した数の二乗になります。
今回は6なので6の二乗は36です。
ここまで説明をしたので次にコードを共有します。
n = int(input('何段のピラミッドにするか?'))
ans = n * n
m = ans // n * 2 # '*'の表示数を計算
indent = m // 2 # 空白の計算
for i in range(1, m, 2):
print(' ' * indent, '*' * i) # ピラミッドを表示
indent -= 1
他にも表示方法はあるので別の方法があるという方は教えてください。
ダイヤの表示
次にダイヤ表示になります。
こちらは先ほどのピラミッドを逆に表示するとできます。
下記に図を共有します。
![](https://assets.st-note.com/img/1672292105603-nFRsaX36Ky.png)
これと先ほどのピラミッドを合わせればダイヤモンドが出来ます。
下記の図になります。
![](https://assets.st-note.com/img/1672292224306-supjpG9ayE.png)
コードは下記になります。
flg = False
n = 1 + 3 + 5 + 7 + 9 + 11
m = 11 // 2
n_list = []
for i in range(1, 12, 2):
print(' ' * m, '*' * i)
m -= 1
n_list.append(i)
for j in reversed(n_list):
m += 1
if flg:
print(' ' * m, '*' * j)
flg = True
以上になります。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?