import io
datelist = []
for i in range(3):
name = input('请输入名字:')
xuehao = input('请输入学号:')
chengji = input('请输入成绩:')
datelist.append([name,xuehao,chengji])
with open('exam.txt','w',encoding='utf-8') as f:
f.write(str(datelist))
with io.open('exam.txt','rb') as f: ##使用io读取文件只能是流数据,所以不能用r的方式读取文件
panduan = int(input('1.姓名2.学号3.成绩,请输入选择的序号: '))
# temp = []
temp = eval(f.read().decode('utf-8')) #我这个是把读取的数据重新转换成列表
##我看你在这一块用了字符串替换的方法,那么现在temp应该是一个字符串,那么根据你写的方法结果应该类似这样的 张三00180李四00293王五00382,所以根据后面用户输入,你所用的方法应该虽然可以取到结果,但是不能取到相要的结果
##我认为你想要的应该是如果输入1,就把所有的姓名打印出来,后面2和3 分别打印学号和成绩
if panduan == 1:
result = list(map(lambda x:x[0],temp))
print( result , ','.join(result) )
if panduan == 2:
result = list(map(lambda x:x[1],temp))
print( result , ','.join(result) )
if panduan == 3:
result = list(map(lambda x:x[2],temp))
print( result , ','.join(result) )