#__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()