record-08 面向对象编程 文件读取和文件写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#__author: hasee
#date:  2018/1/15
from random import choice
 
 
# 分析参与程序执行期间的对象-队伍中的队员
 
# 分析对象的行为属性、数据属性
# 队员的行为属性-射门、守门
# 队员的数据属性-得分
 
# 定义类,描述同类对象
class User:
    score = 0
 
    def u_shemen(self):
        print("请选择射门方向:")
        u = input()
        return u
 
    def u_shoumen(self):
        print("请选择守门方向:")
        u = input()
        return u
 
 
class Com:
    score = 0
 
    def c_shemen(self):
        d = ['上', '下', '左', '右']
        c = choice(d)
        return c
 
    def c_shoumen(self):
        d = ['上', '下', '左', '右']
        c = choice(d)
        return c
 
 
# 梳理程序执行过程,并分析执行期间对象如何参与
for i in range(1, 6):
    print("当前是第%d轮比赛" % i)
    # 1、找到用户队伍中的一名队员,让他完成一次射门
    u1 = User()
    ud1 = u1.u_shemen()
    # 2、找到程序队伍中的一名队员,让他完成一次守门
    c1 = Com()
    cd1 = c1.c_shoumen()
    # 3、判断球进没进
    if ud1 == cd1:
        print("球没进")
    else:
        print("球进了")
        User.score = User.score + 1
    # 4、让两只队伍的队员互换,用户队员守门,程序队员射门
    ud2 = u1.u_shoumen()
    cd2 = c1.c_shemen()
    if ud2 == cd2:
        print("球没进")
    else:
        print("球进了")
        Com.score = Com.score + 1
    print("本轮比赛比分%d:%d" % (User.score, Com.score))
 
 
from random import choice
#分析程序执行期间的对象-裁判
 
#分析对象的行为属性、数据属性
#行为属性-安排用户射门、程序守门、并判断是否射进
#       -安排程序射门、用户守门、并判断是否射进
#数据属性-两只队伍的比分
 
#定义类
class CP:
    def __init__(self):
        self.u_score=0
        self.c_score=0
    def u_c(self):
        print("请用户选择射门方向:")
        u=input()
        d=['上','下','左','右']
        c=choice(d)
        if u==c:
            print("用户射门未进")
        else:
            print("用户射门进了")
            self.u_score=self.u_score+1
    def c_u(self):
        print("请用户选择守门方向:")
        u=input()
        d=['上','下','左','右']
        c=choice(d)
        if u==c:
            print("程序射门未进")
        else:
            print("程序射门进了")
            self.c_score=self.c_score+1
 
 
#梳理程序执行的过程,并明确过程中对象如何参与
cp1=CP()
for i in range(1,6):
    print("当前是第%d轮比赛"%i)
    cp1.u_c()
    cp1.c_u()
    print("本轮比赛比分%d:%d"%(cp1.u_score,cp1.c_score))
 
 
from random import choice
 
class User:
    def u_shemen(self):
        print("请选择射门方向:")
        u=input()
        return u
    def u_shoumen(self):
        print("请选择守门方向:")
        u=input()
        return u
 
class Com:
    def c_shemen(self):
        d=['上','下','左','右']
        c=choice(d)
        return c
    def c_shoumen(self):
        d=['上','下','左','右']
        c=choice(d)
        return c
 
class CP:
    def __init__(self):
        self.u_score=0
        self.c_score=0
    def u_c(self):
        u1=User()
        u=u1.u_shemen()
        c1=Com()
        c=c1.c_shoumen()
        if u==c:
            print("用户射门未进")
        else:
            print("用户射门进了")
            self.u_score=self.u_score+1
    def c_u(self):
        u1=User()
        u=u1.u_shoumen()
        c1=Com()
        c=c1.c_shemen()
        if u==c:
            print("程序射门未进")
        else:
            print("程序射门进了")
            self.c_score=self.c_score+1
 
 
cp1=CP()
for i in range(1,6):
    print("当前是第%d轮比赛"%i)
    cp1.u_c()
    cp1.c_u()
    print("本轮比赛比分%d:%d"%(cp1.u_score,cp1.c_score))
 
 
#面向对象编程三大特性
#封装、继承、多态
#封装-减少后续代码维护成本
#继承-增强代码重用性,提高代码设计效率
#多态-通过对继承的属性进行重新定义(重写),可以让其在被调用时具有不一样的表现
class Father:
    def drink(self):
        print("DRINKING 1KG")
 
class Mother:
    def drink(self):
        print("DRINKING 0.5KG")
 
class Son(Father,Mother):    #括号表示继承
    def smoke(self):
        print("SMOKING")
 
 
#多重继承中,如果父类中有同名方法,一定要弄清继承顺序
#在变量__mro__存放
#深度优先、广度优先
class A:
    def print_x(self):
        print('A')
class B:
    def print_x(self):
        print('B')
class C(A,B):
    pass
 
class D:
    def print_x(self):
        print('D')
 
class E(C,D):
    pass
 
 
print(E.__mro__)
e1=E()
e1.print_x()
 
 
#文件读取
 
#打开文件,open函数
#需要明确文件的路径(转义字符)和名称(后缀名)
#文件路径:相对路径、绝对路径
#open函数执行后,返回一个文件对象
 
f=open("abc.txt")   #把文件存在缓存中
 
 
#读取内容,把文件从缓存中,读取到程序中
#data=f.read() #read()一次将文件全部内容读取出来,并保存在一个字符串中
#print(data.split('\n'))
 
#data1=f.readline() #readline()每一次读取文件中的一行数据,并保存在一个字符串中
#print(data1)
#data2=f.readline()
#print(data2)
 
#读取文件中每一行记录,并分别统计每一行记录的字符数量
data=f.readlines() #readlines()默认读取文件中的全部内容,保存在一个列表中,列表中的每一个元素(字符串类型)都对应文件中的一行记录
print(data)
print(len(data))
'''
for i in data:
    print(len(i))
 
'''
#关闭文件
f.close()
 
 
#统计记事本文件中有几行记录
 
 
#文件写入
 
#打开文件,open()第二个参数代表打开模式
#w覆盖写入 a追加写入 r只读模式 x新建文件
#t字符串模式  b字节模式
#+ 即读又写模式
 
#f.seek(-5,1) #第一个参数表示偏移量  第二个参数表示移动开始位置(0文件开头,1当前位置,2文件结尾)
 
 
f=open('abc.txt','w')
#写入内容
f.write('hello world') #一次写入一条数据,参数为字符串类型  #从程序中写入文档
 
#l1=['hello\n','world\n','Bye']
#f.writelines(l1) #一次写入多行数据,参数为列表类型,列表中的每一个元素都是一个字符串,表示要写入的一条数据
 
 
#关闭文件
f.close()
 
#统计文件中每名学生的总成绩,并写回文件
张三 70 80 90
李四 80 70 60
王五 90 80 90
 
f=open('student.txt')
user_info=f.readlines()
print(user_info)
 
user_new=[]
for u in user_info:
    print('****************************')
    u_l=u.split()
    print(u_l)
    result=int(u_l[1])+int(u_l[2])+int(u_l[3])
    u_l.append(str(result))
    print(u_l)
    u1=' '.join(u_l)+'\n'
    user_new.append(u1)
    print('****************************')
f.close()
 
print(user_new)
f=open('student.txt','w')
f.writelines(user_new)
f.close()

  

posted @   minkillmax  阅读(246)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 如何打造一个高并发系统?
· 《SpringBoot》EasyExcel实现百万数据的导入导出
点击右上角即可分享
微信分享提示