我想用python编写一个函数,如果所有数字都是偶数,它将返回true
函数是all_,即使在其中输入int并返回bool。如果所有数字都是偶数,则返回true。e、 g.所有偶数(2224)为真,所有偶数(1362)为假 我写了代码,但它不能正常工作 这就是我所拥有的:我想用python编写一个函数,如果所有数字都是偶数,它将返回true,python,for-loop,Python,For Loop,函数是all_,即使在其中输入int并返回bool。如果所有数字都是偶数,则返回true。e、 g.所有偶数(2224)为真,所有偶数(1362)为假 我写了代码,但它不能正常工作 这就是我所拥有的: def is_very_even(num: int) -> bool: even = False strnum = str(num) for ch in strnum: if int(ch)% 2==0: even = True
def is_very_even(num: int) -> bool:
even = False
strnum = str(num)
for ch in strnum:
if int(ch)% 2==0:
even = True
return even
即使num有一个偶数num,而其余的num是奇数,代码也会给出true,例如all_偶数(231)为true,这应该是false。谁能告诉我它怎么了。你正在检查所有的数字是否都是偶数。所以首先假设它是真的,所有的数字都是偶数,并设置为
偶数=true
。然后检查字符串中是否有奇数。如果存在,则设置偶数=False
现在,如果字符串中有奇数,偶数
将是假
,因此我们可以验证它
def is_very_even(num: int) -> bool:
even = True
strnum = str(num)
for ch in strnum:
if int(ch)% 2 !=0:
even = False
return even
此代码也可以像这样即兴编写。如果我们发现了一个奇数,我们不需要继续检查。我们可以立即返回false。如果所有的数字都被检验,但没有一个返回false,那么它必须是一个全偶数字符串
def is_very_even(num: int) -> bool:
for ch in str(num):
if int(ch)% 2 !=0:
return False
return True
我会这样解决它:
def is_very_even(s) -> bool:
return all(int(x) % 2 == 0 for x in str(s))
这会将每个字符转换为整数,并检查它是否与模偶数。这是在所谓的生成器表达式中处理的
然后,我们使用内置的all
方法检查生成器是否只提供True
值。您可以使用递归方法(不转换为字符串):
输出:
allEven(246) # True
allEven(123) # False
请注意,函数的问题是,一旦遇到偶数数字,就将偶数
设置为真
。如果之后有一个奇数,则偶数
变量保持真
。这将告诉您“至少一个”数字是偶数,而不是它们都是偶数。我认为您需要将“s”改为“num”,对吗?即使这样,Python 3.8也会出现以下错误:TypeError:“int”对象不是iterableThank您的提示。我没有正确地检查我的解决方案。我想现在它会解决你的问题:)
allEven(246) # True
allEven(123) # False