为了账号安全,请及时绑定邮箱和手机立即绑定

不能直接这样调用函数吗,为什么呢

def format_name(s):
    return s[:1].upper() + s[1:].lower()

print format_name(['adam', 'LISA', 'barT'])

正在回答

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'


0 回复 有任何疑惑可以回复我~
#1

慕尼黑1183503 提问者

非常感谢知道怎么回事了谢谢哈
2018-07-10 回复 有任何疑惑可以回复我~

程序一句一句来理解他,首先你的函数实现中接收了一个list,然后就不对了,list中第一个元素也就是'adam'被大写,接着就不用说了吧。

0 回复 有任何疑惑可以回复我~
#1

薛定谔与猫

这个有错误了,list对象切片后就是list对象,直接报错,upper方法为字符串使用的方法
2019-03-17 回复 有任何疑惑可以回复我~

与其这样切片,还不如使用字符串的 title 方法

return s.title()
1 回复 有任何疑惑可以回复我~

注意看map函数是对list中每个元素逐一作用,你这样的话format直接作用于list是不行的,因为它的对象是字符串

1 回复 有任何疑惑可以回复我~
#1

慕尼黑1183503 提问者

看懂了,谢谢哈
2018-07-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

不能直接这样调用函数吗,为什么呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信