Python で数値が奇数か偶数かを確認する

モジュロ演算子 (%) を使用して、数値を 2 で割ったときの余りをテストします。0 の余りは偶数を意味します。そうでなければ、それは奇妙です。以下は、単一の数値とコレクションの実用的なオプションと、特殊なケースに関するメモです。

方法 1: モジュロ演算子 (%) を使用する

これが機能する理由:パリティは 2 で割り切れるかどうかで定義されます。n % 2と評価される0偶数の整数の場合、1奇数の整数の場合。

ステップ 1:剰余を使用して「偶数」または「奇数」を返す関数を定義します。

def check_odd_even(n: int) -> str:
    return "Even" if n % 2 == 0 else "Odd"

ステップ 2:サンプル値を使用して関数を呼び出して動作を確認します。

print(check_odd_even(2))    # Even
print(check_odd_even(7))    # Odd
print(check_odd_even(0))    # Even
print(check_odd_even(-3))   # Odd

ステップ 3:ユーザー入力を受け入れ、チェックする前にそれを整数に変換します。

num = int(input("Enter an integer: "))
print(check_odd_even(num))

ヒント: ゼロは偶数です。負の整数は、正の整数と同じパリティ ルールに従います。

方法 2: 1 とのビット単位の AND を使用する

これが機能する理由:整数の最下位ビット (LSB) は次のとおりです。1奇数の場合と0偶数の場合。ビットごとの AND (&) を使用してそのビットを読み取ることができます。

ステップ 1:最下位ビットをテストしてパリティを決定します。

def is_even(n: int) -> bool:
    return (n & 1) == 0

print("Even" if is_even(24) else "Odd")  # Even
print("Even" if is_even(7) else "Odd")   # Odd

注: ビットごとのチェックは整数に対して行われます。 float を受け取った場合は、次のように変換します。int()切り詰めるか、最初に入力タイプを検証することが合理的である場合にのみ。

方法 3: リストまたはタプル全体のパリティをチェックする

これが役立つ理由:コレクションをスキャンする際、短絡評価により不必要な作業が回避されます。組み込みの any() は、True 値が見つかるとすぐに戻ります。

ステップ 1:ジェネレーター式を使用して、値が奇数であるかどうかを検出します。

nums = [1, 2, 3, 4, 5]
has_odd = any(n % 2 == 1 for n in nums)
print(has_odd)  # True

ステップ 2:すべての値が均等に使用されているかどうかを確認しますall().

all_even = all(n % 2 == 0 for n in nums)
print(all_even)  # False

ステップ 3:各要素に奇数/偶数のラベルを付けます。マップを使用するとイテレータが返されるため、大規模な入力に対してメモリに優しい可能性があります。

labels = map(lambda n: f"{n} {'Even' if n % 2 == 0 else 'Odd'}", nums)
print("n".join(labels))
# 1 Odd
# 2 Even
# 3 Odd
# 4 Even
# 5 Odd

よくある落とし穴とヒント:

  • パリティは整数に適用されます。チェックする前に、非整数の処理方法 (拒否または変換) を決定します。
  • シンプルに読みやすくするために、n % 2。整数の低レベルのパリティ チェックの場合、n & 1も有効です。
  • ジェネレーター式を使用するany()またはall()大きな反復可能範囲にわたるスキャンを短絡します。

Python でパリティをすばやく判断するために必要なのはこれだけです。% 2明確にするために、または使用します& 1ビットレベルのチェックのために、any()/all()コレクションを効率的にスキャンします。

さらに読む:デルの保証チェック: 2025 年のデルのノートパソコンの保証ステータスを確認する方法

Related Posts