当我收到此错误时,我正在使用Kata在CodeWars编程:
Traceback:
in
in title_case
IndexError: list index out of range
这是我的代码:
def title_case(title, minor_words=1):
string = title.split()
outList = []
if minor_words != 1:
split = minor_words.split()
minor = [x.lower() for x in split]
out = ""
for i in range(0, len(string)):
word = ""
for j in range(0,len(string[i])):
elem = ""
elem += string[i][j]
if j == 0:
word += elem.upper()
else:
word += elem.lower()
if i != len(string)-1:
outList.append(word+" ")
else:
outList.append(word)
list = [x.lower() for x in outList]
print ((list[0]))#Just for debug
if minor_words != 1:
for i in range(0, len(outList)):
if (list[i] in minor):
print("OI")#Just for debug
out += list[i]
else:
out += outList[i]
return out
好吧,这当然是在尝试执行代码时发生的!初始化此功能的一种方法是:
title_case('KINGS的冲突','the的of')
好吧,0元素存在,但是它说不存在,我不知道为什么,因为当我写“ print(list)”时,它向我展示了list的元素,在这种情况下,“ ['a','冲突”,“ of”,“ kings”]”。
我能做什么?
好的,因此,基于阅读此代码,我认为您希望获得的结果title_case('a clash of KINGS', 'a an the of')
是:国王之战
因此,看来您要经历很多尝试才能实现的目标。当我浏览代码时,花了我一段时间才能看到实际发生的情况。我还采取了使您的变量更一致地命名的自由。而不是随机混合caseLetter和case_letter,我使它保持一致。我还使您的循环更易于阅读。也用于minorWords参数。还可以将其作为列表传递,而不是将其转换为函数内部的列表。无论如何,我希望这会有所帮助。
def titleCase(title, minorWords=[]):
titleList = [x.lower() for x in title.split()]
outList = []
for Word in titleList:
if Word not in minorWords:
Word = Word.capitalize()
outList.append(Word)
return " ".join(outList)
TitleCased = titleCase("a clash of KINGS", ["an", "the", "of"])
print (TitleCased)
A Clash of Kings
根据您的问题以及我对代码的理解,我相信哪些输出是您想要实现的?或者,如果您a
在未成年人字词中包含以下内容:
a Clash of Kings
无论如何,希望这能回答您的问题!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句