课程
/后端开发
/Python
/python进阶
def format_name(s): return s[:1].upper() + s[1:].lower()
print format_name(['adam', 'LISA', 'barT'])
2018-07-09
源自:python进阶 2-4
正在回答
调用函数是没错的,可以这样用
问题出在 s[:1].upper() + s[1:].lower() 上
s 是一个 list,对 list 进行切片,结果返回的是一个 list
而upper(), lower() 是字符串的方法
File "<pyshell#3>", line 2, in format_name return s[:1].upper() + s[1:].lower() AttributeError: 'list' object has no attribute 'upper'
慕尼黑1183503 提问者
程序一句一句来理解他,首先你的函数实现中接收了一个list,然后就不对了,list中第一个元素也就是'adam'被大写,接着就不用说了吧。
薛定谔与猫
与其这样切片,还不如使用字符串的 title 方法
return s.title()
注意看map函数是对list中每个元素逐一作用,你这样的话format直接作用于list是不行的,因为它的对象是字符串
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计