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

主循环返回时如何打印函数值?学生记录代码实现求助

解决学生记录管理代码的打印问题

看起来你正在搭建一个学生记录管理的小工具,先梳理下你的代码里的小问题,再解决你问的「主循环返回时怎么打印函数值」的问题~

首先先看你写的原始代码:

def std1():
    stud=input('Enter Student name')
    crs=[]
    crst=int(input('How many courses you want to enter'))
    for i in range(crst):
        EnterCourse = input('Course')
        crs.append(str(EnterCourse))
    stdrec1=(stud,crs)
    return main()  # 这里不该返回main(),应该返回学生记录
def std2():
    stud=input('Enter Student name')
    crs=[]
    crst=int(input('How many courses you want to enter'))
    for i in range(crst):
        EnterCourse = input('Course')
        crs.append(str(EnterCourse))
    stdrec2=(stud,crs)  # 这个函数没有返回值,主函数拿不到记录
def main...  # 主函数未完成

核心问题解决思路

要在主循环里打印函数返回值,关键是让你的学生记录函数返回正确的记录数据,然后在主函数里调用这些函数、接收返回值,最后按需打印。另外你的代码里std1和std2逻辑完全重复,我帮你把重复逻辑抽成一个通用函数,代码更简洁好维护。

修改后的完整代码

def get_student_record():
    # 通用的学生记录输入函数,避免重复写相同逻辑
    stud = input('Enter Student name: ')
    crs = []
    crst = int(input('How many courses you want to enter: '))
    for i in range(crst):
        # 给输入加个序号提示,用户体验更好
        course = input(f'Enter course {i+1}: ')
        crs.append(course)
    # 返回学生姓名和课程组成的元组
    return (stud, crs)

def main():
    # 初始化两个学生记录变量,避免后续报错
    stdrec1 = None
    stdrec2 = None
    
    # 主循环,让用户可以重复操作
    while True:
        print("\n=== 学生记录管理系统 ===")
        print("1. 输入学生1的记录")
        print("2. 输入学生2的记录")
        print("3. 查看所有记录并退出")
        choice = input("请输入你的选择: ")
        
        if choice == '1':
            # 调用函数获取记录,存到变量里
            stdrec1 = get_student_record()
            print(f"✅ 已保存学生1的记录: {stdrec1}")
        elif choice == '2':
            stdrec2 = get_student_record()
            print(f"✅ 已保存学生2的记录: {stdrec2}")
        elif choice == '3':
            # 退出前打印所有已保存的记录
            print("\n📋 所有学生记录如下:")
            if stdrec1 is not None:
                print(f"学生1: {stdrec1}")
            if stdrec2 is not None:
                print(f"学生2: {stdrec2}")
            print("程序已退出~")
            break
        else:
            print("❌ 无效选择,请重新输入数字1-3")

# 启动主函数
if __name__ == "__main__":
    main()

关键说明

  1. 让函数返回有效数据:修改后的get_student_record函数返回学生姓名和课程的元组,主函数调用它时能拿到真实的记录数据,而不是像你原来的std1那样返回main()(这会导致无限递归调用)。
  2. 在主循环中接收并打印:主函数里调用记录函数后,把返回值存到变量(比如stdrec1)里,不管是保存后立即打印,还是退出前统一打印,直接输出变量即可。
  3. 避免重复代码:把std1和std2的重复逻辑抽成通用函数,后续要加更多学生记录时,不用再写重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:26:40