【问题标题】:Take a list of numbers and return the average获取数字列表并返回平均值
【发布时间】:2013-04-21 21:02:38
【问题描述】:

进行 GCSE 计算并作为家庭作业,我需要执行以下操作。我只是从编程开始,我一直在试图弄清楚如何去做,但无济于事。我相信我需要使用function,但搜索“python 函数列表”等在我尝试时没有任何帮助。

你能告诉我怎么做吗:

要求用户输入“数字列表”
打印这些号码以供确认
将它们转换为变量?
将它们加在一起
将总和除以输入的数字 - 甚至没有关于如何做到这一点的丝毫线索!
最后,打印Average is 和结果。

我目前所拥有的:

print("Welcome, this program will find the average of a list of numbers you enter.")

numbers = input("Enter your numbers, seperated by spaces.")

print("You have entered")

print(numbers)

print(numbers[0])
print(numbers[1])
print(numbers[2])
print(numbers[3])
print(numbers[4])
print(numbers[5])
print(numbers[6])

print(len(numbers))

print("The average of the above numbers is: ") #FURTHEST I'VE GOT

【问题讨论】:

    标签: python list function average


    【解决方案1】:

    可以使用python的内置函数sum

    • sum 将返回所有值的总和
    • len 获取列表长度

    代码:

    >>> list = [1,2,3,4]
    >>> sum(list)
    >>> 10
    >>> len(list)
    >>> 4
    >>> avg = float(sum(list))/len(list)
    >>> 2.5
    >>>"""In pyton3 don't want to specify float"""
    >>> 10 / 4
    >>> 2.5 
    

    使用float是因为在使用python 2.x时,因为:

    • int/int 返回 int 值(即 2)
    • float/int 返回浮点值(即 2.5)

    在 Python 3.x 中:

    • int/int返回浮点数
    • int//intreturn int

    【讨论】:

      【解决方案2】:

      您想要遍历列表,对所有数字求和,然后将总和除以列表中的元素数。您可以使用 for 循环来完成此操作。

      average = 0
      sum = 0    
      for n in numbers:
          sum = sum + n
      average = sum / len(numbers)
      

      for 循环查看列表中的每个元素,然后将其添加到当前总和中。然后除以列表的长度(或列表中元素的数量)以求平均值。

      我建议您在谷歌上搜索 Python 参考,了解如何使用循环和条件等常见编程概念,以便您在开始时感到舒适。网上有很多很棒的资源,你可以查一下。

      祝你好运!

      【讨论】:

      • 或者,更简单的解决方案:sum(numbers)/float(len(numbers))
      • 当我使用上面的我得到错误“TypeError: 'int' object is not callable”
      【解决方案3】:

      input() 函数返回一个可能包含“数字列表”的字符串。您应该已经了解 numbers[2] 操作返回 iterable 的第三个元素。字符串 is 是可迭代的,但字符的可迭代,这不是您想要的 - 您想要平均输入字符串中的 数字

      因此,在达到 garyprice 显示的平均值之前,您必须做两件事:

      1. 将输入字符串转换为仅包含数字字符串的内容(您不希望数字之间有空格)
      2. 将每个数字字符串转换为整数

      第 1 步提示:您必须将输入字符串拆分为非空格子字符串。

      第 2 步(将字符串转换为整数)应该很容易用 google 找到。

      HTH

      【讨论】:

        【解决方案4】:

        如果你有numpy 包:

        In [16]: x = [1,2,3,4]    
            ...: import numpy
            ...: numpy.average(x)
        
        Out[16]: 2.5
        

        【讨论】:

          【解决方案5】:

          简单的数学..

          def average(n):
              result = 0
              for i in n:
                result += i
                ave_num = result / len(n)
              return ave_num
          
          input -> [1,2,3,4,5]
          output -> 3.0
          

          【讨论】:

            【解决方案6】:

            考虑一个数字列表。编写一个 Python 程序来执行以下操作:

            1. 统计列表中数字的总数
            2. 列表中所有数字的总和和平均值
            3. 列表中所有奇数的计数和总和
            4. 列表中所有偶数的计数和总和
            5. 查找列表中最大的数字
            6. 在列表中找到最小的数字

            以适当的标题显示所有值。

            listNo = [6,8,10,44,33,21,7,1,0,2]
            c = 0
            s = 0
            avg = 0
            sOdd = 0
            sEven = 0
            cOdd = 0
            cEven = 0
            for i in listNo :
                c += 1
                s = s+i
                avg = s/c
                if i % 2 == 0 :
                    sEven = sEven + i
                    cEven = cEven + 1
                else :
                    sOdd = sOdd + i
                    cOdd = cOdd + 1
            print ("total number of numbers in the list  : ", c)
            print("sum of all numbers : ",s)
            print("average of all numbers : ",avg)
            print("count odd numbers : ",cOdd)
            print("sum of odd numbers : ",sOdd)
            print("count even numbers : ",cEven)
            print("sum of odd numbers : ",sEven)
            print("largest number in the list : " ,max(listNo))
            print("smallest number in the list  : ",min(listNo))
            

            【讨论】:

            • 感谢您的回答,但请学习如何正确格式化。您还应该说明您的答案如何改进其他答案,以便读者可以向您学习。
            猜你喜欢
            • 2018-02-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-22
            • 1970-01-01
            • 2017-08-13
            • 1970-01-01
            相关资源
            最近更新 更多