簡體   English   中英

'AttributeError: 'tuple' 對象沒有屬性 'lower'' - 為什么 '.lower()' 方法在 Python 中不起作用?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM