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

Pythonでひし形を描画・出力するプログラムの書き方

Pythonのループ処理(繰り返し構文)を活用すると、キーボードのさまざまな文字を使って、整形された図形を簡単に作成できます。その一例が「ひし形(ダイヤモンド形)」です。

ひし形の出力には複数のループが必要になります。なぜなら、文字を縦方向と横方向の両方に出力しなければならないからです。さらに、図形は上端から中央に向かって徐々に大きくなり、中央から下端に向かって徐々に小さくなるという特徴もあります。

このため、内側にもう1つのforループを含む、2つのforループを使用します。前半のループで上側(頂点から中央まで)を描き、後半のループで下側(中央から底辺まで)を描く仕組みです。

サンプルコード

def Shape_of_Diamond(shape):
    a = 0
    # 上半分(頂点から中央まで)を描画
    for m in range(1, shape + 1):
        # 行頭の空白を出力して位置を調整
        for n in range(1, (shape - m) + 1):
            print(end=" ")
        # 記号「@」を奇数個ずつ出力
        while a != (2 * m - 1):
            print("@", end="")
            a = a + 1
        a = 0
        print()

    s = 1
    c = 1
    # 下半分(中央から底辺まで)を描画
    for m in range(1, shape):
        # 行頭の空白を出力して位置を調整
        for n in range(1, s + 1):
            print(end=" ")
        s = s + 1
        # 記号「@」を減少させながら出力
        while c <= (2 * (shape - m) - 1):
            print("@", end="")
            c = c + 1
        c = 1
        print()

shape = 8
Shape_of_Diamond(shape)

実行結果

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

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

コードのポイント

  • 空白による位置調整:各行の先頭に出力する空白の数を制御することで、記号を中央に寄せています。
  • 奇数個の増加と減少:上半分では 2 * m - 1 個ずつ記号を増やし、下半分では逆に減らすことで対称的なひし形を実現しています。
  • カウンタ変数のリセットac を各行の処理後に初期化することで、正しく次の行へ移行できます。

この手法を応用すれば、@ 以外の任意の文字(*# など)でも同様にひし形を描画できます。ぜひ引数の文字を変更して試してみてください。

  1. Pythonで「Hello World」を出力する方法|対話モードとスクリプトモードの実行手順を解説

    Pythonの学習は、まず「Hello World」プログラムの実行から始めるのが定番です。この記事では、Pythonには主に2つの実行モードがあることを踏まえ、それぞれのモードで「Hello World」を表示する手順をわかりやすく解説します。 1. 対話モード(インタラクティブモード)での実行 対話モードとは、スクリプトファイルを指定せずにPythonインタプリタを直接起動し、1行ずつコードを入力してその場で結果を確認できるモードです。 インタプリタの起動 ターミナル(コマンドプロンプト)で、引数なしでpythonコマンドを実行すると、次のようなプロンプトが表示されます。 $ python

  2. Pythonで行列をZ字形に出力するプログラムの解説

    本記事では、n×n の正方行列の要素を「Z」の字形に沿って出力する方法について、その考え方と実装の手順をわかりやすく解説します。 問題の概要 次数 n×n の正方行列が与えられたとき、その要素を Z 字形に従って順番に表示することが求められます。 Z 字形の走査は、以下の3つのステップで構成されます。 まず、最初の行(1行目)を左から右へ走査する 次に、主対角線(左上から右下へ向かう対角成分)を走査する 最後に、最終行(最後の行)を左から右へ走査する ここでは説明のため、あらかじめ用意した入力行列を使用して、コードの流れを示します。 サンプルコード arr = [[1, 2, 6, 9],