2

我目前正在学习 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.")
4

3 回答 3

5

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:
    ....
于 2021-11-10T08:13:26.117 回答
2

因为鸟名是一个元组对象而不是一个字符串。为了使它起作用,您可以做的是使用列表理解更新或覆盖现有元组或生成新变量。而不是bird_names.lower()您可以在条件中使用新列表或元组。

bird_names_lower = [bird.lower() for bird in bird_names]
于 2021-11-10T08:14:14.040 回答
0
  • bird_names是一个列表对象
  • .lower()是一个字符串函数

也许这样的事情可以帮助你:

if bird_guess.lower() in [word.lower() for word in bird_names]:
于 2021-11-10T08:15:11.223 回答