LoginSignup
0
1

【Python】図形を描いてみた!!

Posted at

アルゴリズムを勉強しよう

今日はPythonのアルゴリズムの勉強としていろんな図形を書いていきます。
以下の順番で図形を書いていきます。

①直角三角形
②ピラミッド
③ダイヤモンド
④自分で考えた図形

直角三角形

期待する出力

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

実際にプログラムを書いていきます。
以下になります。

for i in range(1, 5 + 1):
    print('*' * i, end= '')
    print()

image.png

ピラミッド

期待する出力

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

実際のプログラム

n = 5 * 2
n_1 = n // 2 - 1
for i in range(1, n, 2):
    print(' ' * n_1, end='*' * i)
    n_1 -= 1
    print()

考え方

今回は、5段のピラミッドを表示しています。
まずは、ループを何回するか考えます。5段表示をする場合はその2倍の数をループします。
「*」を表示する数は奇数個になります。
今回は、[1, 3, 5, 7, 9]の数を表示します。

出力結果
image.png

ダイヤモンド

期待する出力

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

実際のプログラム

n = 5 * 2
n_1 = n // 2 - 1
a_list = []
for i in range(1, n, 2):
    print(' ' * n_1, end='*' * i)
    n_1 -= 1
    a_list.append(i) # 数値を格納
    print()
a_list.pop(-1) # 末尾の大きな数字を外に出す。
n_2 = 0
for j in reversed(a_list):
    n_2 += 1
    print(' ' * n_2, end='*' * j)
    print()

出力結果
image.png

考え方

上記に記述したピラミッドを逆ピラミッドにします。
for文のreversedを使用して「」を表示します。表示する「」は上から順に減らしていきます。

自分で考えた図形

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

実際のプログラム

n = 5 * 2
roop = n // 2
m = n - 2
for i in range(1, roop + 1):
    print('*' * i + ' ' * m + '*' * i)
    m -= 2

出力結果
image.png

考え方

1番下の「*」の数から2を引きながらスペースを調整しながら、for文で表示を行う。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1