Pythonで 奇数個のピラミッド の作り方

6段のピラミッド作成した様子 プログラミング

昔、つくるのに苦戦したプログラムをご紹介します

奇数個 の ピラミッドとは?

画像のように指定した段数
奇数個の段を重ねていくピラミッドのことです。


手っ取り早く 確認したい方向けに

YouTubeのリンクを貼っておきます。


奇数ピラミッドの作り方

私はこのをプログラム
つくるために、大きく分けて3つの方法を考えました
(今回はfor分を使ったプログラムをかいていきます。また、ピラミッドに使うのは * です。)

  1. for分を4つ作るやり方
  2. for分を3つ作るやり方
  3. for分を1つ作るやり方

1つ目:for文 4つ

プログラムは次のようにしました

dan=int(input("ピラミッドの段数は?"))
for i in range(1,dan+1):
    for j in range(dan - i):
        print(" ",end="")
    for k in range(1,i+1):
        print("*",end="")
    for m in range(1,i):
        print("*",end="")
    print()

写真1のプログラムを実行すると

写真2



この考え方は
次の図のようになります

写真3

jのfor文は空白だけをつくる文

kのfor文は一番上の段から1個ずつ増えていく文

mのfor文は1個ずつ増えていく文

kとmの組み合わせでピラミッドの個数を表現しています。


今回は、6段のピラミッドをつくるプログラムなので、

「dan」という変数には、6が代入されます。

iのfor文は↓のようなイメージで動きます。

一言でまとめると、

「i」には6回数字が代入されて、1,2,3,4,5,6の順番で代入してくれます。

「i」は段数を表す変数ということになりますね。





2つ目:for文 3つ

プログラムは次のようにしました

dan=int(input("ピラミッドの段数は?"))
for i in range(1,dan+1):
    for k in range(dan - i):
        print(" ",end="")
    for j in range(2*i - 1):
        print("*",end="")
    print()

このプログラムの考え方は、
次の図のような考え方になります。

写真5

手書きで申し訳ありません

勿論これでも
写真2のピラミッドが出力されます



3つ目:for文 1つ

これは2つ目に紹介したプログラムを一つにまとめたものです。

dan=int(input("ピラミッドの段数は?"))
for i in range(1,dan+1):
    print(" "*(dan - i)+"*"*(2*i - 1))



まとめ

結果的に一番簡単なのは3つ目だと思います。

だけども、プログラム的に面白いのは
1つ目でした。

基本的に、段数を指定している「i」ですが、

その「i」をうまく使って「空白」や「*」の数を指定していました。

皆さんの参考になれば幸いです。

コメント

タイトルとURLをコピーしました