'AttributeError: 'tuple' 对象没有属性 'lower'' - 为什么 '.lower()' 方法在 Python 中不起作用?

Jab*_*nin 3 python tuples case-sensitive

我目前正在学习 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.")
Run Code Online (Sandbox Code Playgroud)

小智 5

bird_names是一个元组,.lower()应该在字符串上调用。你可能想考虑类似的事情

bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen")
bird_names = [name.lower() for name in bird_names]
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

if bird_guess.lower() in bird_names:
    ....
Run Code Online (Sandbox Code Playgroud)