程序1:学员管理系统V2.0 (列表嵌套)
程序2:学员管理系统的修改(修改为可以保存输入的学员信息,保存在一个文档中)
程序3:手机销售系统
(作业
)
1、函数参数传递的问题:(定义函数时可以创建一个参数,在调用函数时带上参数即可)
例如:定义函数:
def get_index(type):(定义函数时最好加上注释)
'''函数的功能描述:获取用户选择学员序号:param type: 选择序号的类型 (参数的内容):return : 选择的序号(返回的内容)'''index = input( '请选择要%s的学员序号:' %type)
调用函数:
index = get_index( '修改' )index = get_index( '删除' )
2、嵌套列表中也可以使用集体定义列表的功能
例1:一维列表:
name= input( '请输入学员姓名:')age= input( '请输入学员年龄:')age= int(age)sex= input( '请输入学员性别(男/女):')stu_list=[name,age,sex]
例2:二维列表:写法1;new_name= input( '请输入新学员姓名:')new_age= input( '请输入新学员年龄:')new_age= int(new_age)new_sex= input( '请输入新学员性别:')class_list[stu_id- 1][ 0]=new_nameclass_list[stu_id- 1][ 1]=new_ageclass_list[stu_id- 1][ 2]=new_sex写法2:new_name= input( '请输入新学员姓名:')new_age= input( '请输入新学员年龄:')new_age= int(new_age)new_sex= input( '请输入新学员性别:')class_list[stu_id- 1]=[new_name,new_age,new_sex]
3、return强制结束函数的执行,return下的代码都不会再执行了。
例如:#判断是否有学员信息,如果没有,直接结束函数的执行
if len(student_list) == 0:
print( '没有学员信息,无法进行修改操作!')# 强制结束函数的执行 return 下面的代码 都不会再执行了return
# 1.查询学员信息query_student()# 2.选择要修改的学员序号num = input( '请选择要修改的学员序号:')
4、将数据写入文件进行保存以及从文件中读取数据:
代码中常用的文件格式:doxc xls txt .h5
不管是写入数据还是读取数据,都需要先打开文件,最后关闭文件,一共三步。
4.1 打开文件:文件可以在列表中新建文件,也可以使用python内置的open函数打开。
使用r参数,r是其默认参数,可传可不传。file_handle=open('1.txt' )即可。例如:打开文件,写入模式:file_handle=open('1.txt',mode='w')open(‘文件名’,mode='文件的打开模式')
打开文件,读取模式:file_handle=open('1.txt',mode='r')
文件的几种打开模式:
No1:w:只能操作写入。w模式中打开文件,如果文件中有数据,再次写入内容,会把原来的文件内容覆盖掉。
No2:r:只能读文件。
No3: a:在文件中追加内容。
No4: w+:可读可写。
No5: r+:可读可写。
No6: a+:可读可追加。
No7: wb+:写入进制数据。
注:在w,a模式下,如果文件不存在会自动创建文件,r模式必须保证文件存在。在进行读取文件时,最好进行文件是否存在的判断。
判断文件是否存在代码:
#引入OS包import osdef read_data():
# 1.判断文件是否存在rs = os.path.exists( 'students_v2.txt')if rs == True:
# 2.打开文件file_handle = open( 'students_v2.txt', mode= 'r')
4.2 写入文件:(中文文本在本地文件中可以查看,在pycharm中可能出现乱码)
如果在文件中先编辑数据再读取文件,读取的文件在敲回车的地方仍然会有换行符。
法1:write写入:不会自己换行,需要换行的话需要自己输入换行符\n。
例如: file_handle.write( 'hello world \n ' )
file_handle.write( '你好,世界' )
法2:writelines()函数,参数必须是一个只存放字符串的列表。会将列表中的字符串紧挨着写在文件中,但是不会自动换行,如果需要换行,手动添加换行符。
file_handle.writelines([ 'hello \n ' , 'world \n ' , '你好 \n ' , '智游 \n ' , 'zhengzhou \n ' ])
4.3 读取数据:
使用r模式打开文件,做读取文件操作。打开文件的模式,默认就是r模式,如果只是读取文件不用填写mode模式。法1:read(int)函数,读取文件内容,括号内参数指定长度,不指定读取所有数据。
例如:content=file_handle.read()print(content)
法2:readline(int)函数,读取文件中的一行数据,参数指定读取的长度。默认读取一行数据(由上向下)。
例如:content=file_handle.readline()print(content)
法3:readlines()读取所有行数据,会把每一行的数据作为一个元素,放在列表中返回例如: contents=file_handle.readlines()
print(contents)
4.4 关闭文件:文件名.close()
例如:file_handle.close()
附:文件存取中两个不太重要的函数:tell()函数,seek()函数
tell()函数,返回当前文件中光标的位置,读取文件中的位置在哪,一个字符是一个位置,空格也算一个字符
offset偏移量#seek()函数,调整光标的位置(光标的位置,光标的方式(0直接移动到开头,1不动,2到末尾 默认为0))例如:file_handle.seek(0,0)file_handle.seek(0)例如:
file_handle=open('1.txt')content=file_handle.readline()print(content)number=file_handle.tell()print(number)
5、把单列表中数据的写入文件:(单列表)
list_1 = [
'张三'
,
'李四'
,
'王五'
]
file_handle =
open
(
'student.txt'
,
mode
=
'w'
)
for
name
in
list_1:
file_handle.write(name)
file_handle.write(
'
\n
'
)
file_handle.close()
6、读取文件中的数据,用列表形式输出:(单列表)
要求:读取文件,并且输出必须是列表形式,格式:
['张三','李四','王五']
file_handle =
open
(
'student.txt'
,
mode
=
'r'
)
contents = file_handle.readlines()
student_list = []
for
name
in
contents:
name = name.strip(
'
\n
'
)
student_list.append(name)
print
(student_list)
file_handle.close()
7、
strip()函数去除字符串中的某些字符。
例如:去除换行符\n:
name = name.strip(
'
\n
'
)
8、将嵌套的多个列表写入文本:(多列表)
student_list = [[
'张三'
,
'22'
,
'110'
],[
'李四'
,
'22'
,
'110'
],[
'王五'
,
'22'
,
'110'
]]
file_handle =
open
(
'student_v2.txt'
,
mode
=
'w'
)
for
student
in
student_list:
for
msg
in
student:
file_handle.write(msg)
file_handle.write(
' '
)
file_handle.write(
'
\n
'
)
file_handle.close()
9、从文件中取出数据,输出格式为:(多列表)
[['张三','22','110'],['李四','22','110'],['王五','22','110']]
file_handle =
open
(
'student_v2.txt'
,
mode
=
'r'
)
contents = file_handle.readlines()
student_list = []
for
msg
in
contents:
msg = msg.strip(
'
\n
'
)
list_1 = msg.split(
' '
)
list_1.pop()
student_list.append(list_1)
file_handle.close()
print
(student_list)
10、
join()函数实现把列表中的数据用某字符分开并拼接为一个字符串:
例如:把列表中的数据用 空格分开并拼接为一个字符串:(使得将嵌套列表中的数据写入文件的过程可以在单次循环中就实现)
for student in student_list:
# 把列表中的数据用 空格分开并拼接为一个字符串
s = ' '.join(student)
# 写入
file_handle.write(s)
file_handle.write('\n')
student_list = [['张三','22','110'],['李四','22','110'],['王五','22','110']]
file_handle = open('student_v2.txt',mode='w')
for student in student_list:
s = ' '.join(student)
file_handle.write(s)
file_handle.write('\n')
file_handle.close()
11、
split()函数通过某个字符分割字符串,返回的是分割完成后的列表;
例如:通过 空格分割字符串,返回的是分割完成后的列表。(即将分割后得到的字符串,放在列表中返回。)
list_1 = msg.split(
' '
)