Python类中检查指定名称是否存在并输出结果的问题咨询
问题修复方案
首先,你的代码存在几个关键问题导致无法正常运行,下面逐一说明并给出修正后的代码:
原代码的问题
- 无法遍历单个Person实例:你尝试用
for i in p1遍历单个Person对象,但Python默认不会让自定义类的实例成为可迭代对象,这会直接抛出TypeError。 - 布尔值拼写错误:Python中布尔值是大写的
True,而非小写的true,小写true会被视为未定义的变量。 - 逻辑冗余:如果只需要检查单个实例的名称,完全不需要循环,直接对比即可。
- 输入提示拼写错误:
inter name应为enter name。
修正后的代码(单个实例场景)
如果只需要检查单个Person实例的名称,直接对比即可:
class Person: def __init__(self, name, age): self.name = name self.age = age p1 = Person("John", 36) print(p1.name) print(p1.age) name = input("enter name ") # 检查输入的名称是否是实例名称的子串(完全匹配可改为 ==) if name in p1.name: print(True)
扩展:多个实例场景
如果后续需要检查多个Person实例的名称,可以将实例存入列表后遍历:
class Person: def __init__(self, name, age): self.name = name self.age = age # 将多个实例存入列表 people_list = [ Person("John", 36), Person("Alice", 28), Person("Bob", 42) ] name = input("enter name ") # 遍历列表检查每个实例 for person in people_list: if name in person.name: print(True) break # 找到匹配后停止遍历 else: # 循环正常结束(未找到匹配)时执行 print(False)
内容的提问来源于stack exchange,提问作者Worldaged neworder
相关产品推荐
相关产品推荐

