哪个数据结构存储输入的数字?

2024-10-08 18:24:21 发布

您现在位置: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) + ": "))
        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()

Tags: in数据结构forinputdefcount数字int
3条回答

你可以这样使用:

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

是的,这个解决方案似乎有点复杂,一般工厂。但我认为仅仅为了计算平均值而存储所有的值并不是一个好主意。只存储成绩的计数和总和更好。 如果您对解决方案有任何疑问,请随时向我咨询。你知道吗

使用Python列表很好。也许尝试一些内置函数来获得平均分数会更容易。你知道吗

假设等级是某个等级的列表存储。你知道吗

sum(grades) / len(grades)

您可以使用statistics模块:

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))

相关问题 更多 >

    热门问题