アルゴリズムを勉強しよう
今日はPythonのアルゴリズムの勉強としていろんな図形を書いていきます。
以下の順番で図形を書いていきます。
①直角三角形
②ピラミッド
③ダイヤモンド
④自分で考えた図形
直角三角形
期待する出力
*
**
***
****
*****
実際にプログラムを書いていきます。
以下になります。
for i in range(1, 5 + 1):
print('*' * i, end= '')
print()
ピラミッド
期待する出力
*
***
*****
*******
*********
実際のプログラム
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]の数を表示します。
ダイヤモンド
期待する出力
*
***
*****
*******
*********
*******
*****
***
*
実際のプログラム
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()
考え方
上記に記述したピラミッドを逆ピラミッドにします。
for文のreversedを使用して「」を表示します。表示する「」は上から順に減らしていきます。
自分で考えた図形
* *
** **
*** ***
**** ****
**********
実際のプログラム
n = 5 * 2
roop = n // 2
m = n - 2
for i in range(1, roop + 1):
print('*' * i + ' ' * m + '*' * i)
m -= 2
考え方
1番下の「*」の数から2を引きながらスペースを調整しながら、for文で表示を行う。