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

Python带格式输入与对象属性匹配失败问题求助

我来帮你搞定这个问题,咱们先看看第一段代码为啥跑不起来,再给你修复方案~

问题根源分析

第一段代码处理Input: blue, 'message'这类输入时失效,主要是两个细节没处理好:

  1. 未清理输入中的多余空格:
    当你执行inp.split(':')[1]时,得到的是" blue, 'message'"(注意开头有空格),直接拆分逗号后第一个元素是" blue"(带前导空格),而你的Ball对象的color是'blue'(无空格),两者自然匹配不上。
  2. 未处理字符串中的引号干扰:
    拆分后第二个元素是" 'message'",虽然这里不影响颜色匹配,但如果后续要处理消息字段,引号会导致内容不规整。

修复后的代码

class Ball(object):
    def __init__(self, color, size):
        self.color = color
        self.size = size
b = []
b.append(Ball('red', '3'))
b.append(Ball('blue', '4'))
b.append(Ball('green', '5'))
b.append(Ball('grey', '6'))
b.append(Ball('black', '7'))
b.append(Ball('purple', '8'))

inp = input()
# 提取冒号后的内容并清除首尾空格
temp_inp = inp.split(':')[1].strip()
# 拆分出颜色部分:取逗号前的内容,清除空格和可能的引号
target_color = temp_inp.split(',')[0].strip().strip("'\"").lower()

for each in b:
    # 把Ball的color也转小写,兼容大小写输入(比如Blue、BLUE都能匹配)
    if target_color == each.color.lower():
        print(each.size)

关键修改说明

  • 用.strip()清理冒号后内容的首尾空格,彻底消除前导空格的干扰;
  • 拆分逗号后只取第一个元素作为颜色,忽略后面的'message'内容,符合你的需求;
  • 增加.strip("'\"")处理颜色可能带的单/双引号(如果输入是Input: 'blue', 'message'也能正常匹配);
  • 匹配时将Ball的color也转小写,让输入更灵活(比如输入Blue也能找到对应球)。

现在测试输入Input: blue, 'message',代码会正确提取出blue,匹配到对应的Ball对象,输出4啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:13:45