【问题标题】:How to check to see if a string has three words in row?如何检查字符串是否连续三个单词?
【发布时间】:2017-02-03 02:20:42
【问题描述】:
我是一名初级程序员,我正在解决一个编程问题。我的程序应该将一个字符串拆分为单独的单词/数字,然后检查字符串中是否连续三个单词。一些输入在应该返回 true 时却产生了 False 返回。
def words(words):
count = 0
for phrase in words.split():
if phrase.isalpha():
count +=1
else:
count = 0
while (count <3):
return False
return True
words("Hello World hello")#True
words("He is 123 man")#False
words("1 2 3 4")#False
words("bla bla bla bla")#True
words("Hi") #False
words("one two 3 four five six 7 eight 9 ten eleven 12") #True
【问题讨论】:
标签:
python
for-loop
while-loop
【解决方案1】:
不要在for 循环完成后检查,而应在count 到达3 时立即在for 循环的中间返回,否则它可能会重置为在已经找到 3 个计数之后为 0。
def words(words):
count = 0
for phrase in words.split():
if phrase.isalpha():
count +=1
else:
count = 0
if count == 3:
return True
return False
【解决方案2】:
需要检查迭代中的计数,否则您只检查最后 3 个短语是否是单词。
def words(words):
count = 0
for phrase in words.split():
if phrase.isalpha():
count +=1
if count == 3:
return True
else:
count = 0
return False
【解决方案3】:
如果我正确理解了您的问题,您希望最后输入 "one two 3 four five six 7 eight 9 ten eleven 12" 为 True,因为连续有 four five six。
代码中的问题是因为它将继续 for 循环直到单词结束。对于上面的输入,count 以 0 结尾,因为单词以 12 结尾。
下面的代码将在连续命中 3 个单词时返回 True。否则,继续 for 循环。
def words(words):
count = 0
for phrase in words.split():
if phrase.isalpha():
count +=1
else:
count = 0
if count >= 3:
return True
return False