![](/img/trans.png)
[英]Python AttributeError: 'tuple' object has no attribute 'lower'
[英]'AttributeError: 'tuple' object has no attribute 'lower'' - Why doesn't the '.lower()' method doesn't work here in Python?
我目前正在學習 python 並在模塊中做練習。 我之前已經學習了如何刪除字符串中的任何大小寫字母,因此用戶以后可以更輕松地使用它。 但似乎當我將 ' XXX.lower() ' 方法應用於我的代碼時,它不起作用。 它在沒有 '.lower()' 方法的情況下工作得很好,但我真的想知道為什么它不起作用? 這是我的代碼:
# bird names list
bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen")
# bird guess
bird_guess = input("Enter a bird name (Guess 1): ")
# nested conditions starts here
if bird_guess.lower() in bird_names.lower():
print("Yes, 1st try!")
else:
bird_guess = input("Enter a bird name (Guess 2): ")
if bird_guess.lower() in bird_names.lower():
print("Yes, 2nd try!")
else:
bird_guess = input("Enter a bird name (Guess 3): ")
if bird_guess.lower() in bird_names.lower():
print("Yes, 3rd try!")
else:
print("Sorry, out of tries.")
bird_names
是一個元組, .lower()
應該在字符串上調用。 您可能需要考慮類似
bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen")
bird_names = [name.lower() for name in bird_names]
然后你可以使用
if bird_guess.lower() in bird_names:
....
因為鳥名是一個元組對象而不是一個字符串。 為了使其工作,您可以做的是使用列表理解更新或覆蓋現有元組或生成新變量。 您可以在條件中使用新列表或元組,而不是bird_names.lower()
。
bird_names_lower = [bird.lower() for bird in bird_names]
bird_names
是一個列表對象.lower()
是一個字符串函數也許這樣的事情可以幫助你:
if bird_guess.lower() in [word.lower() for word in bird_names]:
您正在嘗試在元組bird_names
上使用.lower()
,這是一個字符串方法。 如果您希望bird_names
的字符串為小寫,請將它們硬編碼為小寫或使用元組理解之類的東西修改它們。
bird_names = tuple(x.lower() for x in bird_names)
然后,您可以測試bird_guess.lower()
中的bird_names
成員資格
if bird_guess.lower() in bird_names:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.