Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでピラミッドパターンを出力するプログラムの書き方

Pythonのforループrange関数を活用すれば、さまざまな形のピラミッド(三角形)パターンを描くことができます。このアプローチのポイントは、描画に使う記号の位置に対して縦横の余白を適切に確保できるよう、forループをどう設計するかにあります。

本記事では、代表的な4種類のピラミッドパターンを、サンプルコードと実行結果とともに紹介します。

パターン1:直角三角形

まずは、左下を基準とした直角三角形のパターンです。外側のループで行数を制御し、内側のループで各行に表示する「*」の数を制御します。

サンプルコード

def pyramid(p):
    for m in range(0, p):
        for n in range(0, m+1):
            print("* ",end="")
        print("\r")
p = 10
pyramid(p)

実行結果

上記のコードを実行すると、次の出力が得られます。

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

パターン2:直角三角形(180度回転)

次に、パターン1の図形を180度回転させた形です。各行の先頭に空白を挿入するためのカウンタ変数Xを用意し、行が進むごとに空白の数を減らしていくことで、右下を基準とした直角三角形を実現しています。

サンプルコード

def pyramid(p):
    X = 2*p - 2
    for m in range(0, p):
        for n in range(0, X):
            print(end=" ")
        X = X - 2
        for n in range(0, m+1):
            print("* ", end="")
        print("\r")
p = 10
pyramid(p)

実行結果

上記のコードを実行すると、次の出力が得られます。

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

パターン3:二等辺三角形

続いて、左右の辺が等しい長さとなる二等辺三角形を描きます。空白を出力するためのforループと、「*」を出力するためのwhileループを組み合わせているのが特徴です。

サンプルコード

n = 0
r = 12
for m in range(1, r+1):
    for gap in range(1, (r-m)+1):
        print(end=" ")
    while n != (2*m-1):
        print("* ", end="")
        n = n + 1
    n = 0
    print()

実行結果

上記のコードを実行すると、次の出力が得られます。

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

パターン4:正三角形

最後に、3つの辺がすべて等しい長さの三角形、いわゆる正三角形を描きます。ここでは記号として「@」を使用し、行ごとに先頭の空白を1つずつ減らしながら出力しています。

サンプルコード

length = 12
k = (2 * length) - 2
for p in range(0, length):
    for n in range(0, k):
        print(end=" ")
    k = k - 1
    for n in range(0, p + 1):
        print("@", end=' ')
    print(" ")

実行結果

上記のコードを実行すると、次の出力が得られます。

           @
          @ @
         @ @ @
        @ @ @ @
       @ @ @ @ @
      @ @ @ @ @ @
     @ @ @ @ @ @ @
    @ @ @ @ @ @ @ @
   @ @ @ @ @ @ @ @ @
  @ @ @ @ @ @ @ @ @ @
 @ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @

まとめ

ピラミッドパターンの描画では、「何行目に何個の記号を、どれだけの空白の後に出力するか」を数式で表現することが重要です。range関数で行数と記号数を制御し、空白用のカウンタを組み合わせることで、直角三角形から正三角形まで自由自在に図形を描くことができます。ぜひ行数や記号を変更して、いろいろなパターン作りに挑戦してみてください。

  1. Windowsで使えるPython開発用IDEおすすめ7選|PyCharmからAtomまで徹底解説

    Windows環境でPythonの開発を始めるとき、最初に悩むのが「どのIDE(統合開発環境)を選ぶべきか」という問題です。IDEはコードの編集・実行・デバッグなどをひとつのアプリケーションで完結できる強力なツールであり、選択次第で開発効率が大きく変わります。 本記事では、Windowsで利用できる代表的なPython対応IDEを厳選し、それぞれの特徴やメリットをわかりやすく解説します。 PyCharm PyCharmはJetBrains社が開発する、Python開発で最も人気のあるIDEのひとつです。無料のコミュニティ版と有料のプロフェッショナル版が用意されており、初心者からプロフェッショ

  2. Pythonコードを高速化する11の最適化テクニック

    Pythonはコンパイル言語ほど高速ではないことは周知の事実ですが、大手企業がPythonで大規模なワークロードを処理している事例からも分かるように、決して「遅い言語」ではありません。この記事では、正しく動作するPythonプログラムをさらに速く、効率的にするために押さえておきたい最適化のヒントを11個紹介します。 ヒント1: 組み込み関数を活用する Pythonで独自に効率的なコードを書くことも可能ですが、C言語で実装された組み込み関数の速度には到底及びません。利用可能な組み込み関数はdir(__builtins__)で一覧表示できるので、車輪の再発明をする前に必ず確認しましょう。 ヒン