我正在做一个能给出句子中单词数量的函数。 示例:"你好世界"有3个单词" (一封信就像一个字一样计算。)
这是我的代码:
def number_of_word(s):
"""
str -> int
"""
# i : int
i = 0
# nb_word : int
nb_word = 0
if s == "":
return 0
else:
while i < len(s)-1:
if ((s[i] != " ") and (s[i+1] == " ")):
nb_word = nb_word + 1
i = i + 1
else:
i = i + 1
if s[len(s)-1] != " ":
nb_word = nb_word + 1
return nb_word
else:
return nb_word
我尝试了我的功能,我认为它有效。但是,我也认为有一种更好的方法来做一个以更简单的方式做同样事情的函数。
你能告诉我你是否知道一个更好的功能?或者对我的任何评论?
我要使用:
if s == "":
return 0
else:
...........
因为如果我没有,我的功能对number_of_word("")
答案 0 :(得分:4)
如果将单词定义为由一个或多个空格分隔的字符序列,则只需使用split
字符串方法分割为单词,
然后len
得到他们的计数:
def number_of_word(s):
return len(s.split())
从文档(强调我的):
split(...)
实例的
builtins.str
方法
S.split(sep=None, maxsplit=-1)
- &gt;字符串列表使用
S
作为分隔符字符串,返回sep
中单词的列表。 如果给出maxsplit
,则最多maxsplit
次分割完成。 如果sep
不是 指定或是None
,任何空格字符串都是分隔符并且为空 字符串将从结果中删除。
答案 1 :(得分:2)
如果您愿意,可以使用RegExp
import re
def number_of_word(s):
pattern = r'\b\w+\b'
return len(re.findall(pattern, s))
答案 2 :(得分:1)
如果你不能使用split或regex,我认为这是正确的解决方案:
$sudo pip install setuptools
答案 3 :(得分:0)
您可以使用split()
方法:
def count(string1):
string1=string1.split()
return len(string1)
print(count(" Hello L World "))
输出:
3
答案 4 :(得分:0)
我不能使用更多python'功能而不仅仅是“len”。 所以,我不能使用split或RegExp。
所以我想用基本代码和len来实现这个功能。
答案 5 :(得分:0)
嗯,既然发布了这些要求,可以在不调用任何库函数的情况下执行此操作:
def count_words(sentence):
count, white = 0, True
for character in sentence:
if character not in " \t\n\r":
if white:
count += 1
white = False
else:
white = True
return count