为何调用capitalize函数时出现AttributeError: 'list'对象无该属性报错
AttributeError错误原因及修复方案
错误根源
你遇到的AttributeError: 'list' object has no attribute 'capitalize',核心原因很直白:
- 变量
names是一个列表(list),用来存储生成的所有名字字符串 capitalize()是Python中字符串(str)类型的专属方法,作用是把字符串首字母大写、其余字母小写- 列表对象根本没有这个方法,直接调用自然会报错
代码逻辑修正
从你的代码意图来看,你应该是想把每个生成的小写名字改成首字母大写的格式,再拼接输出。把出错的那行代码替换成以下任意一种写法都可以:
写法1:用列表推导式批量处理每个名字
sentence = [name.capitalize() for name in names]
写法2:在生成名字时直接处理(更高效)
在把名字加入列表前就完成首字母大写,修改循环内的append语句:
names.append(name.capitalize())
这样后面就不需要再处理names,直接用print(" ".join(names), end=".")即可。
另外注意你的代码注释写的是“joined by a comma”(用逗号分隔),但实际用的是空格" ",如果需要逗号可以改成", "。
内容的提问来源于stack exchange,提问作者Oliver U.
相关产品推荐
相关产品推荐

