#coding:utf-8 import os # 函数的第二个作用:实现模块化编程。可以将一个完整的逻辑,按照不同的功能划分块, 每一块都可以使用一个函数进行该块逻辑的封装。 # 先声明一个外层的大列表,用于保存多个小列表,而每一个小列表代表着一个学员的所有信息。 all_student_list = [] # [[s_name, s_age, s_weight, s_sex], [s_name, s_age, s_weight, s_sex], [s_name, s_age, s_weight, s_sex]] # 定义添加学员信息的函数 def add_student(): # 获取学员相关信息 s_name = raw_input('学员姓名:') s_age = raw_input('学员年龄:') s_weight = raw_input('学员体重:') s_sex = raw_input('学员性别:') # 将获取的学员所有信息,存入一个列表中 info_list = [s_name, s_age, s_weight, s_sex] # 再将info_list列表,存入外层的大列表all_student_list中,形成列表的嵌套关系。 all_student_list.append(info_list) print '\n学员信息添加完成!\n' # 定义查询学员信息的函数 def select_all_student(): # 直接遍历最外层的大列表all_student_list即可。 for x in xrange(0,len(all_student_list)): # 以x为索引,从all_student_list中取出学员信息小列表 student_list = all_student_list[x] # 再从student_list小列表中,读取每一个学员的信息 s_name = student_list[0] s_age = student_list[1] s_weight = student_list[2] s_sex = student_list[3] print x+1,': ',s_name,s_age,s_weight,s_sex # 定义修改学员信息的函数 def update_student_info(): # 修改前先列出所有学员信息,方便查找 select_all_student() select_number = input('请输入要修改学员的编号:') # 检测编号 while select_number < 1 or select_number > len(all_student_list): select_number = input('编号错误,请重新输入要修改学员的编号:') # 根据输入的编号作为索引,从外层的大列表中取出对应的小列表 student_list = all_student_list[select_number-1] rename = raw_input('请输入新的姓名(%s):'%student_list[0]) reage = raw_input('请输入新的年龄(%s):'%student_list[1]) reweight = raw_input('请输入新的体重(%s):'%student_list[2]) resex = raw_input('请输入新的性别(%s):'%student_list[3]) # 执行修改 student_list[0] = rename student_list[1] = reage student_list[2] = reweight student_list[3] = resex print '\n修改学员信息成功!\n' # 定义删除学员信息的函数 def delete_student_info(): print '1.根据编号删除学员信息' print '2.删除所有学员信息' select_number = input('请输入操作:') while select_number != 1 and select_number != 2: select_number = input('操作错误,请重新输入操作:') if select_number == 1: # 在根据编号删除信息前,先查询所有的学员信息。 select_all_student() number = input('请输入要删除学员编号:') if len(all_student_list) == 0: print '数据为0条记录!' else: while select_number < 1 or select_number > len(all_student_list): select_number = input('编号错误,请重新输入要修改学员的编号:') del all_student_list[number-1] print '\n数据删除成功!\n' else: if len(all_student_list) == 0: print '数据为0条记录!' else: # 删除所有学员信息 while len(all_student_list): del all_student_list[0] print '\n数据删除成功!\n' # 定义写入学员信息到本地的函数 def save_data(): # 打开文件 file_test = open('student.txt','w') for x in xrange(0,len(all_student_list)): # 以x为索引,从all_student_list中取出学员信息小列表 student_list = all_student_list[x] for y in xrange(0,len(student_list)): # y: 0 1 2 3按顺序取四个值 # 再以y为索引,从小列表中取出每一个数据 data = student_list[y] # 最后一个数据sex性别写入成功之后,直接添加一个换行符\n即可。但是 第一个数据/第二个数据/第三个数据之间需要加空格。 if y == (len(student_list)-1): file_test.write(data + '\n') else: file_test.write(data + ' ') # 关闭文件 file_test.close() # 读取本地数据的函数 def read_data(): if os.path.exists('student.txt'): # 打开文件 file_test = open('student.txt','r') data_list = file_test.readlines() for data in data_list: # 将data_list中的所有字符串遍历出来,进行处理。 # ['张三 30 87 男'] result = data.strip('\n') # 再以两个连续的空格,分割字符串 result = result.split(' ') # result是一个列表,里面有四个元素,直接将result小列表保存到 all_student_list这个大列表中即可。 all_student_list.append(result) # 关闭文件 file_test.close() read_data() while True: print ''' 1.添加学员 2.修改学员 3.查询学员 4.删除学员 0.退出 ''' select_number = input('请选择操作:') while select_number < 0 or select_number > 4: select_number = input('操作错误,请重新选择操作:') if select_number == 1: add_student() save_data() elif select_number == 2: update_student_info() save_data() elif select_number == 3: select_all_student() elif select_number == 4: delete_student_info() save_data() else: break
列表练习函数版
最新推荐文章于 2022-03-27 10:05:33 发布