在学习《Python从入门到实践》,代码是自己编写的噢(虽然有些代码有参考其他大佬),点个赞再走8~

9-1 餐馆:创建一个名为 Restaurant 的类,其方法__init__()设置两个属性:restaurant_name 和 cuisine_type。创建一个名为 describe_restaurant()的方法和一个名为 open_restaurant()的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。

class Restaurant():def __init__(self,name,type):self.name=nameself.type=typedef 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=firstself.last = lastself.gender = genderdef describe_user(self):name=self.last+self.firstprint("这个用户的名字是"+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=nameself.type=typeself.number_served=0def describe_restaurant(self):print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。")def open_restaurant(self):print("餐馆正在营业,欢迎光临~")def set_number_served(self,a):self.number_served=aprint("就餐人数为"+str(self.number_served)+"。")def increment_number_served(self,b):self.number_served = b + self.number_servedprint("明天餐馆可能接待的就餐人数为"+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=firstself.last = lastself.gender = genderself.login_attempts=0def describe_user(self):name=self.last+self.firstprint("这个用户的名字是"+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_attemptsname = self.last + self.firstprint(name+"尝试登录次数为"+str(self.login_attempts)+"。")def reset_login_attempts(self):self.login_attempts = 0print("已重置登录次数为"+ 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=nameself.type=typedef 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 语句正确无误。

  • 新建一个restaurant的py文件,将class Restaurant ()的内容放在里面,再新建一个My_restaurant的py文件,便可以导入。第一个代码是restaurant.py里的内容。
#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=nameself.type=typeself.number_served=0def describe_restaurant(self):print("这个餐馆的名字是"+self.name+",这是一家"+self.type+"的餐馆。")def open_restaurant(self):print("餐馆正在营业,欢迎光临~")def set_number_served(self,a):self.number_served=aprint("就餐人数为"+str(self.number_served)+"。")def increment_number_served(self,b):self.number_served = b + self.number_servedprint("明天餐馆可能接待的就餐人数为"+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=firstself.last = lastself.gender = genderself.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.firstprint(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=sidesdef 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

拖拖拉拉地写,第九章终于结束啦~

Python从入门到实践习题答案(第九章 类)相关推荐

  1. C++程序设计原理与实践 习题答案 第九章 第9章习题答案

    第九章 习题答案 9.2 和 9.3 9.5 到 9.9 Library.h头文件 Library.cpp源文件 9.10 到 9.12 Chrono.h 头文件 Chrono.cpp源文件 main ...

  2. 数据挖掘导论课后习题答案第九章

    最近在读<Introduction to Data Mining >这本书,发现课后答案只有英文版,于是打算结合自己的理解将答案翻译一下,其中难免有错误,欢迎大家指正和讨论.侵删. 第九章 ...

  3. 《Python编程从入门到实践》第9章类动手试一试答案(附代码)

    目录 9-1(9-2) 餐馆 9-3 用户 9-4 就餐人数 9-5 尝试登陆次数 9-6 冰淇淋小店 9-7 管理员 9-8 权限 9-10 导入Restaurant类 9-11 导入Admin类 ...

  4. python从入门到实践答案第四章_《python从入门到实践》--第四章基本操作列表 重点及课后练习...

    题目: 4-1 比萨 :想出至少三种你喜欢的比萨,将其名称存储在一个列表中,再使用for 循环将每种比萨的名称都打印出来. 修改这个for 循环,使其打印包含比萨名称的句子,而不仅仅是比萨的名称.对于 ...

  5. python从入门到实践课后题答案第7章_《Python从入门到实践》--第七章 用户输入和while循环 课后练习...

    题目: 7-8 熟食店 :创建一个名为sandwich_orders 的列表,在其中包含各种三明治的名字:再创建一个名为finished_sandwiches 的空列表.遍历列 表sandwich_o ...

  6. python从入门到实践习题 7-8~~7-10

    习题7-8~7-10 7-8 7-9 7-10 7-8 熟食店:创建一个名为sandwich_orders的列表,在其中包含各种三明治的名字:再创建一个名为finished_sandwiches空列表 ...

  7. python从入门到实践课后题答案第7章_《Python从入门到实践》--第七章 while循环 课后练习...

    题目: 7-4 比萨配料 :编写一个循环,提示用户输入一系列的比萨配料,并在用户输入'quit' 时结束循环.每当用户输入一种配料后,都打印一条消息,说我们会在比萨 中添加这种配料. 7-5 电影票 ...

  8. python编程:从入门到实践习题第五章5-8~5-11

    5-8 以特殊方式跟管理员打招呼: 创建一个至少包含 5个用户名的列表,且其中一 个用户名为'admin'.想象你要编写代码,在每位用户登录网站后都打印一条问候消息. 遍历用户名列表,并向每位用户打印 ...

  9. Python编程入门到实践 - 笔记( 4 章)

    昨天下午又看了一遍第4章,今天早上自己来个总结吧. 复习内容如下: 通过 for 循环遍历表中内容以及在循环中打印和循环外打印 rang() 创建列表和设置步长 数字列表的简单统计 1)mix 最小 ...

最新文章

  1. anaconda配置环境变量
  2. 开发日记 20210316
  3. geometry-api-java 学习笔记(四)多线段 polyline
  4. 程序设计基础c语言版习题答案,C语言程序设计基础知识 习题一及参考答案
  5. mysql 5.7 flashback_Flashback for MySQL 5.7
  6. HTML 字符实体 参考手册
  7. 基于CentOS7,MySQL5.7的主从复制架构搭建实战
  8. Linux学习总结(2)——linux常用命令大全
  9. git实现审核功能_使用 Pull Request 功能进行代码审查
  10. c++11支持类数据成员的初始化
  11. 爱的历史摘录(西蒙·梅)
  12. springboot获取视频时长以及截取视频第一帧
  13. 《 PHP+H5全栈工程师培训项目实战》
  14. 把sql中的image数据在网页中显示成图片
  15. VVC/VTM:代码学习——量化实现之RDOQ
  16. BUUCTF Reverse reverse3 WriteUp
  17. 【Word】去掉“项目符号/编号”之后的制表符
  18. SpringBoot集成flyway、mybatis-plus(超详细)
  19. windows7如何安装mysql8_Windows7 安装配置mysql8.0
  20. 云服务器接收固定ip地址信息,云服务器的ip地址是固定的吗

热门文章

  1. android 直接访问相册图片_MediaStore
  2. python fileinput_python模块fileinput
  3. 排列组合的一些公式及推导(非常详细易懂)
  4. 【学习笔记】-【HMM模型建模方法学习1】
  5. 微信小游戏开发上传流程
  6. win7用计算机名无法访问局域网,win7访问不了局域网怎么办_win7系统电脑无法访问局域网怎么办-win7之家...
  7. matlab 判断矩阵奇异,Matlab 奇异值、奇异矩阵、svd函数
  8. 【UML建模】(X) UML建模之Enterprise Architect 15的使用
  9. 再坚强的女人也需要呵护 呵护女人健康从养颜开始 通容粉祛湿养颜
  10. 前端需要了解的计算机网络知识, 这一篇就够了!