Python:从入门到实践--第九章-类--练习
#.餐馆:创建一个名为Restaurant的类,其方法_init_()设置两个属性:restaurant_name和cuisine_type。
#创建一个名为describe_restaurant的方法和一个名为open_restaurant()的方法,
#其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业
#根据这个类创建一个实例restaurant,分别打印其两个属性,再调用前述两个方法 class Restaurant():
#餐馆的基本信息
def __init__(self,restaurant_name,cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type def describe_restaurant(self):
print("The restaurant name:" + self.restaurant_name.title())
print("The restaurant's cuisine type:" + self.cuisine_type.title()) def open_restaurant(self):
print("The " + self.restaurant_name.title() + " is opening...") restaurant = Restaurant('yican','zonghe')
restaurant.describe_restaurant()
restaurant.open_restaurant() #.用户:创建一个名为User的类,其中包含属性first_name和last_name,还有用户简介通常会存储的其他几个属性
#在类User中定义一个名为describe_user()的方法,它打印用户信息摘要;再定义一个名为great_user()的方法,它向
#用户发出个性化的问候
#创建多个用户实例,并对每个实例都调用上述两个方法 class User():
#用户的基本信息
def __init__(self,first_name,last_name,career,position):
self.first_name = first_name
self.last_name = last_name
self.position = position
self.career = career def describe_user(self):
print("The user's first name is: " + self.first_name)
print("The user's last name is: " + self.last_name)
print("His career is: " + self.career)
print("He lives in: " + self.position) def great_user(self):
print("Hello! " + self.last_name.title() + ' ' + self.first_name.title()) user1 = User('ming','li','student','yantai')
user1.describe_user()
user1.great_user() user2 = User('qiong','xiao','teacher','shanghai')
user2.describe_user()
user2.great_user() #.冰淇淋小店:冰淇淋小店是一种特殊的餐馆。编写一个名为IceCreamStand的类,让它继承
#练习9-4编写的类。添加一个名为flavors的属性,用于存储一个由各种口味的冰淇淋组成的列表
#编写一个显示这些冰淇淋的方法,创建一个IceCreamStand实例,并调用这个方法 class Restaurant():
#餐馆的基本信息
def __init__(self,restaurant_name,cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = def describe_restaurant(self):
print("The restaurant name:" + self.restaurant_name.title())
print("The restaurant's cuisine type:" + self.cuisine_type.title()) def set_number_served(self,number):
self.number_served = number
print('the restaurant has ' + str(self.number_served) +' in it.') def increment_number_served(self,add_number):
for i in range(,):
self.number_served += add_number
print('Day' + str(i) + ':restauranr has ' + str(self.number_served) + ' in it') def open_restaurant(self):
print("The " + self.restaurant_name.title() + " is opening...") class IceCreamStand(Restaurant):
def __init__(self,restaurant_name,cuisine_type):
super().__init__(restaurant_name,cuisine_type)
self.flavors = [] def show_icecream(self):
self.flavors.append('apple')
self.flavors.append('banana')
self.flavors.append('tea')
print("The kinds of icecream have:",self.flavors) icecream_list = IceCreamStand('百度饮品','饮品')
icecream_list.show_icecream() #.管理员:管理员是一种特殊的用户。编写一个名为Admin的类,让它继承9-5编写的User类
#添加一个名为privileges的属性,用于存储一个由字符串(如"can add post","can delete post")等组成的列表。
#编写一个名为show_privileges()的方法,它显示管理员的权限。创建一个Admin实例。
#并调用这个方法 class User():
#用户的基本信息
def __init__(self,first_name,last_name):
self.first_name = first_name
self.last_name = last_name
self.login_attempts = def describe_user(self):
print("The user is : " + self.last_name + ' ' + self.first_name) def great_user(self):
print("Hello! " + self.last_name.title() + ' ' + self.first_name.title()) def increment_login_attempts(self):
self.login_attempts += def reset_login_attempts(self):
self.login_attempts =
print("the login number has setd to:" + str(self.login_attempts)) class Admin(User):
def __init__(self,first_name,last_name):
super().__init__(first_name,last_name)
self.privileges = [] def show_privileges(self):
self.privileges.append("can add user")
self.privileges.append("can ban user")
self.privileges.append("can delete user")
print("The Administrator's privileges: ",self.privileges) administrator = Admin('明','晓')
administrator.show_privileges() #.权限:编写一个名为Privileges的类,它只有一个属性——privileges,其中
#存储在2中的字符串列表。将方法show_privileges()移到这个类中。在Admin类中
#将一个Privilege实例用作其属性,创建一个Admin实例,并使用方法show_privileges()来显示其权限 class User():
#用户的基本信息
def __init__(self,first_name,last_name):
self.first_name = first_name
self.last_name = last_name
self.login_attempts = def describe_user(self):
print("The user is : " + self.last_name + ' ' + self.first_name) def great_user(self):
print("Hello! " + self.last_name.title() + ' ' + self.first_name.title()) def increment_login_attempts(self):
self.login_attempts += def reset_login_attempts(self):
self.login_attempts =
print("the login number has setd to:" + str(self.login_attempts)) class Privilege():
def __init__(self):
self.privileges = ["can add user","can ban user","can delete user"] def show_privileges(self):
print(self.privileges) class Admin(User):
def __init__(self,first_name,last_name):
super().__init__(first_name,last_name)
self.privileges = Privilege() def show_privileges(self):
self.privileges.show_privileges() admin = Admin('ming','xiao')
admin.show_privileges() #.电瓶升级:最本节最后一个electric.py版本中,给Battery类添加一个名为upgrade_battery()方法。
#这个方法检查电瓶容量,如果它不是85,就将设为85.创建一辆电瓶容量默认值的电动汽车,调用方法get_range()
#然后对电瓶进行升级,并再次调用get_range(),你会看到这辆汽车的续航里程增加 class Car():
"""docstring for Car"""
def __init__(self, make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name
#打印里程消息
def read_odometer(self):
print("This car has " + str(self.odometer_reading) + " miles on it.")
#更新里程数
def update_odometer(self,milegeage):
if milegeage >= self.odometer_reading:
self.odometer_reading = milegeage
else:
print("You can't roll back an odometer!") def increment_odometer(self,miles):
self.odometer_reading += miles class Battery():
"""docstring for Battery"""
def __init__(self, battery_size=):
self.battery_size = battery_size def describe_battery(self):
print("This car has a " + str(self.battery_size) + "-kWh battery") def upgrade_battery(self):
if self.battery_size!=:
self.battery_size = def get_range(self):
if self.battery_size == :
range =
elif self.battery_size == :
range =
message = "This car can go approximately " + str(range)
message += "miles on a full charge."
print(message)
self.upgrade_battery() class ElectricCar(Car):
"""docstring for ElectricCar"""
def __init__(self, make,model,year):
super().__init__(make,model,year)
self.battery_size = Battery()
def describe_battery(self):
self.battery_size.battery_size()
def get_range(self):
self.battery_size.get_range() my_tesla = ElectricCar('tesla','model s',)
my_tesla.get_range()
my_tesla.get_range()
#.导入Restaurant类:将最新的Restaurant类存储在一个模块中。在另一个文件中,
#导入Restaurant类,创建一个Restaurant的实例,并调用Restaurant的一个方法,
#以确认import语句正确无误 #第一种方式
import restaurant
test_restaurant = restaurant.Restaurant('K','comprehention')
test_restaurant.describe_restaurant() #第二种方式
from restaurant import Restaurant
test = Restaurant('K','mix')
test.describe_restaurant() #.导入Admin类:将9-8完成的工作为基础,将User、Privileges和Admin类存储在一个模块中
#再创建一个文件,在其中创建一个Admin实例并对其调用方法show_privileges(),以确认一切都能正常运行 from user1 import Admin admin = Admin('ming','xiao')
admin.show_privileges() #.多个模块:将User类存储在一个模块中,并将Privileges和Admin类存储在另一个模块中
#再创建一个文件夹,在其中创建一个Admin实例,并对其调用方法Show_privileges(),以确认一切能正常运行 from user3 import Admin
admin = Admin('ming','xiao')
admin.show_privileges() #.使用OrderedDict: from collections import OrderedDict favorite_languages = OrderedDict() favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'C'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'java' for name,language in favorite_languages.items():
print(name.title() + "'s favorite language is " + language.title() + '.') #.骰子:模块random包含以各种方式生成随机数的函数,其中的randint()返回一个位于指定范围内的整数
#创建一个Die类,它包含一个名为sides的属性,该属性的默认值为6.编写一个名为roll_die的方法,它打印位于
#1和骰子面数之间的随机数。创建一个6面的骰子,再掷10次
#再创建一个10面和20面的骰子,并将它们投掷10次
from random import randint class Die(): def __init__(self,sides6=,sides10=,sides20=):
self.sides6 = sides6
self.sides10 = sides10
self.sides20 = sides20 def roll_die6(self):
self.random_number1 = randint(,self.sides6)
print(self.random_number1) def roll_die10(self):
self.random_number2 = randint(,self.sides10)
print(self.random_number2) def roll_die20(self):
self.random_number3 = randint(,self.sides20)
print(self.random_number3) die_num = Die()
print("6面:")
for i in range(,):
die_num.roll_die6() print('\n10面:')
for i in range(,):
die_num.roll_die10() print('\n20面:')
for i in range(,):
die_num.roll_die20()
Python:从入门到实践--第九章-类--练习的更多相关文章
- python从入门到实践-9章类
#!/user/bin/env python# -*- coding:utf-8 -*- # 类名采用的是驼峰命名法,即将类名中每个单词的首字母大写,而不使用下划线.# 对于每个类,都应紧跟在类定义后 ...
- python从入门到实践-11章测试模块(测试函数出问题)
#!/user/bin/env python# -*- coding:utf-8 -*- # 用python中unittes中工具来测试代码 # 1.测试函数import unittestfrom n ...
- python从入门到实践-10章文件和异常(括号问题)
#!/user/bin/env python# -*- coding:utf-8 -*- # 1.从文件中读取数据with open('pi_digits.txt') as file_object: ...
- python从入门到实践 第二章
python变量赋值: python的变量赋值 可以是单引号 也可以是双引号python 变量赋值的时候不能加()的 比如 name = "My Name is GF"变量赋值的时 ...
- python从入门到实践-8章函数
#!/user/bin/env python# -*- coding:utf-8 -*- # 给形参指定默认值时,等号两边不要有空格 def function_name("parameter ...
- python从入门到实践-7章用户输入和while循环
#!/user/bin/env python# -*- coding:utf-8 -*- # input() 可以让程序暂停工作# int(input('please input something: ...
- python从入门到实践-6章字典
#!/user/bin/env python# -*- coding:utf-8 -*- # 前面不用空格,后面空格# 访问只能通过keyalien_0 = {'color': 'green', 'p ...
- python从入门到实践-5章if语句
#!/user/bin/env python cars = ['audi','bmw','subaru','toyota']for car in cars: if car == 'bmw': prin ...
- python从入门到实践-4章操作列表
magicians = ['alice','david','carolina']for magician in magicians: print(magician) print(magician.ti ...
随机推荐
- 1.moocs
“三巨头”:Coursera.edX和Udacity Coursera:http://www.coursera.org 目前发展最大的MOOCs平台,拥有相近500门来自世界各地大学的课程,门类丰富, ...
- vmstat监控工具
vmstat监控工具 一.前言 很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前 ...
- websocket+rabbitMQ
拉取镜像:docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 -p 61613:616 ...
- maven生命周期和插件详解
生命周期 什么是生命周期? maven的生命周期就是对所有的构建过程进行抽象和统一.maven从大量项目和构建工具中总结了一套高度完善的.易扩展的生命周期.这个生命周期包含项目的清理.初始化.编译.测 ...
- mmap共享内存深入总结
本文写于2017-03-11,从老账号迁移到本账号,原文地址:https://www.cnblogs.com/huangweiyang/p/6534877.html 概述 mmap()系统调用在调用进 ...
- win10重装win7
一般预装win8之上的电脑都是UEFI+gpt模式的,装win7很麻烦. 最简单省事的方法: BIOS,secure boot 关闭安全模式. 启动方式改为legacy. 启动方式中USB-HDD改到 ...
- 数据库学习二三事儿(不打代码永远get不到的东西)
针对聚合函数: 1.在自己打的过程中,发现如果select里面有一个列名有被聚合函数用到,比如: 这里的count和Sum_salary均邮局和函数,照理来说branchNo是不能搞进去的,但是它被g ...
- git 命令提交项目到github
git 命令提交项目到github步骤如下: 1.使用git 命令客户端进入项目根路径,输入 git init 命令,创建github本地根目录 2.把文件加入到本地项目 git add . ,如 ...
- web语言发展史
引用自CSDN,地址:https://blog.csdn.net/moshenglv/article/details/51590830 提到Web,不得不提一个词就是“互联网”.Web是World W ...
- 修改VScode行号区的背景颜色
vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...