别的不说,先来一波今天作业的答案, 随做随想的, 没去研究如何优化, 有几道题蛮有意思的,难倒是不难,就是麻烦, 课堂笔记等会晚上的时候再补
第一题
1 ''' 2 1,有如下文件,a1.txt,里面的内容为: 3 4 老男孩是最好的培训机构, 5 全心全意为学生服务, 6 只为学生未来,不为牟利。 7 我说的都是真的。哈哈 8 9 分别完成以下的功能: 10 a,将原文件全部读出来并打印。 11 b,在原文件后面追加一行内容:信不信由你,反正我信了。 12 c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。 13 d,将原文件全部清空,换成下面的内容: 14 15 每天坚持一点, 16 每天努力一点, 17 每天多思考一点, 18 慢慢你会发现, 19 你的进步越来越大。 20 e,将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。 21 ''' 22 with open('al.txt',mode= 'w',encoding = 'utf-8') as f: 23 f.write('''老男孩是最好的培训机构, 24 全心全意为学生服务, 25 只为学生未来,不为牟利。 26 我说的都是真的。哈哈''') 27 # a,将原文件全部读出来并打印。 28 with open('al.txt',mode= 'r',encoding = 'utf-8') as f: 29 print(f.read(),'\n') 30 # b,在原文件后面追加一行内容:信不信由你,反正我信了。 31 with open('al.txt',mode= 'a',encoding = 'utf-8') as f: 32 f.write('\n信不信由你,反正我信了。') 33 # c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。 34 with open('al.txt',mode = 'r+', encoding = 'utf-8') as f: 35 print(f.read()) 36 f.write('信不信由你,反正我信了。') 37 ''' 38 d,将原文件全部清空,换成下面的内容: 39 40 每天坚持一点, 41 每天努力一点, 42 每天多思考一点, 43 慢慢你会发现, 44 你的进步越来越大。''' 45 with open('al.txt', mode='w',encoding='utf-8') as f: 46 f.write('''每天坚持一点, 47 每天努力一点, 48 每天多思考一点, 49 慢慢你会发现, 50 你的进步越来越大。''') 51 # e,将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。 52 import os 53 with open('al.txt',mode='r',encoding='utf-8') as f1,\ 54 open('a1.txt',mode='w',encoding='utf-8') as f2: 55 content = f1.read() 56 f2.write(content)
第二题:
1 ''' 2 2,有如下文件,t1.txt,里面的内容为: 3 4 葫芦娃,葫芦娃, 5 一根藤上七个瓜 6 风吹雨打,都不怕, 7 啦啦啦啦。 8 我可以算命,而且算的特别准: 9 上面的内容你肯定是心里默唱出来的,对不对?哈哈 10 11 分别完成下面的功能: 12 a,以r+的模式打开原文件,判断原文件是否可读,是否可写。 13 b,以r的模式打开原文件,利用for循环遍历文件句柄。 14 c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析b,与c 有什么区别?深入理解文件句柄与 readlines()结果的区别。 15 d,以r模式读取‘葫芦娃,’前四个字符。 16 e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。 17 f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。 18 g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将 原内容全部读取出来。 19 h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’ 20 ''' 21 with open('t1.txt',mode='w',encoding='utf-8') as f: 22 f.write('''葫芦娃,葫芦娃, 23 一根藤上七个瓜 24 风吹雨打,都不怕, 25 啦啦啦啦。 26 我可以算命,而且算的特别准: 27 上面的内容你肯定是心里默唱出来的,对不对?哈哈''') 28 # a,以r+的模式打开原文件,判断原文件是否可读,是否可写。 29 with open('t1.txt',mode='r+',encoding='utf-8') as f: 30 print(f.read()) 31 f.write('看看我有没有被加入到文档,如果我出现在了文档,那么可写,否则不可写- -') 32 # b,以r的模式打开原文件,利用for循环遍历文件句柄。 33 with open('t1.txt',mode='r',encoding='utf-8') as f: 34 for i in f: 35 print(i) 36 # c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析b,与c 有什么区别?深入理解文件句柄与readlines()结果的区别。 37 with open('t1.txt',mode='r',encoding='utf-8') as f: 38 for line in f.readlines(): ### 分析, f.readlines() 是把文件里每一行的内容读到,并且一行一行的加入到一个list里面, 如果文件里的内容太多了的话,全部放到列表里面会慢. 39 print(line) ### 而b是 循环文件句柄,并且一句句打印出来,说明,句柄是可迭代的数据类型, 40 # d,以r模式读取‘葫芦娃,’前四个字符。 41 with open('t1.txt',mode='r',encoding='utf-8') as f: 42 f.seek(0) 43 print(f.read(4)) 44 # e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。 45 with open('t1.txt',mode='r',encoding='utf-8') as f: 46 c = f.readline().strip() 47 print(c,end='') # 哈哈哈 我把print的回车也删了 48 # f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。 49 with open('t1.txt',mode='r',encoding='utf-8') as f: 50 n = 0 51 print('\n') 52 for i in f.readlines(): 53 if n > 1: 54 print(i,end='') 55 n += 1 56 print('') 57 # g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将原内容全部读取出来。 58 with open('t1.txt',mode='a+',encoding='utf-8') as f: 59 f.write('\n老男孩教育') 60 f.seek(0) 61 print(f.read()) 62 # h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’ 63 with open('t1.txt',mode='a+',encoding='utf-8') as f: 64 f.seek(8*3) 65 f.truncate() 66 f.seek(0) 67 print(f.read())
第三题:
1 ''' 2 3,文件a.txt内容:每一行内容分别为商品名字,价钱,个数。 3 4 apple 10 3 5 tesla 100000 1 6 mac 3000 2 7 lenovo 30000 3 8 chicken 10 3 9 10 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。 11 ''' 12 lis=[] 13 with open('a.txt',mode='w+',encoding='utf-8') as f: 14 f.write('''apple 10 3 15 tesla 100000 1 16 mac 3000 2 17 lenovo 30000 3 18 chicken 10 3''') 19 f.seek(0) 20 for i in f: 21 lisi=i.strip().split(' ') 22 dic = {'name':'', 'price':None, 'amount':None} 23 n=0 24 for xi in lisi: 25 if n == 0: 26 dic['name'] = xi 27 elif n ==1: 28 dic['price'] = int(xi) 29 elif n == 2: 30 dic['amount'] = int(xi) 31 n += 1 32 lis.append(dic) 33 print(lis) 34 sun = 0 35 for dic in lis: 36 sun += dic['price'] * dic['amount'] 37 print(sun)
第四题:
1 '''4,有如下文件: 2 3 alex是老男孩python发起人,创建人。 4 alex其实是人妖。 5 谁说alex是sb? 6 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。 7 8 将文件中所有的alex都替换成大写的SB(文件的改的操作)。 9 ''' 10 with open('test4.txt',mode='w',encoding='utf-8') as f: 11 f.write('''alex是老男孩python发起人,创建人。 12 alex其实是人妖。 13 谁说alex是sb? 14 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。''') 15 import os 16 with open('test4.txt',mode='r',encoding='utf-8') as f,\ 17 open('test4_new.txt',mode='w',encoding='utf-8') as f1: 18 for line in f: 19 line =line.replace('alex', 'SB') 20 f1.write(line) 21 os.remove('test4.txt') 22 os.rename('test4_new.txt','test4.txt')
第五题:
1 ''' 2 5,文件a1.txt内容(升级题) 3 4 name:apple price:10 amount:3 year:2012 5 name:tesla price:100000 amount:1 year:2013 6 ....... 7 8 通过代码,将其构建成这种数据类型: 9 [{'name':'apple','price':10,'amount':3}, 10 {'name':'tesla','price':1000000,'amount':1}......] 11 并计算出总价钱。 12 ''' 13 with open('al.txt',mode='w',encoding='utf-8') as f: 14 f.write('''name:apple price:10 amount:3 year:2012 15 name:tesla price:100000 amount:1 year:2013''') 16 with open('al.txt',mode='r',encoding='utf-8') as f: 17 lis = [] 18 for i in f: 19 i = i.strip().split(' ') 20 dic = {} 21 for i1 in i: 22 k, v = i1.split(':') 23 if k == 'year': 24 continue 25 dic[k] = v 26 lis.append(dic) 27 print(lis) 28 sun = 0 29 for i in lis: 30 sun += int(i['price']) * int(i['amount']) 31 print(sun)
第六题:
扫描二维码关注公众号,回复:
1529484 查看本文章
1 ''' 2 6,文件a1.txt内容(升级题) 3 4 序号 部门 人数 平均年龄 备注 5 1 python 30 26 单身狗 6 2 Linux 26 30 没对象 7 3 运营部 20 24 女生多 8 ....... 9 10 通过代码,将其构建成这种数据类型: 11 [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'}, 12 ......] 13 ''' 14 with open('al.txt',mode='w',encoding='utf-8') as f: 15 f.write('''序号 部门 人数 平均年龄 备注 16 1 python 30 26 单身狗 17 2 Linux 26 30 没对象 18 3 运营部 20 24 女生多''') 19 with open('al.txt',mode='r',encoding='utf-8') as f: 20 con = f.readline().strip().split(' ') 21 lis1 = [] 22 23 key = [] 24 for c in con: 25 if c == '': 26 continue 27 key.append(c) 28 29 for i in f: 30 if i == '序号 部门 人数 平均年龄 备注\n': 31 continue 32 print(i) 33 lis = i.strip().split(' ') 34 n = 0 35 dic = {} 36 for li in lis: 37 if li == '': 38 continue 39 print(li) 40 dic[key[n]] = li 41 n +=1 42 lis1.append(dic) 43 44 print(lis1)