def checker(a_list):
for item in a_list:
if str(item).isdigit():
return True
else:
return False
我用于检查器的变量是包含四个包含变量的字符串的列表。 我打算用它作为检查工具'查看另一个函数的所有输入值是否仅包含数字。
问题:如果a_list中的第一项不是数字,则检查器返回False。但是,如果第一个项目是数字,而列表中的任何其他项目都不是,则检查器仍会返回True。这会导致下一个函数继续使用非数字变量并导致错误。
我如何制作它让我的函数在返回True之前检查整个列表? 或者如果需要,我如何创建一个能够满足我所需要的新功能? 感谢
答案 0 :(得分:4)
不要在循环中返回True。如果项目不是数字,则在循环中返回False。循环完成后移动return True
。
def checker(a_list):
for item in a_list:
if not str(item).isdigit():
return False
return True
答案 1 :(得分:3)
有用于检查多个条件的内置函数JSON spec(和 val v: ListMap[String, Int] = ListMap("c" -> 1, "AaAa" -> 2, "BBBB" -> 3, "AaBB" -> 4, "BBAa" -> 5)
val jsonBad = JsonMethods.compact(Extraction.decompose(v))
val bad = Extraction.extract[Map[String, Int]](JsonMethods.parse(jsonBad))
val jsonGood = JsonMethods.compact(Extraction.decompose(v.toList))
val good = ListMap(Extraction.extract[List[(String, Int)]](JsonMethods.parse(jsonGood)): _*)
println(s"'$jsonBad' => $bad")
println(s"'$jsonGood' => $good")
):
any
答案 2 :(得分:1)
我假设您要检查a_list
的所有元素是否返回True
作为isdigit()
的返回值。
在这种情况下,请使用内置函数all
all(str(s).isdigit() for s in a_list)
有关any
和all
的详情,请查看SO上的此链接:any and all explained
编辑:感谢@RoadRunner指出转换为str,因为OP在它的示例中给出了它。
答案 3 :(得分:0)
这应检查列表中的所有项目是否为数字
if all(str(x).isdigit() for x in a_list):
return True
else:
return False