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

指定した範囲内のすべての奇数を出力するPythonプログラム

この記事では、与えられた問題を解決するための解法とアプローチについて詳しく解説します。

問題文

ある範囲(開始値と終了値)が与えられたとき、その範囲内に存在するすべての奇数を出力します。

まずは、最も基本的な総当たり(ブルートフォース)のアプローチから見ていきましょう。

基本的なアプローチ

ここでは、rangeベースのforループを使用して、入力区間内のすべての整数を順番に取得します。

その後、「2で割った余りが0以外」という条件式を適用することで偶数を除外し、奇数だけを抽出します。

このアプローチの計算量はO(n)であり、各要素の比較には定数時間しかかかりません。

それでは、実際の実装を見てみましょう。

実装例

start, end = 10, 29
# 反復処理
for num in range(start, end + 1):
    # 奇数かどうかを判定
    if num % 2 != 0:
        print(num, end=" ")

出力

11 13 15 17 19 21 23 25 27 29

すべての変数と関数は、下図のようにグローバルフレーム内で宣言されています。

指定した範囲内のすべての奇数を出力するPythonプログラム

効率化のポイント:rangeのステップを活用

range関数の第3引数(ステップ)を利用すると、さらに効率的な実装が可能です。開始値を奇数に調整し、ステップを2に設定すれば、偶数を判定する条件分岐そのものが不要になり、ループの反復回数も約半分に削減できます。

start, end = 10, 29
# 開始値が偶数の場合は隣の奇数へ調整
if start % 2 == 0:
    start += 1
# ステップ2で奇数のみを走査
for num in range(start, end + 1, 2):
    print(num, end=" ")

まとめ

この記事では、指定された範囲内の奇数を出力する2つのアプローチについて学びました。条件分岐を使うシンプルな方法と、rangeのステップ引数を活用して処理を高速化する方法のどちらも、状況に応じて使い分けることで、より読みやすく効率的なコードを書くことができます。

  1. 指定された文字列のすべての順列を出力するPythonプログラム

    本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +

  2. Pythonでフィボナッチ数を求める方法:再帰と動的計画法の2つのアプローチを徹底解説

    本記事では、「n番目のフィボナッチ数を計算する」という問題に対する解決策と考え方を、2つの異なるアプローチ(再帰的手法と動的計画法)のコード例とともにわかりやすく解説します。 問題の概要 今回の課題は、n番目のフィボナッチ数を求めることです。 フィボナッチ数列 Fn は、次の漸化式によって定義されます。 Fn = Fn-1 + Fn-2 初期値(シード値)は以下の通りです。 F0 = 0、F1 = 1 この問題を解くには、主に次の2つの方法があります。 再帰的なアプローチ 動的計画法によるアプローチ アプローチ1:再帰的な手法 まずは、定義そのものをそのままコードに反映させた再帰的な実