昔、つくるのに苦戦したプログラムをご紹介します
奇数個 の ピラミッドとは?
画像のように指定した段数
奇数個の段を重ねていくピラミッドのことです。
手っ取り早く 確認したい方向けに
YouTubeのリンクを貼っておきます。
奇数ピラミッドの作り方
私はこのをプログラム
つくるために、大きく分けて3つの方法を考えました
(今回はfor分を使ったプログラムをかいていきます。また、ピラミッドに使うのは * です。)
- for分を4つ作るやり方
- for分を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」をうまく使って「空白」や「*」の数を指定していました。
皆さんの参考になれば幸いです。
コメント