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

数値nが「Weird(奇妙)」かどうかを判定するPythonプログラム

問題概要

整数nが与えられたとき、その数値が「Weird(奇妙)」であるかどうかを判定するPythonプログラムを作成します。この問題における判定条件は以下のとおりです。

  • 数値が奇数である場合 → 「Weird」
  • 数値が偶数で、範囲2〜5にある場合 → 「Not Weird」
  • 数値が偶数で、範囲6〜20にある場合 → 「Weird」
  • 数値が偶数で、20より大きい場合 → 「Not Weird」

例えば、入力がn = 18の場合、18は偶数であり範囲6〜20に含まれるため、出力は「Weird」になります。

解き方のアプローチ

この問題を解くには、以下の手順で条件分岐を行います。

  1. nが奇数であれば、「Weird」を返します。
  2. nが偶数で、1より大きく6未満(つまり2〜5の範囲)、または20より大きい場合は、「Not Weird」を返します。
  3. nが偶数で、6より大きく21未満(つまり6〜20の範囲)の場合は、「Weird」を返します。

実装例

それでは、実際のPythonコードを見てみましょう。

def solve(n):
    if n & 1:
        return "Weird"
    elif (n > 1 and n < 6) or n > 20:
        return "Not Weird"
    elif n > 6 and n < 21:
        return "Weird"

n = 18
print(solve(n))

入力

18

出力

Weird

コードのポイント

n & 1はビット演算を利用した奇数判定のテクニックです。整数の最下位ビットが1であれば奇数、0であれば偶数となるため、シンプルに真偽を判定できます。また、最初に奇数判定を行うことで、以降のelifブロックでは偶数の場合だけを考えればよくなり、ロジックが明快になります。条件分岐の順序を意識することは、この種の判定問題をすっきりと書くうえで重要なポイントです。

  1. Pythonで素数を判定するプログラムの書き方を徹底解説

    はじめに この記事では、「与えられた数値が素数かどうかを判定する」という問題に対する解決策を、Pythonのコード例とともにわかりやすく解説します。 問題の概要 問題設定:ある数値が与えられたとき、その数が素数であるかどうかを判定するプログラムを作成します。 まず「素数」の定義をおさらいしましょう。1より大きい正の整数のうち、1とその数自身以外に約数を持たない数を素数(そすう)と呼びます。たとえば、2、3、5、7などはそれ以外の約数を持たないため、素数です。 プログラムの考え方 今回作成するプログラムでは、入力された数値が素数かどうかを以下の手順で判定します。 1以下の数値は素数ではない

  2. Pythonでアームストロング数を判定するプログラムの書き方

    この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す