python学习面向对象和文件处理和三元运算符之练习题day10/早上

1.练习题一

#我的方法

class A():
    def __init__(self,dic):
        self.dic=dic
    def write_data(self):
        f=open("Data.txt","w",encoding="utf-8")
        for v in self.dic.values():
            v=str(v)
            v=v[1:-1]
            f.write(str(v))
            f.write("\n")
            print(v)
        f.close()
    def read_data(self):
        f=open("Data.txt","r",encoding="utf-8")
        conts=f.readlines()
        contall={}
        for cont in conts:
            cont=cont[:-1]
            cont="{"+cont+"}"
            cont=eval(cont)
            contall[cont["num"]]=cont
        print(contall)
        f.close()

dic={'001':{"name":"张三","age":23,"num":"001"},'002':{"name":"李四","age":25,"num":"002"}}
a=A(dic)
a.write_data()
a.read_data()

#大牛的方法

dic={ '001':{'name':'张三','age': 18 ,'num':'001'},
      '002':{'name':'张二','age': 28 ,'num':'002'}}
class FileAction():
    @staticmethod
    def writeDate(dic):
        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( )

2.练习题二

class People():
    tax=0
    def __init__(self,name,age,work,salary):
        self.name=name
        self.age=age
        self.work=work
        self.salary=salary
        self.__energy=100
    def eat(self,money):
        self.__energy=self.__energy+10 if self.__energy<90 else 100
        self.salary-=100    #减到0的话欠着
    def working(self):
        People.tax+=self.salary*0.2
        self.__energy=self.__energy-30 if self.__energy>30 else 0

    def sleep(self):
        self.__energy=self.__energy+60 if self.__energy<40 else 100

    def say(self):
        print(self.name)

    def get_energy(self):
        return self.__energy

class Women(People):
    def shopping(self,money):
        self.salary-=money
class Man(People):
    def say(self):
        super().say()
        print("笑话")
one=Man("张三",18,"开发",18000)
one.say()
w=Women("李四",12,"开发",2000)
w.shopping(9000)
w.say()

3.三元运算符

a=7
a-=3 if a>8 else 2  #相当于a-=(3 if a>8 else 2)
print(a)   #5

a=8
a = a-3 if a>8 else 2  #a =( a-3 if a>8 else 2)
print(a)

封装:私有属性不能被继承
继承(重载):有继承才能重载

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88056564