此函数的格式为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时返回“你好”,只是为了查看长度代码是否有效。
答案 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")