亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問為什么首字母不受影響?

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
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

請問為什么首字母不受影響?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號