python字符串中出现意外的null.isalpha()
函数应该将句子改为用空格分隔的单词列表,然后检查一行中是否有3个单词只包含字母python字符串中出现意外的null.isalpha(),python,Python,函数应该将句子改为用空格分隔的单词列表,然后检查一行中是否有3个单词只包含字母 def words(str): slowa = str.split(str) if len(slowa) < 2: return 0 else: for x in range(2,len(slowa)): if slowa[x].isalpha() and slowa[x-1].isalpha() and slowa[x-2].isalpha(): ret
def words(str):
slowa = str.split(str)
if len(slowa) < 2:
return 0
else:
for x in range(2,len(slowa)):
if slowa[x].isalpha() and slowa[x-1].isalpha() and slowa[x-2].isalpha():
return 1
else:
return 0
fe:wordsone返回true
但是wordsone1返回false。
出现这种情况的任何提示?因为在循环中第一次失败的测试中返回0。循环以返回退出,但您从未测试过列表的其余部分。一个1不匹配,需要继续循环,直到稍后找到一个序列
将返回0移动到for循环之后,只有在测试了所有位置后才能确定没有匹配项:
for x in range(2,len(slowa)):
if slowa[x].isalpha() and slowa[x-1].isalpha() and slowa[x-2].isalpha():
return 1
return 0
请注意,长度测试是多余的;对于较短的序列,范围仅为空:
def words(inputstring):
slowa = inputstring.split()
for x in range(2, len(slowa)):
if slowa[x].isalpha() and slowa[x-1].isalpha() and slowa[x-2].isalpha():
return 1
return 0
因为在循环的第一个测试中返回0。循环以返回退出,但您从未测试过列表的其余部分。一个1不匹配,需要继续循环,直到稍后找到一个序列。