我已經寫了一個簡單的程序,將採取字符串的第一個字母並將其大寫。理解列表vs for循環
def initials(text):
words = text.split()
a=[word[0].upper() for word in words]
b = '. '.join(a) + '.'
return b
text = "have a good day sir"
print(initials(text))
這會給我想要通過使用列表理解的結果。然而 我不能讓它通過一個典型的for循環下面工作,它會給我只有最後一次迭代:
def initials(text):
words = text.split()
for word in words:
a=word[0].upper()
b = '.'.join(a) + '.'
return b
text = "have a good day sir"
print(initials(text))
任何想法,爲什麼第二個示例不作爲第一個工作?
因爲在你的第二個'initials'函數中,'b'中的每個單詞都會更新'b' ...你不會「跟蹤」前面的首字母。 – blacksite
您需要將結果添加到新列表中,然後傳遞給'join' – pylang
寫入'a + = word [0] .upper()'並採用語句'b ='。join(a)+'。 ''出於for循環 – phynfo