当前位置: 首页 > 新闻动态 > 软件编程

Python 查询学生的平均分数的实现

作者:用户投稿 浏览: 发布日期:2026-01-12
[导读]:这篇文章主要为大家详细介绍了Python 查询学生的平均分数的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目录
  • 一、题目
    • Example
    • Sample Input
    • Sample Output
  • 二、代码
    • 三、解读
      • 1. name, *line = input().split()
      • 2. scores = list(map(float, line))
      • 3. student_marks[name] = scores
      • 4.  average_score = sum(student_marks[query_name]) / len(student_marks[query_name])
      • 5. print(f"{average_score:.2f}")

    一、题目

    The provided code stub will read in a dictionary containing key/value pairs of name : [marks] for a list of students. Print the average of the marks array for the student name provided, showing 2 places after the decimal.

    Example

    marks key:value pairs are 

    'alpha' : [20, 30, 40]

    'beta':[30, 50, 70]

    query_name='beta'

    The query_name is 'beta', beta's average score is (30+50+70)/3 = 50.0

    Sample Input

    3

    Krishna 78 79 68

    Arjun 68 77 69

    Malika 54 67 89

    Malika

    Sample Output

    70.00

    二、代码

    if __name__ == '__main__':
        # 用户输入一个整数,表示学生记录的数量
        n = int(input())
    
        # 创建一个空字典
        student_marks = {} 
        
        # 获取每个学生的姓名和分数
        for _ in range(n):
            name, *line = input().split()
            scores = list(map(float, line))
            student_marks[name] = scores
        
        # 读取要查询的学生姓名
        query_name = input()
        
        # 计算该学生的平均分
        average_score = sum(student_marks[query_name]) / len(student_marks[query_name])
        
        print(f"{average_score:.2f}")

    三、解读

    1. name, *line = input().split()

    1)在循环中,这行代码读取用户输入的行,该行包含学生的姓名和分数

    2)input().split() 将输入的字符串按空格分割成多个参数

    3)name 变量接收第一个参数(学生的姓名)

    4)*line 是一个Python的高级特性,称为“打包和解包赋值”,它允许你将多个值赋给一个变量。

    2. scores = list(map(float, line))

    1)这行代码将 line 中的分数字符串转换为浮点数,并存储在列表 scores 中

    2)map(float, line) 将 float 函数应用于 line 列表中的每个元素,生成一个新的迭代器,然后 list() 将这个迭代器转换为列表。        

    如:

    输入line="20 30 40"

    line.split() = ['20','30','40'] 

    map(float, line.split()) = 生成迭代器 [20.0, 30.0, 40.0] 

    list(map(float, line.split()) = 生成列表 [20.0, 30.0, 40.0] 

    3. student_marks[name] = scores

    将学生的姓名 name 作为键,分数列表 scores 作为值,存储在字典 student_marks 中。

    4.  average_score = sum(student_marks[query_name]) / len(student_marks[query_name])

    1)计算学生的平均分数

    2)student_marks[query_name] 获取该学生的所有分数,用sum()函数求和

    3)len(student_marks[query_name]) 获取分数的数量,最后将总和除以数量获得平均分数。

    5. print(f"{average_score:.2f}")

    1)输出平均分数,格式保留两位小数

    2)f"{average_score:.2f}" 是一个格式化字符串

    3){average_score:.2f}  将 average_score 变量的值格式化为浮点数,保留两位小数

    免责声明:转载请注明出处:http://shjed.com/news/653914.html

    扫一扫高效沟通

    多一份参考总有益处

    免费领取网站策划SEO优化策划方案

    请填写下方表单,我们会尽快与您联系
    感谢您的咨询,我们会尽快给您回复!