Python

【Python】アスタリスク(*)で三角形を描画する


プログラミング初心者向けの練習問題として「アスタリスク(*)を羅列して図形を描画する」というものがあります。

本記事では、アスタリスクで三角形を描画する方法について解説します。

実際にプログラムを作成してみる

早速ですが、実際にプログラムを作成していきます。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 描画する三角形の高さheightを入力させる
  2. n個のアスタリスクと改行コードを表示する
  3. 2の手順をheightの値と同じ回数繰り返す(nは1ずつ増加)

実装例(スペース無)

上記の手順に従ってプログラムを作成します。使用する言語はPythonです。

if __name__ == '__main__':

    print('三角形の高さを指定して下さい:')
    height = int(input())

    figure = ''
    for h in range(height):
        for i in range(h+1):
            figure += '*'
        figure += '\n'

    print(figure)

このプログラムを実行すると以下の出力結果が得られます。

三角形の高さを指定して下さい:
5
*
**
***
****
*****

実装例(スペース有)

上記の手順に従ってプログラムを作成します。使用する言語はPythonです。

if __name__ == '__main__':

    print('三角形の高さを指定して下さい:')
    height = int(input())

    figure = ''
    for h in range(height):
        for i in range(height-(h+1)):
            figure += ' '
        for i in range(h+1):
            figure += '*'
        figure += '\n'

    print(figure)

このプログラムを実行すると以下の出力結果が得られます。

三角形の高さを指定して下さい:
5
    *
   **
  ***
 ****
*****

応用:ピラミッド型の三角形を描画

上記では直角三角形を描画するプログラムを紹介しましたが、やり方を工夫すればピラミッド型の三角形、つまり、二等辺三角形を描画することも可能です。

ここでは、その方法について説明します。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. 描画する三角形の高さheightを入力させる
  2. heightの値から各列のアスタリスク、スペースの個数を求める
  3. 2の結果に従ってアスタリスク、スペースを表示する

実装例

上記の手順に従ってプログラムを作成します。使用する言語はPythonです。

if __name__ == '__main__':

    print('三角形の高さを指定して下さい:')
    height = int(input())

    max_width = (height - 1) * 2 + 1;

    figure = ''
    for h in range(height):
        width = h * 2 + 1
        space = int((max_width - width) / 2)
        for i in range(space):
            figure += ' '
        for i in range(width):
            figure += '*'
        figure += '\n'

    print(figure)

このプログラムを実行すると以下の出力結果が得られます。

三角形の高さを指定して下さい:
5
    *
   ***
  *****
 *******
*********