码迷,mamicode.com
首页 > 编程语言 > 详细

python之道08

时间:2019-06-15 09:19:02      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:for   好的   default   完成   open   print   else   发起人   lex   

1.有如下文件,a1.txt,里面的内容为:


某某是最好的学校,

全心全意为学生服务,

只为学生未来,不为牟利。

我说的都是真的。哈哈


分别完成以下的功能:

a,将原文件全部读出来并打印。

答案

f = open('a1.txt',mode='r')
print(f.read())
f.close()
'''
输出结果
老男孩是最好的学校,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈

'''

b,在原文件后面追加一行内容:信不信由你,反正我信了。

答案

f = open('a1.txt',mode='a')
f.write('信不信由你,反正我信了')
f.close()
'''
老男孩是最好的学校,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈信不信由你,反正我信了
'''

c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。

答案

f = open('a1.txt',mode='r+')
f.read()
f.write('信不信由你,反正我信了')
f.close()
'''
老男孩是最好的学校,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈信不信由你,反正我信了
'''

d,将原文件全部清空,换成下面的内容:


每天坚持一点,

每天努力一点,

每天多思考一点,

慢慢你会发现,

你的进步越来越大。

答案

f = open('a1.txt',mode='w')
f.write('''
每天坚持一点,

每天努力一点,

每天多思考一点,

慢慢你会发现,

你的进步越来越大。
''')
f.close()

2.有如下文件,t1.txt,里面的内容为:


葫芦娃,葫芦娃,

一根藤上七个瓜

风吹雨打,都不怕,

啦啦啦啦。

我可以算命,而且算的特别准:

上面的内容你肯定是心里默唱出来的,对不对?哈哈


分别完成下面的功能:

a,以r的模式打开原文件,利用for循环遍历文件句柄。

答案

f = open('t1.txt',mode='r')
for i in f:
    print(i)
f.close()

b,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析b,与c 有什么区别?深入理解文件句柄与 readlines()结果的区别。

c,以r模式读取‘葫芦娃,’前四个字符。

答案

b.
f = open('t1.txt',mode='r')
print(f.readlines())
f.close()
'''
['葫芦娃,葫芦娃,\n', '\n', '一根藤上七个瓜\n', '\n', '风吹雨打,都不怕,\n', '\n', '啦啦啦啦。\n', '\n', '我可以算命,而且算的特别准:\n', '\n', '上面的内容你肯定是心里默唱出来的,对不对?哈哈']
'''
c. 
f = open('t1.txt',mode='r')
print(f.read(4))
f.close()
'''
葫芦娃,
'''
b,与c 有什么区别:
1. readlines()一行一行读取全部文件,且结尾会有换行符\n
2. read()是一口气读取全部内容,如果文件文很大容易内存溢出

d,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。

答案

f = open('t1.txt',mode='r')
f1 = f.readline().strip().split('\n')
print(f1)
f.close()
'''
['葫芦娃,葫芦娃,']
'''

e,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将 原内容全部读取出来。

答案

f = open('t1.txt',mode='a+')
f.write('\n'+'老男孩教育')
f.seek(0)
print(f.read())
f.close
'''
葫芦娃,葫芦娃,

一根藤上七个瓜

风吹雨打,都不怕,

啦啦啦啦。

我可以算命,而且算的特别准:

上面的内容你肯定是心里默唱出来的,对不对?哈哈

老男孩教育
'''

3.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。


apple 10 3

tesla 100000 1

mac 3000 2

lenovo 30000 3

chicken 10 3


通过代码,将其构建成这种数据类型:[{‘name‘:‘apple‘,‘price‘:10,‘amount‘:3},{‘name‘:‘tesla‘,‘price‘:1000000,‘amount‘:1}......] 并计算出总价钱。

答案

lis = []
key_list = ['name','price','amount']
num = 0
with open('a.txt',mode='r') as f:
    for l in f:
        l_list = l.strip().split()
        dic = {key_list[0]:l_list[0],key_list[1]:l_list[1],key_list[2]:l_list[2]}
        lis.append(dic)
        num = num + int(l_list[1]) * int(l_list[2])
print(lis)
print('总价格为:',num)

