繁体   English   中英

Python for循环在第一个项目之后返回True

[英]Python for loop returns True after first item

def checker(a_list):
    for item in a_list:
        if str(item).isdigit():
            return True
        else:
            return False

我要检查的变量是包含变量的四个字符串的列表。 我计划将其用作“检查器”,以查看另一个函数的所有输入值是否仅包含数字。

问题:如果a_list中的第一项不是数字,则检查程序应返回False。 但是,如果第一个项目是数字,而列表中的任何其他项目都不是,则checker始终返回True。 这将导致下一个函数继续使用非数字变量,并导致错误。

我该如何做才能让我的函数在返回True之前检查整个列表? 或者,如果需要的话,我该如何创建一个新功能来满足我的需求? 谢谢

不要在循环中返回True。 在循环中,如果某项不是数字,则返回False。 循环完成后,将return True移至。

def checker(a_list):
    for item in a_list:
        if not str(item).isdigit():
            return False
    return True

所有 (和any )都有有用的内置函数来检查多个条件:

def checker(a_list):
    return all(str(item).isdigit() for item in a_list)

我假设您要检查a_list所有元素是否都返回True作为isdigit()的返回值。

在这种情况下,请使用all内置功能

all(str(s).isdigit() for s in a_list)

有关any all更多信息,请查看SO上的此链接: 任意所有

编辑:感谢@RoadRunner指出转换为str就像OP在他给出的示例中一样。

这应该检查列表中的所有项目是否都是数字

if all(str(x).isdigit() for x in a_list):
    return True
else:
    return False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM