Python 存储输入的数字的数据结构是什么?

Python 存储输入的数字的数据结构是什么?,python,Python,哪种数据结构最适合计算输入数字的平均值? 我用了一个数组,但感觉很笨拙。 有没有更标准的方法 import os def getGrades(): g = input("How many tests?") numGrades = int(g) grades = []*numGrades for x in range(numGrades): t = int(input("Enter Grade #" + str(x+1) + ": "))

哪种数据结构最适合计算输入数字的平均值? 我用了一个数组,但感觉很笨拙。 有没有更标准的方法

import os

def getGrades():
    g = input("How many tests?")
    numGrades = int(g)

    grades = []*numGrades

    for x in range(numGrades):
        t = int(input("Enter Grade #" + str(x+1) + ": "))
        grades.append(t)
    avgGrades(grades)

def avgGrades(a):
    total = 0
    count = 0
    for t in a:
        total = total + t
        count = count + 1
    avg = total / count
    print (f"average is: {avg}")


getGrades()

numpy或scipy为此提供了良好的设施

将数字存储在numpy.array[]中。 为了得到你的平均值,numpy.mean

您的代码如下所示:

import numpy
import os

def getGrades():
    g = input("How many tests?")
    numGrades = int(g)

    grades = []*numGrades

    for x in range(numGrades):
        t = int(input("Enter Grade #" + str(x+1) + ": "))
        grades.append(t)
    yourArray = numpy.array(grades)
    return numpy.mean(yourArray)
您可以使用以下模块:

import statistics


def get_grades_avg():
    g = input("How many tests?")
    num_grades = int(g)
    grades = [] * num_grades
    for x in range(num_grades):
        grades.append(int(input("Enter Grade #" + str(x + 1) + ": ")))
    return statistics.mean(grades)


avg = get_grades_avg()
print('avg: {}'.format(avg))

使用pythonlist很好。也许尝试一些内置函数来获得平均分数会更容易

假设等级是某个等级的列表存储

sum(grades) / len(grades)

您可以使用以下内容:

def average_factory():
    count_numbers = 0
    sum_numbers = 0

    def wrapper(number):
        nonlocal count_numbers
        nonlocal sum_numbers
        sum_numbers += number
        count_numbers += 1
        return sum_numbers / count_numbers

    return wrapper


def get_number(message):
    str_number = input(message)

    try:
        return int(str_number)
    except (ValueError, TypeError):
        print('Invalid number, please try again')
        return get_number(message)


def get_average_of_all_tests():
    count_tests = get_number('How many tests? ')

    get_average = average_factory()
    average = 0

    for test_number in range(1, count_tests + 1):
        number = get_number('Enter Grade #{test_number}: '.format(test_number=test_number))
        average = get_average(number)
    return average
是的,对于一般工厂来说,这个解决方案似乎有点复杂。但我认为存储所有值只是为了计算平均值并不是一个好主意。只存储等级的计数和总和更好。
如果您对解决方案有任何疑问,请随时向我询问。

您使用的是列表,而不是数组,并且出于这些目的,可以使用列表。对于本用例,您称之为数组的列表是合适的。您可能会丢失行grades=[]*numGrades。它没有做任何有用的事情:还有一个建议是使用内置的python函数,如suma,例如avg=suma/lena和grades=[]*numGrades什么都不做,即使它做了,逻辑也不会是您想要的,因为您总是附加一个新值,而不是使用索引[]*任何东西仍然是[]。您没有为分数预先分配空间,也不需要,因为您使用的是append。好的,我只声明grades=[]numpy似乎对求平均值有很大的依赖性,特别是当statistics.mean已经在标准库中时。您可能可以从中获得很多使用。我不建议把它当作小说来读;只需点击有趣的链接。标准模块数量惊人,通过单击有趣模块顶部的“查看源代码”按钮,我也学到了很多。谢谢。我想手动完成所有操作,练习一些Python语法。谢谢。我想手动完成所有操作,练习一些Python语法。谢谢。我想手动完成所有工作,练习一些Python语法。