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

Python程序故障:无法接收学生姓名,需修复输入及成绩报告功能

问题排查与修复方案

我帮你梳理下代码里的几个关键问题,以及对应的修复方式:

1. 核心错误:误用循环临时变量而非列表

你在打印报告的时候,用了循环里的临时变量x和y,但这两个变量在循环结束后,只存储了最后一个输入的学生姓名和分数,并不是整个列表。正确的做法应该是用你之前定义的students和marks列表来索引取值。

2. 语法错误:未闭合的括号与无效索引

最后一行代码print(x[4],":", y[...]有两处问题:一是y[...]是无效的索引写法,二是整个语句缺少闭合的括号,会直接导致语法报错。

3. 可选优化:分数转为数值类型

输入的分数默认是字符串类型,建议转成int或float,让报告更符合实际使用场景。


修复后的完整代码

students = []
for num in range(5):
    name = input("Enter name of student: ")
    students.append(name)

marks = []
for num in range(5):
    # 加入异常处理,避免输入非数字导致报错
    try:
        mark = float(input(f"Enter marks for {students[num]}: "))
        marks.append(mark)
    except ValueError:
        print("Please enter a valid number for marks!")
        exit()

report_request = input("Do you want to print class report?: ")
if report_request.lower() == 'yes':
    print("\n=== Class Report ===")
    # 用zip同时遍历姓名和分数,更简洁不易出错
    for name, mark in zip(students, marks):
        print(f"{name}: {mark}")

修复细节说明

  • 把打印逻辑改成遍历students和marks列表,用zip()函数可以同时配对姓名和分数,比手动索引更简洁且不易出错。
  • 给分数输入增加了异常处理,防止用户输入非数字内容导致程序崩溃。
  • 将报告请求的判断改成lower(),这样用户输入YES或Yes也能触发打印,更友好。
  • 优化了变量命名(比如把x改成name,report改成report_request),让代码可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:57