Python:从列表中计算元音
我是python新手,对脚本的疑难解答有些困难 我的任务是创建一个函数,它接受字符串列表并返回整个列表中的元音数 我尝试遵循的游戏计划是:Python:从列表中计算元音,python,Python,我是python新手,对脚本的疑难解答有些困难 我的任务是创建一个函数,它接受字符串列表并返回整个列表中的元音数 我尝试遵循的游戏计划是: 将列表元素合并为单个字符串 创建一个循环,测试字符串元素是否为元音 使用计数器变量跟踪字符串中的元音 完成循环后,打印计数器变量的值 我的代码并不优雅,但也不起作用 def vowelCounter(listName): new = ''.join(listName) n = len(new) count = 0 vowels
def vowelCounter(listName):
new = ''.join(listName)
n = len(new)
count = 0
vowels = 'aeiouAEIOU'
i = 0
for i in range(0,n):
while i < n:
if new[i] in vowels:
count += 1
i += 1
return
print count
return
return
return
print(vowelCounter(["terrapin","station","13points"]))
def元音计数器(列表名):
new=''.join(列表名)
n=len(新)
计数=0
元音='aeiouAEIOU'
i=0
对于范围(0,n)内的i:
而i
请原谅我可能犯的任何愚蠢的错误。我当然会感激你能提供的任何帮助 代码基本正常。。。然而
- i in.的
自动递增
,因此不需要i
i+=1
的
循环是否。。。无需在循环中放入另一个
退出该函数,您应该只在最后使用它返回使用return
return count计算的结果
- i in.的
自动递增
,因此不需要i
i+=1
的
循环是否。。。无需在循环中放入另一个
退出该函数,您应该只在最后使用它返回使用return
return count计算的结果
立即退出该功能;它不仅仅是“结束循环”return
- 在循环上方将
初始化为i
没有意义。0
循环本身将自动将for
设置为i
返回的列表中的当前值range()
- i
时的 是不必要的;对于列表中的每个字符,无需再次遍历字符串
- 无需手动增加
<代码>for将自动为您执行此操作i
- 您正在
ing函数内的值,但您也在尝试打印函数的返回值(但它不返回任何内容!)print
因此,如果我们解决了这些问题,我们会有如下情况:
- 代码基本正常。。。然而
- 首先,我们有一些一般语法问题
def vowelCounter(listName):
vowels = 'aeiouAEIOU'
new = ''.join(listName)
count = 0
for i in range(0, len(new)):
if new[i] in vowels:
count += 1
return count
但是Python也允许for
循环只遍历字符串的每个字符,因此我们根本不需要range()
和len()
:
def vowelCounter(listName):
vowels = 'aeiouAEIOU'
count = 0
for char in ''.join(listName):
if char in vowels:
count += 1
return count
但是,我们可以使它更令人敬畏,与功能
def vowelCounter(listName):
vowels = 'aeiouAEIOU'
count = sum([1 for char in ''.join(listName) if char in vowels])
return count
我们在这里主要做的是为每个元音字母(如果不是元音字母,我们不会在新列表中添加任何内容)列出1
s。然后我们使用sum()
将列表中的所有数字(1)相加,这是我们的元音总数
或者我们甚至可以把它做成一行:
def vowelCounter(listName):
return sum([1 for char in ''.join(listName) if char in 'aeiouAEIOU'])
首先,我们有一些一般的语法问题
return
立即退出该功能;它不仅仅是“结束循环”i
初始化为0
没有意义。for
循环本身将自动将i
设置为range()
返回的列表中的当前值是不必要的;对于列表中的每个字符,无需再次遍历字符串
i
<代码>for将自动为您执行此操作print
ing函数内的值,但您也在尝试打印函数的返回值(但它不返回任何内容!)def vowelCounter(listName):
vowels = 'aeiouAEIOU'
new = ''.join(listName)
count = 0
for i in range(0, len(new)):
if new[i] in vowels:
count += 1
return count
但是Python也允许for
循环只遍历字符串的每个字符,因此我们根本不需要range()
和len()
:
def vowelCounter(listName):
vowels = 'aeiouAEIOU'
count = 0
for char in ''.join(listName):
if char in vowels:
count += 1
return count
但是,我们可以使它更令人敬畏,与功能
def vowelCounter(listName):
vowels = 'aeiouAEIOU'
count = sum([1 for char in ''.join(listName) if char in vowels])
return count
我们在这里主要做的是为每个元音字母(如果不是元音字母,我们不会在新列表中添加任何内容)列出1
s。然后我们使用sum()
将列表中的所有数字(1)相加,这是我们的元音总数
或者我们甚至可以把它做成一行:
def vowelCounter(listName):
return sum([1 for char in ''.join(listName) if char in 'aeiouAEIOU'])
您提供的逐步逻辑是正确的。
但是,您发布的代码不符合逻辑,并且不正确 请尝试以下代码:
def vowelCounter(listName):
string = ''.join(listName)
count = 0
vowels = 'aeiouAEIOU'
for ch in string:
if ch in vowels:
count += 1
return count
print(vowelCounter(["terrapin","station","13points"]))
您提供的逐步逻辑是正确的。
但是,您发布的代码不符合逻辑,并且不正确 请尝试以下代码:
def vowelCounter(listName):
string = ''.join(listName)
count = 0
vowels = 'aeiouAEIOU'
for ch in string:
if ch in vowels:
count += 1
return count
print(vowelCounter(["terrapin","station","13points"]))
可能重复的你应该在发帖前至少学习一门语言的基础知识。可能重复的你应该在发帖前至少学习一门语言的基础知识。谢谢你的快速回复!我会做些改变,看看能做些什么。我闻到老鼠的味道了!即使是这个漂亮的小回答也会被否决。无论如何,我正在尽我所能,把它带到地球线!感谢您的快速和有益的答复!我会做些改变,看看能做些什么。我闻到老鼠的味道了!即使是这个漂亮的小回答也会被否决。无论如何,我正在尽我所能,把它带到地球线!美丽的非常整洁和聪明+1但是OP想要更简单的答案可能
:-)
正则表达式也不是很有效