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

请问为什么首字母不受影响?

def firstCharUpper(s):
    for i in s:
        if i==s[0]:
            i=i.upper()
        else:
            i=i
    return s

可以成功运行但首字母均没有变大写?这是为什么呢?

正在回答

11 回答

http://img1.sycdn.imooc.com//5f28df5100015eb108370143.jpg

看报错信息,应该是因为字符串是个常量,不接受对他的直接更改,在其他编程语言像c里面就有这说法。所以你能做的是借用字符串重新生成一个字符串而不能对原字符串做更改。至于对整个字符串直接用upper()可以运行,应该是这个函数的机制就是返回一个重新生成的字符串。

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

由于tuple 内各元素是不可更改的,所以本题中的更改大小写,需要生成另一个元组,在生成过程中进行修改。

所以s[0]=s[0:1].upper 是编译不过的。

可以用 s[0:1].upper+s[1:] 来生成新的元组,并对首字母进行了修改。

0 回复 有任何疑惑可以回复我~
def firstCharUpper(s):
    return str.capitalize(s[:])
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
结果是
Hello
Sunday
September
你参考一下


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

对i操作,s没受影响

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

凡是要遍历的,全都不 Pythonist

def firstCharUpper(s):    
    return '{}{}'.format(s[0].upper(),s[1:])
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')

在Python3:

def firstCharUpper(s):   
    return f'{s[0].upper()}{s[1:]}

格式输出不香吗???哈哈

0 回复 有任何疑惑可以回复我~
经过测试,楼主你可以按下面的来写
def firstCharUpper(s):
    for i in s:
        if i==s[0]:
            s=s[0].upper()+s[1:]
        else:
            i=i
    return s


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

前面有提到过函数带进去的是tuple,所以s[0]=i.upper()也改变不了,可以list(s)改成可更改数据。但是输出变成

['H', 'e', 'l', 'l', 'o'],希望有可以回答如何去掉逗号和分号的。


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

枫林天涯

可以遍历list,拼接就可以了 k=list(s) for i in k: y+=k[i] return y
2019-08-13 回复 有任何疑惑可以回复我~

def firstCharUpper(s):

    return s[:1].upper()+s[1:]


print firstCharUpper('hello')

print firstCharUpper('sunday')

print firstCharUpper('september')

参考一下代码。


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

def firstCharUpper(s):

    return s[0:1].upper()+s[1:]

print firstCharUpper('hello')

print firstCharUpper('sunday')

print firstCharUpper('september')

你可以参考一下


因为你的在

if i==s[0]:
            i=i.upper()

并没有对 s串进行更新

最后的return s 依旧是输入进去的s串

0 回复 有任何疑惑可以回复我~
def firstCharUpper(s):
    return s[0:1].upper()+s[1:]
    
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')

你可以参考一下


因为你的在

if i==s[0]:
            i=i.upper()

并没有对 s串进行更新

你应该改成s[0]=i.upper()

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

the_sky_line

这个错了
2019-07-26 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
初识Python
  • 参与学习       758626    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

请问为什么首字母不受影响?

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