Pythonで星(*)を使って階段状の三角形を作成するプログラムの書き方
問題の概要
数値 n が与えられたとき、n 段の階段を表す文字列を作成することを考えます。文字列内の各行は改行文字(\n)で区切られます。
例えば、入力が n = 5 の場合、出力は次のようになります。
* ** *** **** *****
解法のアプローチ
この問題は、各行ごとに「空白の数」と「星(*)の数」を計算して文字列を組み立てることで解けます。具体的には、i 行目(0始まり)では空白が (n - i - 1) 個、星が (i + 1) 個必要になります。手順は以下の通りです。
- 空の文字列 s を用意します。
- i を 0 から n-1 まで繰り返します。
- s に「(n - i - 1) 個の空白」と「(i + 1) 個の星」を連結して追加します。
- i < n - 1 の場合のみ、行末に改行文字を追加します(最終行の後ろに余分な改行が入らないようにするためです)。
- 完成した文字列 s を返します。
実装例
それでは、実際のコードを見てみましょう。
class Solution:
def solve(self, n):
s = ""
for i in range(n):
s += " " * (n - i - 1) + "*" * (i + 1)
if(i < n - 1):
s += "\n"
return s
ob = Solution()
print(ob.solve(5))入力
5
出力
* ** *** **** *****
コードのポイント
- 文字列の掛け算: Pythonでは
"*" * 3のように文字列と整数を掛けることで、その文字列を指定回数繰り返せます。これにより空白や星の生成が簡潔に書けます。 - 改行の制御: 最後の行の後に改行を追加すると余分な空行ができてしまうため、
i < n - 1の条件で最終行を除外しています。 - 計算量: 各行で最大 n 文字の文字列を生成するため、時間計算量は O(n²)、出力全体を保持するため空間計算量も O(n²) となります。
このように、ループとPythonの文字列操作を組み合わせるだけで、階段状の三角形を簡単に出力できます。n の値を変えれば任意の段数の階段に対応できる汎用的な実装です。
-
Pythonとtkinterでストップウォッチを作成する方法【サンプルコード付き】
ストップウォッチは、ある出来事から次の出来事までの時間間隔を測定するための道具で、一般的に数秒〜数分程度の計測に使用されます。スポーツのタイム計測をはじめ、産業現場で熱流量や電流の変化を測るなど、幅広い場面で活用されています。 Pythonでは標準ライブラリのtkinterを使えば、GUIを備えたストップウォッチを簡単に自作できます。本記事で紹介するのは、スタート(Start)・ストップ(Stop)・リセット(Reset)の3つの操作ボタンを備えたウィンドウアプリケーションです。 ポイントは「after()」メソッド このプログラムの核となるのが、tkinterのウィジェットが持つafter
-
PythonでWordCloud(ワードクラウド)を作成する方法
このチュートリアルでは、テキストファイルとマスク画像を用意し、そこからワードクラウド(Word Cloud)を生成して png 形式の画像として保存するプログラムをPythonで作成します。 この処理を実装するには、以下のPythonライブラリが必要です。 ・matplotlib ・wordcloud ・numpy ・tkinter ・PIL ライブラリのセットアップ まず、必要なライブラリを次のコマンドでインストールします。 $ sudo pip3 install matplotlib $ sudo pip3 install wordcloud $ sudo apt-get install