Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从列表中计算元音_Python - Fatal编程技术网

Python:从列表中计算元音

Python:从列表中计算元音,python,Python,我是python新手,对脚本的疑难解答有些困难 我的任务是创建一个函数,它接受字符串列表并返回整个列表中的元音数 我尝试遵循的游戏计划是: 将列表元素合并为单个字符串 创建一个循环,测试字符串元素是否为元音 使用计数器变量跟踪字符串中的元音 完成循环后,打印计数器变量的值 我的代码并不优雅,但也不起作用 def vowelCounter(listName): new = ''.join(listName) n = len(new) count = 0 vowels

我是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"]))
    
    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时的
            是不必要的;对于列表中的每个字符,无需再次遍历字符串
          • 无需手动增加
            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'])
            

            首先,我们有一些一般的语法问题

          • return
            立即退出该功能;它不仅仅是“结束循环”
          • 在循环上方将
            i
            初始化为
            0
            没有意义。
            for
            循环本身将自动将
            i
            设置为
            range()
            返回的列表中的当前值
          • i时的
            是不必要的;对于列表中的每个字符,无需再次遍历字符串
          • 无需手动增加
            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想要更简单的答案可能
            :-)
            正则表达式也不是很有效