我想用python编写一个函数,如果所有数字都是偶数,它将返回true

我想用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

函数是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
    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