'''
[{'name': 'apple', 'price': '10', 'amount': '3'}, {'name': 'tesla', 'price': '100000', 'amount': '1'}, {'name': 'mac', 'price': '3000', 'amount': '2'}, {'name': 'lenovo', 'price': '30000', 'amount': '3'}, {'name': 'chicken', 'price': '10', 'amount': '3'}]
总价格为: 196060
'''

4.有如下文件:


alex是老男孩python发起人,创建人。

alex其实是人妖。

谁说alex是sb?

你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。


将文件中所有的alex都替换成大写的SB(文件的改的操作)。

答案

with open('a.txt',mode='r') as f,    open('a.txt_bak',mode='w+') as f2,    open('new_a.txt',mode='a') as f1:

    for i in f:
        content = i.replace('alex','SB')
        f1.write(content)
import os
os.rename('./a.txt_bak','a.txt')
os.rename('new_a.txt','a.txt')

5.文件a1.txt内容(升级题)


name:apple price:10 amount:3 year:2012

name:tesla price:100000 amount:1 year:2013



.......


通过代码,将其构建成这种数据类型:

[{‘name‘:‘apple‘,‘price‘:10,‘amount‘:3,year:2012},

{‘name‘:‘tesla‘,‘price‘:1000000,‘amount‘:1}......]

并计算出总价钱。

答案

# 方法一:

lis = []
my_sum = 0
with open('a1.txt',mode='r') as f:
    for i in f:
        x = i.split()
        dic1 = {}
        for i1 in x:
            k = i1.split(':')[0]
            v = i1.split(':')[1]
            dic1[k]=v
        lis.append(dic1)
print(lis)
for em in lis:
    sum = int(em['price'])* int(em['amount'])
    my_sum += sum
print(my_sum)

'''
输出结果
[{'name': 'apple', 'price': '10', 'amount': '3', 'year': '2012'}, {'name': 'tesla', 'price': '100000', 'amount': '1', 'year': '2013'}]
100030
'''

# 方法二:
result_list=[]
sum=0
with open('a1.txt',encoding='gbk') as f:
    for line in f:
        line_list=line.strip().split()
        d={}
        for i in line_list:
            key, value=i.split(':')
            if value.isdecimal():
                value=int(value)
            d.setdefault(key,value)
        sum+=d['price']*d['amount']
        result_list.append(d)
print(result_list)
print(sum)
'''
输出结果
[{'name': 'apple', 'price': 10, 'amount': 3, 'year': 2012}, {'name': 'tesla', 'price': 100000, 'amount': 1, 'year': 2013}]
100030
'''

6.文件a1.txt内容(升级题)


序号 部门 人数 平均年龄 备注

1 python 30 26 单身狗

2 Linux 26 30 没对象

3 运营部 20 24 女生多


.......


通过代码,将其构建成这种数据类型:

[{‘序号‘:‘1‘,‘部门‘:Python,‘人数‘:30,‘平均年龄‘:26,‘备注‘:‘单身狗‘},

......]

答案

# 方法一
l1 = []
dic = {}
with open('a1.txt',mode='r') as f:
    f1 = f.readline()
    for i in f:
        a= i.split()
        # print(a)
        dic={'序号':a[0],'部门':a[1],'人数':a[2],'平均年龄':a[3],'备注':a[4]}
        l1.append(dic)
print(l1)
'''
输出结果
[{'序号': '1', '部门': 'python', '人数': '30', '平均年龄': '26', '备注': '单身狗'}, {'序号': '2', '部门': 'Linux', '人数': '26', '平均年龄': '30', '备注': '没对象'}, {'序号': '3', '部门': '运营部', '人数': '20', '平均年龄': '24', '备注': '女生多'}]
'''
# 方法二
count=0
keys_list=[]
class_list=[]
result_list=[]
with open('a1.txt',encoding='gbk') as f:
    for line in f:
        count += 1
        if count==1:
            keys_list=line.strip().split()
            continue
        else:
            class_list=line.strip().split()
        d = {}
        for j in range(len(keys_list)):
            if class_list[j].isdecimal():
                d.setdefault(keys_list[j],int(class_list[j]))
            else:
                d.setdefault(keys_list[j], class_list[j])
        result_list.append(d)
    print(result_list)

'''
[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'}]
'''

python之道08

标签:for   好的   default   完成   open   print   else   发起人   lex   

原文地址:https://www.cnblogs.com/zanao/p/11026035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!