如果单词之间有多个空格,我如何确保在字符串中计算正确的单词数?

问题描述 投票:0回答:1

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

我已经能够编写一个函数,并且我创建了一个名为numspaces的计数器变量,我将其初始化为0.然后编写try,然后使用名为current_character的索引变量的for循环,该变量将遍历my_string中的所有当前字符。我写了一个条件说法,如果current_character等于空格,numspaces需要增加1,而numwords(我用来保持字符串中单词总数的变量)等于numspaces + 1.然后我写了一个else if语句,说明numspaces是否等于0,numwords = 1并返回numwords。如果遇到错误,我写了一个除了返回“Not a string”

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(“嗨大卫”)的问题

python string function for-loop try-catch
1个回答
0
投票

至少有两种选择:

  1. 替换所有双倍空格,直到开始计数之前只有一个空格
  2. 跟踪,前一个字符是什么,并添加额外的条件
© www.soinside.com 2019 - 2024. All rights reserved.