如何在不使用模数或库的情况下检查 python 中的数字是否为奇数?

How would I check if a number is odd in python without using modulo or a library?

我正在尝试确定 中的数字是奇数还是偶数,而不使用模数 % 或任何库,甚至不使用按位计算(&|).我相信这与提升 n 某物的力量有关,但这就是我所拥有的:

def isOdd(num):
    return num**2 > 0

这显然行不通。

你可以对-1进行n次方,看看这个数是1还是-1:

def isOdd(num):
    if type(num) not in [int, long]:
        return False
    if ((-1)**num) == 1: 
        return False 
    return True 

因此:

>>> isOdd(5.2)
False
>>> isOdd(5)
True
>>> isOdd(6)
False

或者,您可以检查数字是否为浮点数,如果不是,则查看最后一位数字是否为奇数:

def isOdd(num):
    if type(num) not in [int, long]:
        return False
    if str(num)[-1] in "13579":
        return True
    return False

您还可以检查 num/2 是浮点数还是整数:

def isOdd(num): 
     return not (num/2.0).is_integer() and type(num) in [int, long]

>>> isOdd(5)
True
>>> isOdd(-3.4)
False
>>> isOdd(4)
False
def isOdd(num):
    return (num & 1) == 1

使用按位与。

编辑:python3 中没有按位:

def isOdd(num):
    return (num / 2) != (num // 2)

一个是真除法 (5/2 = 2.5) 另一个是自然除法 (5/2 = 2)。

您可以使用:

def isOdd(x):
    return x - 2 * (x // 2) == 1

或(开玩笑)

import math
def isOdd(x):
   return math.cos(x * math.pi) < 0

另外两种方法:

def is_odd_1(x):
    return int(x / 2.) != x / 2.

def is_odd_2(x):
    return x // 2 != x / 2.