我尝试编写一个带有函数的程序,通过添加一个点来大写表达式中的每个第一个字母。例如,如果我写hello world
,结果必须为H.W.
。
我的节目是:
def initials(Hello World):
words = input.split(' ')
initials_words = []
for word in words:
title_case_word = word[0].upper()
initials_words_words.append(title_case_word)
output = '. '.join(initials_words)
return (initials_words)
编译器似乎确实存在nootexit错误,但是当我尝试给出一个例如:print (initials(Hello World)
的排序时,编译器不会给我任何结果。
答案 0 :(得分:1)
这样做:
def initials(input_text):
return "".join(["%s." % w.upper()[0] for w in input_text.split()])
答案 1 :(得分:1)
我发现了几个问题:
您需要更改功能签名以获取名为input
的参数。因为那是你split
的变量。注意:input
也是内置函数,因此使用不同的变量名称会更好。
然后在循环中使用initial_words_words
代替initial_words
。
您指定了output
但是您没有使用它,它应该在循环之外并且也可以返回。
不是问题,但返回时不需要(
和)
。
所以改变的程序看起来像这样:
def initials(my_input):
words = my_input.split(' ')
initials_words = []
for word in words:
title_case_word = word[0].upper()
initials_words.append(title_case_word + '.')
output = ''.join(initials_words) # or ' '.join(initials_words) if you want a seperator
return output
print(initials('Hello World')) # H.W.
答案 2 :(得分:0)
尝试在第6行运行代码时发现错误:Sub Test_download_tvsubtitles_net()
DownloadFile "http://www.tvsubtitles.net/download-114117.html", ThisWorkbook.Path & "\download-114117.zip"
End Sub
Sub DownloadFile(sUrl, sPath)
Dim aBody
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", sUrl, False
.Send
aBody = .responseBody
End With
With CreateObject("ADODB.Stream")
.Type = 1 ' adTypeBinary
.Open
.Write aBody
.SaveToFile sPath, 2 ' adSaveCreateOverWrite
.Close
End With
End Sub
。
NameError:名称'initials_words_words'未定义
修复后,程序运行正常。尝试将其更改为initials_words_words.append(title_case_word)