python秃头之路 类的练习(二)

    xiaoxiao2022-07-07  200

    1

    创建一个名为User的类,其中包含属性first_name和last_name,还有用户简介通常会存储的其他几个属性。在类User中定义一个名为describe_user()的方法,它打印用户信息摘要;再定义一个名为greet_user()的方法,它向用户发出个性化的问候。

    class User(object): """ User类 """ def __init__ (self,first_name,last_name,gender,age): """ 初始化User类 """ self.first_name=first_name self.last_name=last_name self.gender=gender self.age=age def describe_user (self): """ 打印用户信息摘要 """ print('name:%s·%s\ngender:%s\nage:%d'%(self.first_name,\ self.last_name,self.gender,self.age)) def greet_user (self): """ 问候方法 """ print('Holle %s'%self.first_name) michael=User('Michael','Jacken','male',61) michael.describe_user()

    2

    可以指定一批生成的个数,可以指定数值的范围,可以调整每批生成数字的个数

    class Num(object): """ 数字生成类 """ def num_create(self): """随机数生成""" import random for i in range(self.num): self.num_list.append(random.uniform(self.num_min,self.num_max)) def __init__ (self,num,num_min,num_max): """ 初始化数字生成类 """ self.num=num self.num_min=num_min self.num_max=num_max self.num_list=[] aa=Num(3,1,2) aa.num_create() print(aa.num_list)

    3

    有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即:{‘k1’:大于66的所有值,‘k2’:小于66的所有值}

    class Jihe(object): """ 集合计算类 """ zidian={} list1=set() list2=set() def jisuan (self): """ 计算方法 """ for i in self.list: if i > 66: Jihe.list1.add(i) elif i < 66: Jihe.list2.add(i) Jihe.zidian['小于66的所有值']=Jihe.list2 Jihe.zidian['大于66的所有值']=Jihe.list1 def __init__ (self,*args): """ 初始化类 """ self.list=args Jihe.jisuan(self) a=Jihe(11,22,33,44,55,66,77,88,99,90) print(a.zidian)

    4

    使用while,再完成以下图形的输出 *








    * class Picture(object): """ 图形输出类 """ def __new__ (self,i): """ 图形输出类初始化 """ obj=object.__new__(self) while i < 9: if i <5: print((2*i*'*'+'*').center(9)) if i>=5: print((2*(8-i)*'*'+'*').center(9)) i+=1 self.i=i return obj def aa (self): print(self.i) """ Function doc """ a=Picture(0) a.aa()

    5

    地铁交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。 #要求: #假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;每月月初小明第一次刷公交卡时,扣款5元;编写程序,从键盘获取距离,帮小明计算,如果不使用市政交通一卡通的每月总费用,和使用市政交通一卡通的每月总费用

    class Fare(object): """ 地铁消费类 """ def __init__ (self,dist,whether=0): """ 上班距离:dist 是否用一卡通:1为使用,0为不使用,默认0 """ self.dist=dist self.whether=whether def fare_one(self): '''6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里''' if self.dist > 32: return (self.dist-12)//20+6 #(s-32)//20+6+1 elif self.dist > 22: return 6 elif self.dist > 12: return 5 elif self.dist > 6: return 4 else: return 3 def fare (self): """ 乘车总费用计算 """ if self.whether == 0: return 40*Fare.fare_one(self) else: '''支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠''' fare=5 for i in range(40): if fare<100: fare+=Fare.fare_one(self) elif fare<150: fare+=0.8*Fare.fare_one(self) elif fare<400: fare+=0.5*Fare.fare_one(self) else: fare+=Fare.fare_one(self) return fare xiaoming=Fare(20,1) print(xiaoming.fare())
    最新回复(0)