标点导致错误

时间:2018-07-02 18:42:22

标签: python

您好,我得到了一小段代码,当使用测试短语运行该代码时,遇到标点符号时出现错误。我认为word的值为null,但我尝试将其强制转换为字符串以防止出现错误IndexError。我已逐步完成该程序,并获得了单词而不是''的值,并且想知道两者之间的区别,因此我可以解决此问题。该代码适用于所有字母。

word = ''
quote = input('enter a 1 sentence quote, non-alpha words: ').lower()
for character in quote:
    if character.isalpha() == True:
        word += character
    else:
        if str(word[0]) >= 'h':
            print(word.upper())
            word = ''

        else:
            word = ''

样本输入:无论您走到哪里,都要全力以赴 所需的输出:所有大写的单词都在自己的行上。 哪里 您 与 您的 心

1 个答案:

答案 0 :(得分:2)

''是一个完全有效的字符串。您不需要“投射”它,或任何类似的东西。

但这是一个 empty 字符串。因此它没有第一个字符word[0]。如果您看到错误消息:

IndexError: string index out of range

…那就是告诉你的。问题不在于您没有字符串,而在于您的字符串不够大而不能包含第一个字符。


您要在此处执行的操作是在查询第一个字符之前检查空字符串:

if word and word[0] >= 'h':
    print(word.upper())
    word = ''
else:
    word = ''

…或处理IndexError

try:
    if word[0] >= 'h':
        print(word.upper())
        word = ''
    else:
        word = ''
except IndexError:
    word = ''

通常,在Python中,仅try的东西并处理错误(Easier to Ask Forgiveness than Permission,而不是Look Before You Leap)是比较习惯的做法,但是在某些情况下,它更易于阅读首先检查一下,我认为这是其中一种情况。