【问题标题】: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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-31
          • 2019-08-14
          • 2012-07-21
          • 1970-01-01
          • 2014-01-25
          • 1970-01-01
          • 2012-05-20
          相关资源
          最近更新 更多