试图打印具有一定长度的单词数

时间:2013-01-27 22:01:22

标签: python

此函数的格式为numLen(s,n):其中s是字符串,n是整数。代码应该做的是返回字符串中长度为n的单词数,所以:

numLen(“这是一个测试”,4)

将返回2,因为两个单词有4个字符。

def numLen(s, n):
'''
takes string s and integer n as parameters and returns the number of words
in the string s that have length n
'''
return s.split()
if len(s) == n:
    return 'hello'

我试图将字符串拆分成一个列表并检查该列表中每个单词的长度,但这似乎没有成功。我设法得到的最远的是当我用14替换4时返回“你好”,只是为了查看长度代码是否有效。

5 个答案:

答案 0 :(得分:5)

试试这个:

def numLen(s, n):
    return sum(1 for x in s.split() if len(x) == n)

我正在使用生成器表达式,它的工作原理如下:

  • 首先,我们使用s
  • 将字符串split()拆分为单词
  • 然后,我们会过滤那些长度为n
  • 的单词
  • 我们为符合条件的每个人添加1
  • 最后我们添加了所有1 s

答案 1 :(得分:3)

由于我假设这是一个类,下面的例子是完成它的一种基本方法(尽管+1给Oscar Lopez的Pythonicity解决方案:))。

In [1]: def numLen(s, n):
   ...:     # Split your string on whitespace, giving you a list
   ...:     words = s.split()
   ...:     # Create a counter to store how many occurrences we find
   ...:     counter = 0
   ...:     # Now go through each word, and if the len == the target, bump the counter
   ...:     for word in words:
   ...:         if len(word) == n:
   ...:             counter += 1
   ...:     return counter
   ...: 

In [2]: numLen("This is a test", 4)
Out[2]: 2

In [3]: numLen("This is another test", 7)
Out[3]: 1

In [4]: numLen("And another", 12)
Out[4]: 0

答案 2 :(得分:2)

reduce(lambda a, w: a+(len(w)>=4), s.split(), 0)

答案 3 :(得分:0)

这对我有用:

def numLen(s, n):
    num = 0
    for i in s.split():
        if len(i) == n:
            num += 1
    return num

这是你想要的吗?但是,这并没有考虑标点符号(句号,逗号等)。

答案 4 :(得分:0)

使用此代码,您可以从句子中获取每个单词的长度。 使用python 2.7

a = raw_input("Please give a sentence: ").split() 
for i in range(len(a)):
   print "The Word, ", str(a[i]), " have,", str(len(a[i])), " lengths"

使用Python 3.x

 a = input("Please give a sentence: ").split() 
 for i in range(len(a)):
    print ("The Word, ", str(a[i]), " have,", str(len(a[i])), " lengths")