dic={ '001':{'name':'张三','age': 18 ,'num':'001'},
'002':{'name':'张二','age': 28 ,'num':'002'}}
class FileAction():
@staticmethod
def writeDate():
f=open("Data.txt",'w')
for k,v in dic.items():#解析出第一层字典例如001,{'name':'张三','age': 18 ,'num':'001'}
for k1,v1 in v.items():#解析出第二层字典:name 张三 age 18 num 001
f.write((k1+":"+str(v1)))
if k1=='num':
f.write('\n')
else:
f.write(',')
f.close()
@staticmethod
def readDate( ):
f=open('Data.txt','r')
line=f.readline()
dzd={}
while len(line)>0:
items=line.strip().split(',')#读每一句话,删除空格和\n,并用逗号隔开每个项例如[name:张三 age:18 num:001]
zd={}#每行定义第二层字典
for item in items:
s=item.split(':')#把每项例如name:张三 ,切成键值对,例如name和张三
if s[0]=='age':#如果是年龄,转换成整形
zd[s[0]]=int(s[1])
else:
zd[s[0]]= s[1]
if s[0]=='num':#如果是num,让其成为第一层的键
dzd[s[1]]=zd
line=f.readline()
print(dzd)
f.close()
FileAction.writeDate()
FileAction.readDate()
#2:
class People():
tax=0
def __init__(self,name,age,work,salary):
pass
self.name=str(name)
self.age=int(age)
self.work=str(work)
self.salary=int(salary)
self.__energy=100
def eat(self,money):
self.__energy=self.__energy+10 if self.__energy<90 else 100
self.salary=self.salary-money
print(self.salary)
def say(self):
print(self.name)
def working(self):
People.tax+=self.salary*0.2
self.__energy=self.__energy-30 if self.__energy >30 else 0
print(People.tax)
print(self.__energy)
def sleep(self):
self.__energy=self.__energy+60 if self.__energy<40 else 100
print(self.__energy)
def get_energy(self):
return self.__energy
class Women(People):
def shoping(self,money):
self.salary-=money
print(self.salary)
class Man(People):
def say(self):
print(self.name,"一个笑话")
zs=Man("张三",16,"程序员",9000)
zs.say()
zs.eat(10)
zs.working()
ls=Women("张三",14,"程序员",9000)
ls.shoping(200)
ls.sleep()
print(ls.get_energy())
# class People():
# tax=0
# def __init__(self,name,age,work,salary):
# pass
# self.name=str(name)
# self.age=int(age)
# self.work=str(work)
# self.salary=int(salary)
# self.__energy=100
# @property
# def ener(self):
# self.__energy=self._energy
# return self.__energy
# @ener.setter
# def ener(self, energy_x):
# if int(energy_x) < 0:
# self._energy = 0
# elif int(energy_x) > 100:
# self._energy = 100
# else:
# self._energy = energy_x
# def eat(self,money):
# self.salary=self.salary-money
# self.__energy+=10
# self.ener=self.__energy
# print(self.salary)
# def say(self):
# print(self.name)
# def working(self):
# People.tax+=self.salary*0.2
# self.__energy-=30
# self.ener = self.__energy
# print(People.tax)
# print(self.ener)
# def sleep(self):
# self.__energy+=60
# self.ener = self.__energy
# print(self.ener)
# def get_energy(self):
# return self.__energy
# class Women(People):
# def shoping(self,money):
# self.salary-=money
# print(self.salary)
# class Man(People):
# def say(self):
# print(self.name,"一个笑话")
# zs=Man("张三",16,"测试",9000)
# zs.say()
# zs.eat(10)
# zs.working()
# ls=Women("李四",14,"开发",12000)
# ls.shoping(200)
# ls.sleep()
# ls.sleep()
# print(ls.get_energy())
# print(ls.name)
# # print(ls.__energy)
#等腰三角形
class Paint():
def star(self):
i=1
while i<6:
j=1
while j<=5-i:
print(" ",end="")
j+=1
j=1
while j<=2*i-1:
print("*",end="")
j+=1
i+=1
print()
p=Paint()
p.star()
class Paint():
# def star(self):
# for i in range(1,6):
# for j in range(1,6-i):
# print(" ",end="")
# for j in range(1,2*i):
# print("*",end="")
# print()
# p=Paint()
# p.star()
class Paint():
def star(self):
i=1
while i<6:
j=1
while j<=5-i:
print(" ",end="")
j+=1
j=1
while j<=2*i-1:
if j==1 or j==2*i-1 or i==5:
print("*",end="")
else:
print(" ",end="")
j+=1
i+=1
print()
p=Paint()
p.star()
# class Paint():
# def star(self):
# for i in range(1,6):
# for j in range(1,6-i):
# print(" ", end="")
# for j in range(1,2*i):
# if j==1 or j==2*i-1 or i==5:
# print("*",end="")
# else:
# print(" ",end="")
# print()
# a=Paint()
# a.star()
a={ '001':{'name':'张三','age':18,'address':'北京'},
'002':{'name':'张二','age':28,'address':'上海'},
'003':{'name':'张大','age':38,'address':'北京'},
'004':{'name':'张四','age':28,'address':'上海'},
'005':{'name':'张六','age':38,'address':'北京'}
}
class StudentAdmin():
@staticmethod
def write():
f=open("a.txt","w")
f.write(str(a))
f.close()
@staticmethod
def read():
f=open("a.txt","r")
c=f.read()
f.close()
print(eval(c))
return eval(c)
StudentAdmin.write()
a=StudentAdmin.read()
while True:
bh=int(input("编号"))
if bh==1:
print("增加")
xh=input("请输入学号")
if xh in a.keys():
print("学号重复")
continue
else:
zd={}
zd["name"]=input("请输入姓名")
zd["age"]=int(input("请输入年龄"))
zd["address"]=input("请输入地址")
a[xh]=zd
# StudentAdmin.write()
elif bh==2:
print("删除")
xh=input("请输入学号")
if xh in a.keys():
print("删除了",a[xh])
del a[xh]
else:
print("查无此人")
continue
# StudentAdmin.write()
elif bh==3:
print("修改")
xh=input("请输入学号")
if xh in a.keys():
a[xh]["name"]=input("请输入姓名")
a[xh]["age"]=int(input("请输入年龄"))
a[xh]["address"]=input("请输入地址")
else:
print("查无此人")
continue
# StudentAdmin.write()
elif bh==4:
print("查询")
xh=input("请输入学号")
if xh in a.keys():
print(a[xh])
else:
print("查无此人")
continue
# StudentAdmin.write()
elif bh==0:
print("退出")
StudentAdmin.write()#程序结束,先把增删改查后的值写入文件
break#break是返回循环的开始
#exit(0)#退出程序
class Student():
count=0
def __init__(self,name):
self.name=name
Student.count+=1
def __del__(self):#析构函数
Student.count-=1
print("删除",self.name,"还剩%d个对象"%Student.count)
a=Student("张三")
b=Student("李四")
print(a.name)
print(b.name)
del a
del b
# print(a.name)#报错,因为a.name已经被删除了
class Num():
def __init__(self,n):
self.n=n
def __add__(self, other):
return self.n+other.n #如a+b,a是self.n,b是other.n,如果是b+a,则b是self.n,a是other.n
def __sub__(self, other):
return self.n-other.n
def __mul__(self, other):
return self.n*other.n
def __call__(self,num):
return self.n*num
def __call__(self, *args, **kwargs):
result=self.n
for i in args:
result*=i
for k,v in kwargs.items():
result+=v
return result
a=Num(3)
b=Num(4)
c=a+b
print(c)
d=b-a
print(d)
e=b*a
print(e)
f=a(6)
print(f)
g=a(1,2,3,4,age=13,num=12)
print(g)
class Car():
obj=""
def __new__(cls, *args, **kwargs):
print("我在这")
return object.__new__(Car)
def __init__(self,name,cid):
print("你好")
self.name=name
self.cid=cid
c=Car("宝马","京A88888")
print(hasattr(Car,"obj"))
print(hasattr(Car,"xx"))
class Car():
def __new__(cls, *args, **kwargs):
if not hasattr(Car,"inst"):#如果Car类中没有inst属性
Car.inst=object.__new__(Car)#建立一个Car对象给inst属性
return Car.inst
def __init__(self,name,cid):
print("你好")
self.name=name
self.cid=cid
a=Car("宝马","京A88888")
b=Car("奔驰","京B88888")
print(a is b)
print(a.name,a.cid)
print(b.name,b.cid)