主循环返回时如何打印函数值?学生记录代码实现求助
解决学生记录管理代码的打印问题
看起来你正在搭建一个学生记录管理的小工具,先梳理下你的代码里的小问题,再解决你问的「主循环返回时怎么打印函数值」的问题~
首先先看你写的原始代码:
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()
关键说明
- 让函数返回有效数据:修改后的
get_student_record函数返回学生姓名和课程的元组,主函数调用它时能拿到真实的记录数据,而不是像你原来的std1那样返回main()(这会导致无限递归调用)。 - 在主循环中接收并打印:主函数里调用记录函数后,把返回值存到变量(比如
stdrec1)里,不管是保存后立即打印,还是退出前统一打印,直接输出变量即可。 - 避免重复代码:把
std1和std2的重复逻辑抽成通用函数,后续要加更多学生记录时,不用再写重复代码。
内容的提问来源于stack exchange,提问作者Techincal Hacks
相关产品推荐
相关产品推荐

