代码战争:python的标题大小写

代码战争:python的标题大小写,python,indexing,Python,Indexing,您好,这里是我的python代码。 问题是: 如果字符串中的每个单词都是(A)大写的(即,只有单词的第一个字母是大写的)或(b)被视为例外并完全放在小写中,则字符串被视为是标题大小写,除非它是始终大写的第一个单词 编写一个函数,将字符串转换为标题大小写,并提供可选的异常列表(次要单词)。次要单词列表将以字符串形式给出,每个单词之间用空格分隔。您的函数应该忽略次要单词字符串的大小写——即使次要单词字符串的大小写发生了变化,它也应该以相同的方式运行 我尝试不使用大写()来执行此操作。似乎我的代码在我

您好,这里是我的python代码。 问题是: 如果字符串中的每个单词都是(A)大写的(即,只有单词的第一个字母是大写的)或(b)被视为例外并完全放在小写中,则字符串被视为是标题大小写,除非它是始终大写的第一个单词

编写一个函数,将字符串转换为标题大小写,并提供可选的异常列表(次要单词)。次要单词列表将以字符串形式给出,每个单词之间用空格分隔。您的函数应该忽略次要单词字符串的大小写——即使次要单词字符串的大小写发生了变化,它也应该以相同的方式运行


我尝试不使用大写()来执行此操作。似乎我的代码在我的计算机上运行良好,但代码大战只是提示“Indexer:list index out range”(索引器:列表索引超出范围)。

如果
title
有前导空格或尾随空格,或两个连续空格,例如
“foo bar”
,则代码将中断。它还将在空字符串上中断。这是因为任何一种标题上的
title.lower().split(“”)
都会给您一个空字符串作为“单词”之一,然后
temp[0]
会导致以后出现
索引器


您可以使用不带参数的
split()
来避免此问题。它将在任何组合的任何类型的空格上拆分。多个空格将被视为一个空格,前导或尾随空格将被忽略。调用
split
时,空字符串将变为空列表,而不是包含一个空字符串的列表。

作为@Blckknght解释的补充,下面是一个具有启发性的控制台会话,它将逐步介绍变量发生的情况

def title_case(title, minor_words = 0):
    title = title.lower().split(" ")
    title_change = []
    temp = []
    if minor_words != 0 :
        minor_words = minor_words.lower().split(" ")
        for i in range(len(title)):
            if (i != 0 and title[i] not in minor_words) or (i == 0 and title[i] in minor_words):
                temp = list(title[i].lower())
                temp[0] = temp[0].upper()
                title_change.append("".join(temp))
            else:
                title_change.append(title[i])
            temp = []
    else:
        for i in range(len(title)):
            temp = list(title[i])
            temp[0] = temp[0].upper()
            title_change.append("".join(temp))
            temp = []
    return " ".join(title_change)
>标题=“”
>>>title=title.lower().split(“”)
>>>头衔
['']
>>>临时=列表(标题[0])
>>>临时工
[]
>>>温度[0]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
索引器:列表索引超出范围

我在其他(非空白)输入上尝试了您的解决方案,效果很好。

什么是代码战?代码战。有点像一个编码练习网站。它是否给出了
索引器出现的行号?它没有。我只是打印出索引,它也显示了良好的效果。请使用带有尾随空格的字符串进行尝试,例如:
“hello”
-删除了我的,你的答案更好。。。。如果
title=”“
however@Aaron:我省略了你在回答中提到的空字符串的大小写。由于这可能是最有可能导致OP代码出现问题的输入,因此我编辑了我的答案,将其与其他答案一起包含在内。非常感谢这里的帮助。我认为它的编辑器可能存在一些问题。我将为您提供最佳答案。感谢这里的帮助。然后我很快在代码中找到了这一行(I==0和title[I]在小调的话)它似乎只是需要i==0,而另一个是多余的。
>>> title = ''
>>> title = title.lower().split(' ')
>>> title
['']
>>> temp = list(title[0])
>>> temp
[]
>>> temp[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range