You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 01:37:25