AttributeError: 'tuple'对象无'lower'属性 Python中.lower()方法失效原因求解
Python代码报错原因解析
核心报错原因
lower()是Python字符串类型的专属方法,你代码中定义的bird_names是元组类型,元组没有内置的lower()方法,直接对元组调用该方法会抛出AttributeError属性错误,这就是你代码报错的根本原因。
逻辑误区说明
你想实现忽略大小写的鸟名匹配,不能直接对存储多个鸟名字符串的元组统一调用lower(),需要先把元组内的每一个字符串元素单独转换为小写,再做成员判断。
修复方案
你可以提前把所有鸟名统一转换为小写存储,再和输入的小写猜测值做匹配,修改后的代码如下:
# bird names list bird_names = ("Parrot", "Owl", "Pigeon", "Crow", "Peacock", "Hen") # 提前把所有鸟名转小写,方便后续匹配 lower_bird_names = tuple(name.lower() for name in bird_names) # bird guess bird_guess = input("Enter a bird name (Guess 1): ") # nested conditions starts here if bird_guess.lower() in lower_bird_names: print("Yes, 1st try!") else: bird_guess = input("Enter a bird name (Guess 2): ") if bird_guess.lower() in lower_bird_names: print("Yes, 2nd try!") else: bird_guess = input("Enter a bird name (Guess 3): ") if bird_guess.lower() in lower_bird_names: print("Yes, 3rd try!") else: print("Sorry, out of tries.")
内容的提问来源于stack exchange,提问作者Jabri Juhinin
相关产品推荐
相关产品推荐

