2

此函数的格式为 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 时,我设法得到的最远的结果是返回“hello”,只是为了看看长度代码是否有效。

4

5 回答 5

5

尝试这个:

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

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

  • 首先,我们将字符串拆分为s单词split()
  • 然后,我们过滤那些长度正好的单词n
  • 我们1为每个满足条件的人添加
  • 最后我们添加所有的1s
于 2013-01-27T22:04:06.483 回答
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
于 2013-01-27T22:06:49.093 回答
2
reduce(lambda a, w: a+(len(w)>=4), s.split(), 0)
于 2013-01-27T22:08:00.167 回答
0

这对我有用:

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

这是你的目的吗?但是,这不考虑标点符号(句点、逗号等)。

于 2013-01-27T22:17:47.730 回答
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")   
于 2017-08-03T12:50:26.060 回答