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

如何确保Satellite类的实例名称不重复?

解决Satellite实例重名问题

要确保创建的Satellite实例不会重名,核心是在创建新卫星时先验证输入的名字是否已被现有实例使用,重复则要求用户重新输入。下面是修改后的实现方案:

修改后的代码

class Satellite:
    def __init__(self, name, lbs, speed):
        self.name = name.title()
        self.lbs = lbs
        self.speed = speed

lstSat = []
e = input("Would you like to create satellites? If yes, type O. If not, type another letter: ").lower()
i = 0
while e == "o":
    print(f"Info for satellite {i+1}")
    # 循环获取唯一名字
    while True:
        satellite_name = input("name: ")
        # 检查现有卫星中是否存在同名(统一用title格式避免大小写差异)
        duplicate_found = any(sat.name == satellite_name.title() for sat in lstSat)
        if not duplicate_found:
            break
        print(f"错误:名为'{satellite_name.title()}'的卫星已存在,请输入其他名称。")
    # 获取剩余参数
    satellite_lbs = int(input("lbs: "))
    satellite_speed = int(input("speed: "))
    # 创建实例并加入列表
    lstSat.append(Satellite(satellite_name, satellite_lbs, satellite_speed))
    i += 1
    e = input("Type O to create another satellite: ").lower()

关键修改说明

  • 重构类的职责:把用户输入逻辑从Satellite类的__init__中移出,让类仅负责存储卫星数据,代码结构更清晰,也方便后续扩展。
  • 添加名字唯一性校验:通过any()函数遍历已有的卫星列表,检查输入的名字(转换为统一的title格式)是否已存在。如果重复,持续提示用户输入新名字,直到得到唯一值。
  • 保持交互流程不变:整体的用户交互逻辑和原代码一致,只是在创建实例前增加了名字校验环节。

内容的提问来源于stack exchange,提问作者metal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:40:19