未分類

【Python】第2章第15回:制御構文を応用したアルゴリズム例

Pythonの制御構文(if文やループ構文など)を活用して、基本的なアルゴリズムを構築する方法を学びます。本記事では、制御構文の応用例や実践的なアルゴリズムの作成例を解説します。

0. 記事の概要

この記事を読むメリット

  • 制御構文の応用を理解:基本的な制御構文を使いこなせるようになります。
  • アルゴリズム構築のスキル:実践的なアルゴリズムを理解し、応用できるようになります。
  • プログラミングの応用力を強化:コードの書き方がシンプルで効率的になります。

この記事で学べること

  • 制御構文を用いた基本的なアルゴリズム
  • 制御構文を活用した複雑なアルゴリズムの構築方法
  • アルゴリズムをプログラムに応用するスキル

1. 制御構文の基本的な応用例

1.1 数値の合計を計算するアルゴリズム

Pythonの制御構文を使用して、数値の合計を計算するアルゴリズムを作成します。

# 数値の合計を計算
numbers = [1, 2, 3, 4, 5]
total = 0

for number in numbers:
    total += number

print(f"合計: {total}")
動作解説
  1. numbersリスト内の各要素をループで処理します。
  2. 各要素をtotalに加算していきます。
  3. 最終的に、リスト内の全ての数値を合計した結果が表示されます。

1.2 条件を用いた要素の抽出

条件を使用して、リスト内の特定の要素を抽出するアルゴリズムを作成します。

# 偶数のみを抽出
numbers = [1, 2, 3, 4, 5]
even_numbers = []

for number in numbers:
    if number % 2 == 0:
        even_numbers.append(number)

print(f"偶数: {even_numbers}")
動作解説
  1. if number % 2 == 0: numberが偶数の場合に条件を満たします。
  2. 条件を満たした要素をeven_numbersリストに追加します。

2. 制御構文を使った複雑なアルゴリズム

2.1 フィボナッチ数列を生成するアルゴリズム

フィボナッチ数列を生成するプログラムを作成します。

# フィボナッチ数列を生成
n = 10  # 生成する項数
fib_sequence = [0, 1]

for i in range(2, n):
    next_number = fib_sequence[i-1] + fib_sequence[i-2]
    fib_sequence.append(next_number)

print(f"フィボナッチ数列: {fib_sequence}")
動作解説
  1. 最初の2つの項(0, 1)をfib_sequenceに格納します。
  2. ループで次の項を計算し、リストに追加します。
  3. 指定された項数nに達するまで処理を繰り返します。

2.2 バブルソートアルゴリズム

制御構文を使用して、リストを昇順に並べ替えるバブルソートアルゴリズムを作成します。

# バブルソート
numbers = [64, 34, 25, 12, 22, 11, 90]

for i in range(len(numbers)):
    for j in range(0, len(numbers)-i-1):
        if numbers[j] > numbers[j+1]:
            numbers[j], numbers[j+1] = numbers[j+1], numbers[j]

print(f"ソート後: {numbers}")
動作解説
  1. 外側のループで未ソート部分を指定します。
  2. 内側のループで隣り合う要素を比較し、必要に応じて入れ替えます。
  3. 全ての要素がソートされるまで処理を繰り返します。

3. 実践例:制御構文を使った数値処理プログラム

数値リストから最大値と最小値を抽出するプログラムを作成します。

# 最大値と最小値を抽出
numbers = [10, 20, 5, 7, 15]

max_value = numbers[0]
min_value = numbers[0]

for number in numbers:
    if number > max_value:
        max_value = number
    if number < min_value:
        min_value = number

print(f"最大値: {max_value}, 最小値: {min_value}")
動作解説
  1. リストの最初の要素を初期値として設定します。
  2. 各要素をループで処理し、最大値・最小値を更新します。
  3. 処理が終了したら結果を出力します。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 数値リストから奇数のみを抽出して新しいリストを作成してください。
  2. リスト内の重複する要素を削除して、ユニークな値だけを含むリストを作成してください。

5. 練習問題の解答と解説

問1の解答例

# 奇数のみを抽出
numbers = [1, 2, 3, 4, 5]
odd_numbers = [number for number in numbers if number % 2 != 0]

print(f"奇数: {odd_numbers}")

問2の解答例

# ユニークな値を抽出
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))

print(f"ユニークな値: {unique_numbers}")

6. まとめ

Pythonの制御構文を応用することで、効率的なアルゴリズムを作成できます。基本を理解した上で、さらに高度な問題に挑戦してみましょう。