Python TypeError求助:字符串索引必须为整数而非字符串
解决Python控制台彩色文本函数的TypeError问题
错误原因分析
你的代码对字典的操作逻辑完全搞反了:
- 第一行
colours=coloursAvailable[colour]会把colours变成对应颜色的字符串(比如传入"COGREEN"时,colours就是'\33[42m'),而非保留字典结构。后续用colours[colour]索引字符串时,因为字符串仅支持整数索引,自然触发TypeError。 - 颜色存在性检查逻辑错误:应该判断
colour是否在coloursAvailable的键列表中,而非检查它是否在已经变成字符串的colours里。
修正后的代码
coloursAvailable={ "CCLEAR": '\033[0m', "COGREEN": '\033[42m' } def colourDyn(text, colour): # 先校验颜色是否在支持列表中 if colour not in coloursAvailable: print('colour undefined or not available') return text # 校验不通过时返回原文本,避免后续报错 print("function passed colour check") # 直接从原字典中取颜色值拼接文本 return f'{coloursAvailable[colour]}{text}{coloursAvailable["CCLEAR"]}'
关键改动说明
- 删除错误的
colours=coloursAvailable[colour]赋值,直接操作原字典coloursAvailable - 将颜色校验逻辑修正为
colour not in coloursAvailable,正确判断传入的颜色是否合法 - 返回语句中直接从字典取对应值,避免对字符串进行错误索引操作
- 增加校验失败时的返回逻辑,防止程序继续执行出错
内容的提问来源于stack exchange,提问作者ViridianZe
相关产品推荐
相关产品推荐

