如果单词之间有多个空格,如何确定字符串中单词的正确数量?

时间:2019-03-25 19:50:35

标签: python string function for-loop try-catch

我正在Python 3中编写一个名为word_count(带有一个参数,我称为my_string)的函数,该函数应该计算字符串中的单词数。该字符串可能包含多个空格的单词(例如,你好),该函数需要能够计算出它是两个单词。我不应该使用任何内置的Python函数,并且在遇到任何错误时也使用try-except(例如,如果感兴趣的值不是字符串,则将执行返回“不是字符串” “

我已经能够编写一个函数,并且创建了一个计数器变量numspaces,并将其初始化为0。然后我编写了try,然后是一个带有循环变量的for循环,该变量名为current_character,它将在所有当前循环中运行。 my_string中的字符。我写了一个条件性的说法,如果current_character等于一个空格,numspaces需要加1,并且numwords(我用来保持字符串中单词总数的变量)等于numspaces + 1。另一个if语句表明numspaces等于0,numwords = 1并返回numwords。如果遇到错误,我写了一个例外,返回“不是字符串”

def word_count(my_string):
    numspaces = 0
    try:
       for current_character in my_string:
        if current_character == " ":
            numspaces += 1
            numwords = numspaces + 1
        elif numspaces == 0:
            numwords = 1
       return numwords
    except:
       return "Not a string"

以下是一些测试用例以及使用这些测试用例时的预期结果:

Word Count: 4
Word Count: 2
Word Count: Not a string
Word Count: Not a string
Word Count: Not a string

print("Word Count:", word_count("Four words are here!"))
print("Word Count:", word_count("Hi   David"))
print("Word Count:", word_count(5))
print("Word Count:", word_count(5.1))
print("Word Count:", word_count(True))

运行我编写的代码时,得到以下输出:

Word Count: 4
Word Count: 4
Word Count: Not a string
Word Count: Not a string
Word Count: Not a string

我不确定如何调整我的代码以说明类似测试用例2(“嗨,大卫”)的情况

1 个答案:

答案 0 :(得分:0)

至少有两个选择:

  1. 替换所有双精度空格,直到开始计数前只有一个空格为止
  2. 保持追踪,以前的角色是什么,并添加额外条件