首页 > 解决方案 > Python - 只有奇数

问题描述

我需要找出是否n奇数组成。如果一个数字由奇数组成,我应该return True,否则我应该return False

n = 1357应该返回True,因为所有四个值都是奇数。 n = 1356应该返回False,因为6是偶数。

我将如何解决这个问题?我的第一步包括遍历“字符串化”数字,但后来我觉得卡住了,因为我无法使用模数来检查数字是偶数还是奇数。

标签: python-3.7

解决方案


如果从集合中减去奇数集合str(n)并且结果为空,那么它都是奇数:

>>> def odd(n):
...   return set(str(n))-set('13579')==set()
...
>>> odd(123)
False
>>> odd(113355)
True

与以数字方式检查每个数字相比,它也很快:

C:\>py -m timeit -s "odd=set('13579');n=111333555777999" "all([int(x)%2 for x in str(n)])"
50000 loops, best of 5: 4.69 usec per loop

C:\>py -m timeit -s "odd=set('13579');n=111333555777999" set(str(n))-odd==set()"
200000 loops, best of 5: 1.36 usec per loop

推荐阅读