首页 > 解决方案 > 计算包含某些字母的单词

问题描述

任务是编写一个带有名称的函数,该函数count_letter接受单词列表和某个字母,并返回至少找到一次该字母的单词数量。而且,我们必须使用for循环。所以我列出了一些编程语言和字母“a”,并尝试应用我们迄今为止学到的所有内容以及一些互联网教程来了解如何将人类逻辑转换为代码行,但显然我遗漏了一些东西,因为它没有'不起作用:(这就是我的代码目前的样子:

mylist = ['fortran', 'basic', 'java', 'python', 'c++']
letter = 'a'
a_list = []
def count_letter(mylist):
  count = 0
  for i in range(len(mylist)):
    if letter in i:
      count += 1
      a_list.append(i)
  return a_list
  print(len(a_list))

结果是——没有结果。Online-python 编译器返回响应 ** 进程退出 - 返回代码:0 ** 我的问题是 - 我可能会错过什么或错误地定位循环不起作用。我想自己理解。在教程中,我发现了一种返回正确答案的结构(看起来非常优雅和紧凑),但它没有任何功能,所以它不是我们真正需要编写的:

mylist = ['fortran', 'basic', 'java', 'python', 'c++']
letter = 'a'
res = len ([ele for ele in mylist if letter in ele])
print ('Amount of words containing a: ' +str(res))

这里系统响应:3,正如预期的那样。

请告诉我应该在代码 #1 中检查什么。

标签: pythonpython-3.xfunctionfor-loop

解决方案


我在你的代码中发现了几个错误:

  1. 当你在 range(len(mylist)) 中执行 for i 时,你实际上是在循环遍历数字 1,2,... 而不是 mylist 的元素。所以你必须使用“for i in mylist”来循环遍历数组 mylist 的元素。

  2. 从函数返回时,不会执行返回之后的代码。所以你必须先打印它,然后从函数中返回。

  3. 不要忘记调用该函数。否则该函数将不会被执行。

  4. 不需要计数变量,因为您可以使用 len 方法访问长度。

mylist = ['fortran', 'basic', 'java', 'python', 'c++']
letter = 'a'
a_list = []
def count_letter(mylist):
  for i in mylist:
    if letter in i:
      a_list.append(i)
  print(len(a_list))
  return a_list
  
print(count_letter(mylist))

旅途中一切顺利!


推荐阅读