简体   繁体   English

Python字典平均值函数

[英]Python dictionary average value function

Why the program does not want to calculate the average value from the dictionary?为什么程序不想从字典中计算平均值?

grades = {}

def addGrade(grades):
    course = input("input course: ")
    grade = int(input("input grade: "))
    grades[course] = grade

def printGrades(grades):
    print("all grades:")
    for c, grade in grades.items():
        print(c + "\t" + str(grade))

def count(grades):
    n = len(grades.keys())
    print(n)

def printAverage(grades):
    print("average grade:" + sum(grades)/int(count))

You have to use你必须使用

sum(grades.values())

Otherwise it will be adding up all the key s instead of the values (grades).否则它将把所有的key加起来而不是值(等级)。

You have to add:你必须添加:

 count = len(grades.keys())

Because it is not defined in your function.因为它没有在你的函数中定义。

The correct version of your function is:您的函数的正确版本是:

 def printAverage(grades):
      count = len(grades.keys())
      print("average grade:" , sum(grades.values())/count)

The following should work:以下应该工作:

grades = {}

def addGrade():
    course = input("input course: ")
    grade = int(input("input grade: "))
    grades[course] = grade

def printGrades():
    print("all grades:")
    for c, grade in grades.items():
        print(c + "\t" + str(grade))

def count():
    n = len(grades.keys())
    return n

def printAverage():
    print(f"average grade: {sum(grades.values()) / len(grades):.2f}")
    

if __name__ == '__main__':
    number_of_courses = int(input('Enter number of courses: '))
    
    for _ in range(number_of_courses):
        addGrade()
    printAverage()

sample output:示例输出:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM