赞
踩
在学习《Python从入门到实践》,代码是自己编写的噢(虽然有些代码有参考其他大佬),点个赞再走8~
9-1 餐馆:创建一个名为 Restaurant 的类,其方法__init__()设置两个属性:restaurant_name 和 cuisine_type。创建一个名为 describe_restaurant()的方法和一个名为 open_restaurant()的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。
class Restaurant():
def __init__(self,name,type):
self.name=name
self.type=type
def describe_restaurant(self):
print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。")
def open_restaurant(self):
print("餐馆正在营业,欢迎光临~")
My_Restaurant=Restaurant('南京大排档','传统饭店')
My_Restaurant.describe_restaurant()
My_Restaurant.open_restaurant()
运行结果如下所示:
9-2 三家餐馆:根据你为完成练习 9-1 而编写的类创建三个实例,并对每个实例调用方法 describe_restaurant()。
BeiJing_Restaurant=Restaurant('北京烤鸭','全国知名')
BeiJing_Restaurant.describe_restaurant()
ChangSha_Restaurant=Restaurant('一盏灯','著名湘菜馆')
ChangSha_Restaurant.describe_restaurant()
运行结果如下所示:
9-3 用户:创建一个名为 User 的类,其中包含属性 first_name 和 last_name,还有用户简介通常会存储的其他几个属性。在类 User 中定义一个名为 describe_user()的方法,它打印用户信息摘要;再定义一个名为 greet_user()的方法,它向用户发出个性化的问候。
class User(): def __init__(self,first,last,gender): self.first=first self.last = last self.gender = gender def describe_user(self): name=self.last+self.first print("这个用户的名字是"+name+",性别为"+self.gender+"。") def greet_user(self): if self.gender=='男': print(self.last+"先生早上好,欢迎使用本机。") else: print(self.last + "女士早上好,欢迎使用本机。") user1=User('小明','王','男') user1.describe_user() user1.greet_user() print("---------------------------") user2=User('小红','张','女') user2.describe_user() user2.greet_user()
运行结果如下所示:
9-4 就餐人数:在为完成练习 9-1 而编写的程序中,添加一个名为 number_served的属性,并将其默认值设置为 0。根据这个类创建一个名为 restaurant 的实例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。添加一个名为 set_number_served()的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。添加一个名为 increment_number_served()的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。
class Restaurant(): def __init__(self,name,type,number_served): #初始化饭店的属性 self.name=name self.type=type self.number_served=0 def describe_restaurant(self): print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。") def open_restaurant(self): print("餐馆正在营业,欢迎光临~") def set_number_served(self,a): self.number_served=a print("就餐人数为"+str(self.number_served)+"。") def increment_number_served(self,b): self.number_served = b + self.number_served print("明天餐馆可能接待的就餐人数为"+str(self.number_served)+"。") My_Restaurant=Restaurant('一盏灯','湘菜馆',500) My_Restaurant.describe_restaurant() My_Restaurant.open_restaurant() My_Restaurant.set_number_served(500) My_Restaurant.increment_number_served(200)
运行结果如下所示:
9-5 尝试登录次数:在为完成练习 9-3 而编写的 User 类中,添加一个名为 login_attempts 的属性。编写一个名为 increment_login_attempts()的方法,它将属性login_attempts 的值加 1。再编写一个名为 reset_login_attempts()的方法,它将属性login_attempts 的值重置为 0。# 根据 User 类创建一个实例,再调用方法 increment_login_attempts()多次。打印属性 login_attempts 的值,确认它被正确地递增;然后,调用方法 reset_login_attempts(),并再次打印属性 login_attempts 的值,确认它被重置为 0。
class User(): def __init__(self,first,last,gender): # 初始化用户的属性 self.first=first self.last = last self.gender = gender self.login_attempts=0 def describe_user(self): name=self.last+self.first print("这个用户的名字是"+name+",性别为"+self.gender+"。") def greet_user(self): if self.gender=='男': print(self.last+"先生早上好,欢迎使用本机。") else: print(self.last + "女士早上好,欢迎使用本机。") def increment_login_attempts(self,a): self.login_attempts = a + self.login_attempts name = self.last + self.first print(name+"尝试登录次数为"+str(self.login_attempts)+"。") def reset_login_attempts(self): self.login_attempts = 0 print("已重置登录次数为"+ str(self.login_attempts) + "。") user1=User('小明','王','男') user1.describe_user() user1.greet_user() user1.increment_login_attempts(5) user1.reset_login_attempts() print("---------------------------") user2=User('小红','张','女') user2.describe_user() user2.greet_user() user2.increment_login_attempts(3) user2.reset_login_attempts()
运行结果如下所示:
9-6 冰淇淋小店:冰淇淋小店是一种特殊的餐馆。编写一个名为 IceCreamStand 的类,让它继承你为完成练习 9-1 或练习 9-4 而编写的 Restaurant 类。这两个版本的Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为 flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋的方法。创建一个IceCreamStand 实例,并调用这个方法。
class Restaurant(): def __init__(self,name,type): self.name=name self.type=type def describe_restaurant(self): print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。") def open_restaurant(self): print("餐馆正在营业,欢迎光临~") My_Restaurant=Restaurant('南京大排档','传统饭店') My_Restaurant.describe_restaurant() My_Restaurant.open_restaurant() #----------以上部分是Restaurant类,使用的是9-1的答案----------# class IceCreamStand(Restaurant): def __init__(self,name,type): super().__init__(name,type) self.flavors=[] def list_IceCream(self): print("本店有"+str(self.flavors)+"\n等多种口味。") My_IceCream=IceCreamStand('KFC','杯装') My_IceCream.flavors=['麦旋风冰淇淋','海盐冰淇淋','巧克力冰淇淋','芒果双旋冰淇淋'] My_IceCream.list_IceCream()
运行结果如下所示:
9-7 管理员:管理员是一种特殊的用户。编写一个名为 Admin 的类,让它继承你为完成练习 9-3 或练习 9-5 而编写的 User 类。添加一个名为 privileges 的属性,用于存储一个由字符串(如"can add post"、“can delete post”、"can ban user"等)组成的列表。编写一个名为 show_privileges()的方法,它显示管理员的权限。创建一个 Admin实例,并调用这个方法。
class Admin(User): #定义这个函数的属性 def __init__(self,first,last,gender): super().__init__(first,last,gender) self.privileges=[] def show_privileges(self): name = self.last + self.first #显示名字 print(name+"的权限有:"+str(self.privileges)) Manager1=Admin('小亮','杨','男') Manager1.privileges=["can add post","can delete post","can ban user"] Manager1.describe_user() Manager1.show_privileges() print("---------------------------") Manager2=Admin('晓彤','吴','女') Manager2.describe_user() Manager2.privileges=["增删改员工信息"] Manager2.show_privileges()
运行的结果如下所示:
9-8 权限:编写一个名为 Privileges 的类,它只有一个属性——privileges,其中存储了练习 9-7 所说的字符串列表。将方法 show_privileges()移到这个类中。在 Admin类中,将一个 Privileges 实例用作其属性。创建一个 Admin 实例,并使用方法 show_privileges()来显示其权限。
class Privileges():
def __init__(self,privileges=[]):
self.privileges=['can add post','can delee post','can ban user']
def show_privileges(self):
print("权限有:" + str(self.privileges))
class Admin(User):
def __init__(self, first, last, gender):
super().__init__(first, last, gender)
self.privileges = Privileges()
Manager1=Admin('小亮','杨','男')
Manager1.describe_user()
Manager1.privileges.show_privileges()
运行的结果如下所示:
9-9太多啦 之后再补(可能不想补了)
9-10 导入 Restaurant 类:将最新的 Restaurant 类存储在一个模块中。在另一个文件中,导入 Restaurant 类,创建一个 Restaurant 实例,并调用 Restaurant 的一个方法,以确认 import 语句正确无误。
#Author:明理-L- # -*- codeing = utf-8 -*- #@Time : 2020/11/27 19:56 #@File : restaurant.py #@Software : PyCharm class Restaurant(): def __init__(self,name,type,number_served): #初始化饭店的属性 self.name=name self.type=type self.number_served=0 def describe_restaurant(self): print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。") def open_restaurant(self): print("餐馆正在营业,欢迎光临~") def set_number_served(self,a): self.number_served=a print("就餐人数为"+str(self.number_served)+"。") def increment_number_served(self,b): self.number_served = b + self.number_served print("明天餐馆可能接待的就餐人数为"+str(self.number_served)+"。") My_Restaurant=Restaurant('一盏灯','湘菜馆',500) My_Restaurant.describe_restaurant() My_Restaurant.open_restaurant() My_Restaurant.set_number_served(500) My_Restaurant.increment_number_served(200)
My_restaurant的内容:
#Author:明理-L-
# -*- codeing = utf-8 -*-
#@Time : 2020/11/27 19:49
#@File : my_restaurant.py
#@Software : PyCharm
# 9-10 导入 Restaurant 类:将最新的 Restaurant 类存储在一个模块中。
# 在另一个文件中,导入 Restaurant 类,创建一个 Restaurant 实例,
# 并调用 Restaurant 的一个方法,
# 以确认 import 语句正确无误。
from restaurant import Restaurant
My_Restaurant=Restaurant('老乡鸡','安徽土鸡',500)
My_Restaurant.describe_restaurant()
结果如下所示:
9-11 导入 Admin 类:以为完成练习 9-8 而做的工作为基础,将 User、Privileges 和Admin 类存储在一个模块中,再创建一个文件,在其中创建一个 Admin 实例并对其调用 方法 show_privileges(),以确认一切都能正确地运行。
class User():
def __init__(self,first,last,gender):
# 初始化用户的属性
self.first=first
self.last = last
self.gender = gender
self.login_attempts=0
class Admin(User):
def __init__(self,first,last,gender):
super().__init__(first,last,gender)
self.privileges=[]
def show_privileges(self):
name = self.last + self.first
print(name+"的权限有:"+str(self.privileges))
另一个py文件的代码:
from chapter9 import Admin
Fei=Admin('小飞','梁','男')
Fei.privileges=["增删改员工信息"]
Fei.show_privileges()
运行结果如下所示:
9-12的代码类似,就不多写了。
9-13 使用 OrderedDict:在练习 6-4 中,你使用了一个标准字典来表示词汇表。请使用 OrderedDict 类来重写这个程序,并确认输出的顺序与你在字典中添加键—值对的顺序一致。
from collections import OrderedDict
diction=OrderedDict()
print("\n")
print("------------------这是一本成语词典------------------")
print("*************************************************")
diction['一鸣惊人'] = '意思是比喻平时没有突出的表现,一下子做出惊人的成绩'
diction['春暖花开'] = '比喻游览、观赏的大好时机'
diction['一见如故'] = '意思是初次见面就像老朋友一样,形容初次相见就情投意合'
for word,mean in diction.items():
print(word+":"+mean+'.')
运行结果如下所示:
9-14 骰子:模块 random 包含以各种方式生成随机数的函数,其中的 randint()返回一个位于指定范围内的整数,例如,下面的代码返回一个 1~6 内的整数:请创建一个 Die 类,它包含一个名为 sides 的属性,该属性的默认值为 6。编写一个名为 roll_die()的方法,它打印位于 1 和骰子面数之间的随机数。创建一个 6 面的骰 子,再掷 10 次。创建一个 10 面的骰子和一个 20 面的骰子,并将它们都掷 10 次。
from random import randint class Die(): def __init__(self,sides=6): self.sides=sides def roll_die(self): x = randint(1, self.sides) return x #一个6面的骰子 a6=Die(6) a=1 print("-----------------一个6面的骰子-------------------:") while a <11 : print("这是第" + str(a) + "次掷色子,随机数为"+ str(a6.roll_die())) a=a+1 #一个10面的骰子 a10=Die(sides=10) print("-----------------一个10面的骰子-------------------:") a=1 while a <11 : print("这是第" + str(a) + "次掷色子,随机数为"+ str(a10.roll_die())) a=a+1 #一个20面的骰子 a20=Die(20) print("-----------------一个20面的骰子-------------------:") a=1 while a <11 : print("这是第" + str(a) + "次掷色子,随机数为"+ str(a20.roll_die())) a=a+1
运行结果如下所示:
-----------------一个6面的骰子-------------------: 这是第1次掷色子,随机数为4 这是第2次掷色子,随机数为5 这是第3次掷色子,随机数为6 这是第4次掷色子,随机数为3 这是第5次掷色子,随机数为1 这是第6次掷色子,随机数为6 这是第7次掷色子,随机数为1 这是第8次掷色子,随机数为4 这是第9次掷色子,随机数为2 这是第10次掷色子,随机数为4 -----------------一个10面的骰子-------------------: 这是第1次掷色子,随机数为2 这是第2次掷色子,随机数为1 这是第3次掷色子,随机数为3 这是第4次掷色子,随机数为10 这是第5次掷色子,随机数为3 这是第6次掷色子,随机数为10 这是第7次掷色子,随机数为8 这是第8次掷色子,随机数为1 这是第9次掷色子,随机数为9 这是第10次掷色子,随机数为8 -----------------一个20面的骰子-------------------: 这是第1次掷色子,随机数为14 这是第2次掷色子,随机数为20 这是第3次掷色子,随机数为13 这是第4次掷色子,随机数为18 这是第5次掷色子,随机数为7 这是第6次掷色子,随机数为1 这是第7次掷色子,随机数为13 这是第8次掷色子,随机数为16 这是第9次掷色子,随机数为13 这是第10次掷色子,随机数为6
拖拖拉拉地写,第九章终于结束啦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。