您好,我得到了一小段代码,当使用测试短语运行该代码时,遇到标点符号时出现错误。我认为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 = ''
样本输入:无论您走到哪里,都要全力以赴 所需的输出:所有大写的单词都在自己的行上。 哪里 您 与 您的 心
答案 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)是比较习惯的做法,但是在某些情况下,它更易于阅读首先检查一下,我认为这是其中一种情况。