简体   繁体   中英

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

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:

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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