列表练习函数版

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值