我是python新手,在解决脚本故障时遇到了一些困难。在
我的任务是创建一个接受字符串列表并返回整个列表中元音字母数的函数。在
我要按照计划行事:
我的代码不优雅,但也不起作用。在
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"]))
请原谅我可能犯的任何愚蠢的错误。我将非常感谢你能提供的任何帮助!在
首先,我们有一些一般的语法问题。在
return
立即退出函数;它不仅仅是“结束循环”。在i
初始化为0
是没有意义的。for
循环本身将自动将i
设置为range()
返回的列表中的当前值。在while i < n
是不必要的;不需要为列表中的每个字符再次遍历字符串。在i
;for
将自动为您执行此操作。在print
操作函数内部的值,但也尝试打印函数的返回值(但它不返回任何内容!)。在所以,如果我们解决了这些问题,我们会得到这样的结果:
但是Python还允许}:
^{pr2}$for
循环遍历字符串的每个字符,因此我们根本不需要range()
和{但是我们可以用List Comprehensions和^{} 函数使它更令人惊叹!在
我们在这里基本上要做的是为每一个元音字母列一个
1
的列表(如果不是元音,我们就不会在新列表中添加任何内容)。然后我们使用sum()
将列表中的所有数字(1)相加,这就是元音的总数。在或者我们甚至可以把它变成一条直线:
代码基本上没问题。。。然而
for i in ...
会自动递增i
,因此不需要i += 1
for
执行循环。。。不需要在其中放入另一个while
循环return
退出函数,您应该只在最后使用它来返回使用return count
计算的结果您提供的逐步逻辑是正确的。
但是,您发布的代码不符合逻辑,是不正确的。在
请尝试以下代码:
相关问题 更多 >
编程相关推荐