课程
/后端开发
/Python
/初识Python
def firstCharUpper(s): for i in s: if i==s[0]: i=i.upper() else: i=i return s
可以成功运行但首字母均没有变大写?这是为什么呢?
2019-07-26
源自:初识Python 8-3
正在回答
看报错信息,应该是因为字符串是个常量,不接受对他的直接更改,在其他编程语言像c里面就有这说法。所以你能做的是借用字符串重新生成一个字符串而不能对原字符串做更改。至于对整个字符串直接用upper()可以运行,应该是这个函数的机制就是返回一个重新生成的字符串。
由于tuple 内各元素是不可更改的,所以本题中的更改大小写,需要生成另一个元组,在生成过程中进行修改。
所以s[0]=s[0:1].upper 是编译不过的。
可以用 s[0:1].upper+s[1:] 来生成新的元组,并对首字母进行了修改。
def firstCharUpper(s): return str.capitalize(s[:]) print firstCharUpper('hello') print firstCharUpper('sunday') print firstCharUpper('september') 结果是 Hello Sunday September 你参考一下
对i操作,s没受影响
凡是要遍历的,全都不 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:]}
格式输出不香吗???哈哈
经过测试,楼主你可以按下面的来写 def firstCharUpper(s): for i in s: if i==s[0]: s=s[0].upper()+s[1:] else: i=i return s
前面有提到过函数带进去的是tuple,所以s[0]=i.upper()也改变不了,可以list(s)改成可更改数据。但是输出变成
['H', 'e', 'l', 'l', 'o'],希望有可以回答如何去掉逗号和分号的。
枫林天涯
def firstCharUpper(s):
return s[:1].upper()+s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')
参考一下代码。
def
firstCharUpper(s):
return s[0:1].upper()+s[1:]
return
s[
0
:
1
].upper()
+
:]
print
firstCharUpper(
'hello'
)
'sunday'
'september'
你可以参考一下
因为你的在
if i==s[0]: i=i.upper()
并没有对 s串进行更新
最后的return s 依旧是输入进去的s串
def firstCharUpper(s): return s[0:1].upper()+s[1:] print firstCharUpper('hello') print firstCharUpper('sunday') print firstCharUpper('september')
你应该改成s[0]=i.upper()
the_sky_line
举报
学python入门视频教程,让你快速入门并能编写简单的Python程序