《Python 编程:从入门到实践》第九章(类)练习题答案

# -*- coding: GBK -*-
#9-1
class Restaurant():
	def __init__(self,name,cuisine_type):
		self.name = name
		self.cuisine_type = cuisine_type
	def describe_restaurant(self):
		print(self.name ,self.cuisine_type)
	def open_restaurant(self):
		print('the',self.name, 'is opening')
	
restaurant = Restaurant('zct','food')
restaurant.describe_restaurant()
restaurant.open_restaurant()

#9-3
class User():
	def __init__(self,first_name,last_name,**user_info):
		self.first_name = first_name
		self.last_name = last_name
		self.user_info = user_info
	def greet_user(self):
		print('Hello,',self.first_name.title())
	def describe_user(self):
		print('first_name is ',self.first_name)
		print('last_name is ',self.last_name)
		for k,v in self.user_info.items():
			print(k,'is',v)

user1 = User('xiaoli','li',age=12,sex='F')	
user1.describe_user()
user1.greet_user()	
#9-4
class Restaurant():
	def __init__(self,name,cuisine_type):
		self.name = name
		self.cuisine_type = cuisine_type
		self.number_served = 0
	def describe_restaurant(self):
		print(self.name ,self.cuisine_type,self.number_served)
	def set_number_served(self,served_num):
		self.number_served = served_num
	def increment_number_served(self,inc_served_num):
		self.number_served += inc_served_num	

restaurant = Restaurant('zct','food')
restaurant.describe_restaurant()
restaurant.set_number_served(56)
restaurant.describe_restaurant()
restaurant.increment_number_served(12)
restaurant.describe_restaurant()
#9-5
class User():
	def __init__(self,first_name,last_name,**user_info):
		self.first_name = first_name
		self.last_name = last_name
		self.login_attempts = 0
		self.user_info = user_info
	def greet_user(self):
		print('Hello,',self.first_name.title())
	def describe_user(self):
		print('first_name is ',self.first_name)
		print('last_name is ',self.last_name)
		print('login_attempts is ',self.login_attempts)
		for k,v in self.user_info.items():
			print(k,'is',v)
	def increment_login_attempts(self):
		self.login_attempts+=1
	def	reset_login_attempts(self):
		self.login_attempts = 0

user1 = User('xiaoli','li',age=12,sex='F')	
user1.describe_user()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.describe_user()
user1.reset_login_attempts()	
user1.describe_user()
#9-6
class IceCreamStand(Restaurant):
	def __init__(self,name,cuisine_type,flavors):
		super().__init__(name,cuisine_type)
		self.flavors = flavors
	def show_flavors(self):
		for flavor in  self.flavors:
			print(flavor)
iceCream=IceCreamStand('aa','bb',['aaa','bbb','ccc'])
iceCream.show_flavors()
class User():
	def __init__(self,first_name,last_name,**user_info):
		self.first_name = first_name
		self.last_name = last_name
		self.user_info = user_info
	def greet_user(self):
		print('Hello,',self.first_name.title())
	def describe_user(self):
		print('first_name is ',self.first_name)
		print('last_name is ',self.last_name)
		for k,v in self.user_info.items():
			print(k,'is',v)
#9-7
class Admin(User):
	def __init__(self,first_name,last_name):
		super().__init__(first_name,last_name)
		self.privileges = ['can add post','can delete post','can ban user']

	def show_privileges(self):
		for privilege in self.privileges:
			print(self.first_name,self.last_name,privilege)
		
admin = Admin('adminf','adminl')
admin.show_privileges()
		
#9-8
class Privileges():
	def __init__(self):
		self.privileges = ['can add post','can delete post','can ban user']


class Admin(User):
	def __init__(self,first_name,last_name):
		super().__init__(first_name,last_name)
		self.privileges = Privileges()

	def show_privileges(self):
		for privilege in self.privileges.privileges:
			print(self.first_name,self.last_name,privilege)
		
admin = Admin('adminf','adminl')
admin.show_privileges()
#9-9
class Car():
	def __init__(self, make, model, year):
		self.make = make
		self.model = model
		self.year = year
		self.odometer_reading = 0
	def get_descriptive_name(self):
		long_name = str(self.year) + ' ' + self.make + ' ' + self.model
		return long_name.title()
	def read_odometer(self):
		print("This car has " + str(self.odometer_reading) + " miles on it.")
	def update_odometer(self, mileage):
		if mileage >= self.odometer_reading:
			self.odometer_reading = mileage
		else:
			print("You can't roll back an odometer!")
	def increment_odometer(self, miles):
		self.odometer_reading += miles
class Battery():
	"""一次模拟电动汽车电瓶的简单尝试"""
	def __init__(self, battery_size=70):
		"""初始化电瓶的属性"""
		self.battery_size = battery_size
	def describe_battery(self):
		"""打印一条描述电瓶容量的消息"""
		print("This car has a " + str(self.battery_size) + "-kWh battery.")
	def get_range(self):
		"""打印一条消息,指出电瓶的续航里程"""
		if self.battery_size == 70:
			range = 240
		elif self.battery_size == 85:
			range = 270
		message = "This car can go approximately " + str(range)
		message += " miles on a full charge."
		print(message)
	def upgrade_battery(self):
		"""打印一条描述电瓶容量的消息"""
		if self.battery_size!=85:
			self.battery_size=85
		print("This car upgrade to " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
	"""电动汽车的独特之处"""
	def __init__(self, make, model, year):
		"""初始化父类的属性,再初始化电动汽车特有的属性"""
		super().__init__(make, model, year)
		self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.upgrade_battery()
my_tesla.battery.get_range()
#9-14
from random import randint


class Die():
	def __init__(self,sides=6):
		self.sides = sides
	def roll_die(self):
		print(randint(1,self.sides))
die_six = Die(6)
for i in range(10):
	die_six.roll_die()
die_ten = Die(10)
for i in range(10):
	die_ten.roll_die()
die_20 = Die(20)
for i in range(10):
	die_20.roll_die()

猜你喜欢

转载自blog.csdn.net/zenmehaichonga_2009/article/details/82801584