python基础---类的综合操作与练习题
2019-03-13 22:05
190 查看
#练习题。创建一个类:
class People(): tax=0 def __init__(self,name,age,work,salsry): self.name=name self.age=age self.work=work self.salsry=salsry self.__energy=100 def working(self): People.tax+=self.salsry*0.2 self.__energy=self.__energy-30 if self.__energy>30 else 0 def eat(self,money): self.__energy=self.__energy+10 if self.__energy<90 else 100 self.salsry-=money def sleep(self,energy): self.__energy=self.__energy+60 if self.__energy<40 else 100 def say(self): print("我叫{},年龄是{},工作是{}。".format(self.name,self.age,self.work)) print(self.__energy,self.salsry) def get_energy(self): return self.__energy class Women(People): def shopping(self,money): self.salsry-=money print(self.salsry) class Men(People): def say(self): super().say() print("笑话") s=Women('zs',13,'df',19999) s.say() s2=Men('zs',13,'df',19999) s2.say()
#练习题2.
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(): for k1,v1 in v.items(): f.write( (k1+":"+str(v1))) if k1=='num': f.write('\n') else: f.write(',') f.close() @staticmethod def readData( ): f=open('data.txt','r') line=f.readline() dzd={} while len(line)>0: items=line.strip().split(',') zd={} for item in items: s=item.split(':') if s[0]=='age': zd[s[0]]=int(s[1]) else: zd[s[0]] =s[1] if s[0]=='num': dzd[s[1]]=zd line=f.readline() print(dzd) f.close() FileAction.readData( ) #三角形输出。 class Paint(): def paintstar(self): i=1 while i<6:#for i in range(1,6) j=1 while j<=5-i:#for j in range(1,6-i) print(' ',end='') j+=1 j=1 while j<=2*i-1:#for j in range(1,2*i) if j==1 or j==2*i-1 or i==5:#空心三角形的输入方法。 print("*",end='') else: print(" ",end='') j+=1 print() i+=1 s=Paint() s.paintstar() #类内对字典操作。 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() return eval(c) s=StudentAdmin.write() s=StudentAdmin.read() while True: bh=int(input("请输入编号:")) if bh==1: xh=input("请输入学号:") if xh in a.keys(): print("学号重复") continue#重复后重新走循环,再次输入编号。 else: zd={} zd['name']=input("请输入姓名:") zd['age']=int(input("请输入年龄:")) zd['add']=input("请输入地址:") a[xh]=zd print(a) print('增加') elif bh==2: xh = input("请输入学号:") if xh not in a.keys(): print("查无此人") continue else: print("要删除的人是",a[xh]) del a[xh] print(a) print('删除') elif bh==3: xh = input("请输入学号:") if xh not in a.keys(): print("查无此人") else: a[xh]['name']=input("请输入姓名:") a[xh]['age']=int(input("请输入年龄:")) a[xh]['address']=input("请输入地址:") print(a) print("更改") elif bh==4: xh = input("请输入学号:") if xh not in a.keys(): print("查无此人") continue else: print(a[xh]) print("查找") elif bh==0: StudentAdmin.write()#程序结束,先把添加修改后的值写入文件里 break#break跳出循环,exit()结束循环。 #魔术方法。 class A(): count=0 def __init__(self,name): self.name=name A.count+=1 def __del__(self): A.count-=1 print("删除",self.name,"还剩%d个对象"%A.count) a=A("xz") b=A("xl") del a#触发函数del的格式 del b class Num(): def __init__(self,n): self.n=n def __add__(self, other): return self.n+other.n def __sub__(self, other): return self.n-other.n def __mul__(self, other): return self.n*other.n a=Num(4) b=Num(7) c=a+b#调用add函数的格式 d=a-b#调用sub函数的格式 e=a*b print(c) print(d) print(e) class Num(): def __init__(self,n): self.n=n def __call__(self, *args, **kwargs): result=self.n for a in args: result*=a for k,v in kwargs.items(): result+=v return result a=Num(2) c=a(1,2,3,age=4,weight=90)#返回的result是最终相加的结果 1,2,3放入args,age=4,weight=90放入kwargs print(c) class Car(): obj=10 def __new__(cls, *args, **kwargs): print("here") return object.__new__(Car) def __init__(self,name,cid): print('hello') self.name=name self.cid=cid print(self.name,self.cid) b=Car('bmw','1230987') b.__new__(Car) print(hasattr(Car,'obj'))#判断类中是否有obj这个属性,返回布尔值 ''' class Car(): def __new__(cls, *args, **kwargs): if not hasattr(Car,'inst'):#如果Car里面没有inst属性 Car.inst=object.__new__(cls)#建立一个Car对象给inst属性。 return Car.inst#返回inst属性 def __init__(self, name, cid): print('hello') self.name = name self.cid = cid a=Car("zs",'1130') b=Car('as','1230') print(a is b) print(a.name) print(b.name)#相同,以最后一次赋值为准。
相关文章推荐
- 第2章 Python基础-字符编码&数据类型 综合 练习题
- 第3章 Python基础-文件操作&函数 文件操作 练习题
- Python基础 -- 04 基础语法(文件操作、综合应用)
- python 基础综合练习题
- Python基础----字典与文件读写操作的综合应用
- python基础5:文件操作、综合应用
- 【零基础】Python3学习课后练习题(二十六)
- Python基础--文件操作和集合
- MYSQL基础上机练习题(六) 排序问题综合应用
- 第1章 Python基础-Python介绍&循环语句 练习题&作业
- python基础--文件操作,os模块
- python基础学习之文件操作
- 【零基础】Python3学习课后练习题(八)
- Python基础-文件操作
- Python基础算法综合:加减乘除四则运算方法
- python爬虫——BeautifulSoup基础操作
- python3 从基础入门到高级进阶练习题之----基础篇003
- Python基础-操作文件和目录
- python学习笔记之基础操作(一)整数常用方法
- 2.22python基础(3) 文件操作