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