4 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
您將 'purplecat' 作為字符串傳遞,因此當(dāng)循環(huán)通過時,它會將字符串的每個元素視為要迭代的一件事。嘗試將其放入單元素列表中:
validate_users(['purplecat'])

TA貢獻1795條經(jīng)驗 獲得超7個贊
問題是你在這里迭代一個字符串:for user in users
但是users == "purplecat"
。
嘗試這樣調(diào)用您的函數(shù):validate_users(["purplecat"])

TA貢獻1852條經(jīng)驗 獲得超1個贊
在此示例中,您將字符串“purplecat”作為函數(shù) validate_users 的參數(shù)傳遞。所以,用戶=“紫貓”
在 validate_users 函數(shù)中,您使用了迭代參數(shù)用戶的 for 循環(huán)。在python中,如果對字符串類型的變量使用for循環(huán),那么for循環(huán)會遍歷字符串中的所有字符。
如果你想得到像“purplecat is valid”這樣的輸出,那么你需要使用“validate_users(["purplecat"])”。
在這種情況下,您傳遞了一個字符串列表,因此 validate_users 中的 for 循環(huán)將迭代列表中的所有字符串(在這種情況下,它只會迭代一次,因為列表只有 1 個元素)。

TA貢獻1873條經(jīng)驗 獲得超9個贊
正如其他人所指出的那樣,如果您想制作一個包含字符串的單元素列表,您可以使用字符串對象[my_string]在哪里,例如。my_string"purplecat"
如果在參數(shù)中傳遞字符串,則有幾個備選方案可以讓您的函數(shù)更優(yōu)雅地執(zhí)行操作users。
一種選擇是接受字符串作為列表的替代,users如果變量不是列表,則將其重新分配給單元素列表:
def validate_users(users):
if not isinstance(users, list):
users = [users]
# then carry on as before
另一種選擇是以更可預(yù)測的方式失?。?/p>
def validate_users(users):
if not isinstance(users, list):
raise ValueError("users must be a list")
# then carry on as before
然后,您可以編寫函數(shù)的其余部分,而不必?fù)?dān)心是否向您傳遞了列表以外的內(nèi)容。在后一種情況下,由調(diào)用者確保它傳入列表或處理任何ValueError.
為簡單起見,我在這里不考慮元組,盡管您可能希望接受元組作為列表的替代方案,例如
if not isinstance(users, list):
你可以有
if not isinstance(users, (list, tuple)):
添加回答
舉報