当我收到此错误时,我正在使用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'的冲突,' a')
0元素存在,但它说它不会,我不知道为什么,因为当我写" print(list)"它向我显示了列表的元素,在这种情况下," [' a','冲突','','国王&# 39;]"
我该怎么办?
答案 0 :(得分:1)
好的,基于阅读此代码,我认为您希望得到以下结果:
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
无论如何,希望这能回答你的问题!