如何检查一个字符串是否有三个单词?

时间:2017-02-03 02:20:42

标签: python for-loop while-loop

我是初学者,我正在研究编程问题。我的程序应该将一个字符串拆分成单独的单词/数字,然后检查字符串中是否有三个单词。当一些输入应该返回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

3 个答案:

答案 0 :(得分:0)

需要检查迭代中的计数,否则你只是检查最后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

答案 1 :(得分:0)

for循环完成后, 后,for循环完成后,您应该在count循环的中间返回3 ,否则它可能在找到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 :(得分:0)

如果我正确理解了您的问题,那么您希望获得最后一次输入"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