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

函数参数输入问题

def for_name(s):
	for i in s:
	    return '%s%s' %(i[0].upper(),i[1:].lower()) 
print map(for_name, ['adam', 'LISA', 'barT']
输出为:
['A', 'L', 'B']
首字母大写、后面的小写没输出、

def for_name(s):
	for i in s:
	    a='%s%s' %(i[0].upper(),i[1:].lower()) 
	return a
print map(for_name, ['adam', 'LISA', 'barT'])
输出为:
['M', 'A', 'T']
将后面的字母大写了输出了、


正在回答

3 回答

同样遇到这个问题,请问你们解决了吗

gkwltunrnszuzfwfjeoexjtyhfskkwvwhozirneupnjdvtxaeatwhsgv

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

def format_name(s):

    return s.title()

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


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

插入print输出s后找到问题、原因是函数参数传入后变成了字符串、

def for_name(s):
	print s
	for i in s:
		print s
		return '%s' %(i[0].upper()+i[1:].lower()) 	 
print map(for_name, ['adam', 'LISA', 'barT'])

输出:

adam

adam

LISA

LISA

barT

barT

['A', 'L', 'B']

修改代码后正常、解决了问题1、

def for_name(s):
	s=[s]
	for i in s:
		return '%s' %(i[0].upper()+i[1:].lower()) 	 
print map(for_name, ['adam', 'LISA', 'barT'])

问题2:为什么最后一个字符会变大写呢??

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

qq__6596

跟你return放在for循环内、外有影响吧。 放里面的adam循环到a之后就会变成A, 然后就循环LISA了。 放循环外会循环到每个字符串的最后一个字母才返回对应的大写字母
2017-04-13 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

函数参数输入问题

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