[英]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.