如何在不使用模数或库的情况下检查 python 中的数字是否为奇数?
How would I check if a number is odd in python without using modulo or a library?
我正在尝试确定 python 中的数字是奇数还是偶数,而不使用模数 %
或任何库,甚至不使用按位计算(&
和 |
).我相信这与提升 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.
我正在尝试确定 python 中的数字是奇数还是偶数,而不使用模数 %
或任何库,甚至不使用按位计算(&
和 |
).我相信这与提升 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.