You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

学生成绩查询程序:如何生成不同随机分数并存储至列表?

学生成绩查询程序问题解决方案

问题分析

你的代码已经通过random.sample(mark, k=4)生成了4个不重复的随机成绩,但存在两个核心问题:

  1. 打印成绩时直接重复输出整个成绩列表,没有逐个取出元素,导致显示内容重复
  2. 没有设计存储结构来保存学生对应的成绩

问题解决与代码修正

1. 实现每个成绩各不相同

你已经用random.sample()生成了不重复的随机数,只需在打印时遍历这个列表,逐个输出每个成绩即可。

2. 存储成绩到单独列表

推荐用字典来存储学生与成绩的对应关系(键为学生姓名,值为成绩列表),这样可以方便地保存和查询每个学生的成绩。

以下是修正后的完整代码:

import random

def printMark():
    print("Enter the names of your students")
    print("Press the enter key to store another name. Print q or Q when you're done.")
    
    classlist = []
    # 处理第一个学生姓名输入,避免丢失
    first_name = input("Enter student name: ")
    if first_name.lower() != 'q':
        classlist.append(first_name)
    
    # 继续添加其他学生
    while True:
        name = input("")
        if name.lower() == 'q':
            break
        classlist.append(name)
    
    # 打印班级列表
    print("\nClass list:")
    for name in classlist:
        print(name)
    
    # 存储学生成绩的字典
    student_scores = {}
    
    # 查询学生成绩
    while True:
        student_choice = input("\nEnter a student from your classlist (enter 'q' to quit): ")
        if student_choice.lower() == 'q':
            break
        if student_choice not in classlist:
            print("That student is not in your class")
        else:
            # 生成4个不重复的随机成绩
            scores = random.sample(range(1, 101), k=4)
            # 存储成绩到字典
            student_scores[student_choice] = scores
            # 逐个打印不同成绩
            print(f"A1: {scores[0]}\nA2: {scores[1]}\nA3: {scores[2]}\nA4: {scores[3]}")
    
    # 可选:打印所有存储的学生成绩
    print("\nStored student scores:")
    for student, marks in student_scores.items():
        print(f"{student}: {marks}")

# 调用函数
printMark()

关键修改说明

  • 修复了第一个学生姓名丢失的问题:原代码中第一个输入的姓名被后续的input()覆盖,未加入班级列表
  • 用字典student_scores存储每个学生的成绩列表,满足“成绩存储到单独列表”的需求
  • 打印成绩时,从生成的成绩列表中逐个取出元素,确保每个成绩不同
  • 增加了循环查询功能,用户可以多次查询不同学生的成绩,直到输入'q'退出
  • 移除了冗余的参数传递,简化函数逻辑

内容的提问来源于stack exchange,提问作者Jhon Cather

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:50:26