簡體   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