Python实训报告

1.列表本身是有顺序的,而且非常非常非常重要的一点,列表中的第一个数的顺序是“0”,索引是从0开始的,切记!

2.修改列表时可以用,insert(位置,内容)来修改。

3.删除列表的内容时,用del可以直接锁定列表的位置来删除,用remove(内容),会将列表了第一次出现的内容删除,pop方法是直接删除末尾的内容,也可以看做是一种变相的提取,加上位置,比如pop(位置),就可以提取任何一个位置上的内容。

4.学习时还遇到了几个非常常用的方法,可能在live里没有提到。len()来确定字符串的长度。range(数字),来生成从0开始一直到输入数字的一组连续的数字,例如输入的是10,会生成0到9的10个数。range(len()),这两者的结合可以很好的用来当做一组数据的索引,来确定数据中的位置,非常好用。

5.在写for循环时,要非常注意首行缩进,一般是缩进4个空格字符串,因为当嵌套的循环过多时,非常容易出错,系统无法识别出谁是谁的循环体。for我建议理解为遍历,就是指从头到尾看完整个数据。

6.while才是真正名义上的循环,只要满足条件就会重复进行,因此用while时一定要保证有可以结束循环的语句,比如说,用continue,break等,要不然系统就会无限进行循环。

7.range的左闭右开特性,举例子,range(1,5),以为是生成1到5折五个数字,但是根据Python左闭右开的特性,实际是生成1到4这四个数字,切记,在切片,索引中非常重要。

插入

def insert(): # 插入信息
students_list = []
while True: # 循环输入
Id = input(‘请输入Id:’)
if not Id: # 防止手滑
print(‘Id有误’)
break
Name = input(‘请输入名字:’)
if not Name:
print(‘姓名有误’)
break

    try:
        English = int(input('请输入英语成绩:'))
        Python = int(input('请输入Python成绩:'))
        Java = int(input('请输入Java成绩:'))
    except:
        print('输入有误,不是有效整数,请重新输入')
        continue
    # 将录入的成绩存储到字典中
    student = {'Id': Id, 'Name': Name, 'English': English, 'Python': Python, 'Java': Java,
               'Total': English + Python + Java}
    # 将录入的成绩保存到列表中
    students_list.append(student)  # 将字典保存到列表中
    answer = input('继续录入请输入Y/y:')
    if answer in ['Y', 'y']:
        continue
    else:
        save(students_list)
        break

删除

def delete(): # 删除
fileName_new = input(‘请输入需要打开的学生信息文件名:’) + ‘.txt’
if os.path.exists(fileName_new): # 确定文件是否存在
while True: # 循环删除操作
with open(fileName_new, ‘r’, encoding=‘utf-8’) as file:
file_old = file.readlines() # 读取旧信息
if file_old: # 如果信息不为空
show_student(file_old) # 先展示下
flag = False # 判断是否删除了
student_Id = input(‘请输入要删除学生的Id:’) # 存学生Id
if student_Id: # 判断学生Id是否合法
with open(fileName_new, ‘w’, encoding=‘utf-8’) as newfile: # 打开新的同名文件
for item in file_old: # 逐个读取学生信息
d = dict(eval(item)) # 变成字典
if d[‘Id’] != student_Id: # 如果不匹配就写入
newfile.write(str(d) + ‘\n’) # 要把字典变成字符串导入
else: # 匹配就显示然后跳过
print(format_title.format(d[‘Id’], d[‘Name’], d[‘English’], d[‘Python’], d[‘Java’],
d[‘Total’]))
flag = True # 标记为已经删除
if flag:
print(f’Id为{student_Id}的学生信息已经被删除’)
else:
print(f’没有找到Id为{student_Id}的学生信息’)
choose = input(‘是否继续删除y/n:’)
if choose == ‘y’:
continue
else:
break
else:
print(‘学生Id输入非法,请重新输入’)
continue
else:
print(‘无学生信息’)
else:
print(‘输入的文件不存在’)

修改

def modify(): # 修改 和删除差不多,就直接CV了。。。
fileName_new = input(‘请输入需要打开的学生信息文件名:’) + ‘.txt’
if os.path.exists(fileName_new): # 确定文件是否存在
with open(fileName_new, ‘r’, encoding=‘utf-8’) as file: # 读取旧信息
file_old = file.readlines()
if file_old:
while True: # 循环修改操作
show_student(file_old) # 展示
flag = False # 判断是否修改
student_Id = input(‘请输入要修改学生的Id:’) # 存学生Id
if student_Id: # 判断学生Id是否合法
with open(fileName_new, ‘w’, encoding=‘utf-8’) as newfile: # 打开新的同名文件
for item in file_old: # 逐个读取学生信息
d = dict(eval(item)) # 变成字典
if d[‘Id’] != student_Id: # 如果不符合就写入
newfile.write(str(d) + ‘\n’)
else: # 符合就显示然后修改
print(f’Id为{student_Id}的学生信息为{item}’, end=’’)
print(‘请输入修改后的数据’)
while True:
Id = input(‘请输入Id:’)
if not Id:
print(‘Id有误’)
break
Name = input(‘请输入姓名:’)
if not Name:
print(‘姓名有误’)
try:
English = int(input(‘请输入英语成绩:’))
Python = int(input(‘请输入Python成绩:’))
Java = int(input(‘请输入Java成绩:’))
except:
print(‘您输入的成绩不是正常整数,请重新输入’)
continue
student = {‘Id’: Id, ‘Name’: Name, ‘English’: English, ‘Python’: Python,
‘Java’: Java, ‘Total’: English + Python + Java}
newfile.write(str(student) + ‘\n’)
flag = True # 标记为已经删除
break
if flag:
print(f’Id为{student_Id}的学生信息已经修改’)
else:
print(f’没有找到Id为{student_Id}的学生信息’)
choose = input(‘是否继续修改y/n:’)
if choose == ‘y’: # 也可以直接调用自身函数进行重复修改
continue
else:
break
else:
print(‘学生Id输入非法,请重新输入’)
continue
else:
print(‘读取学生信息为空’)
else:
print(‘输入的文件不存在’)

更多推荐

Python实训报告