《Python程式設計從入門到實踐》第9章類課後習題(附程式碼)
阿新 • • 發佈:2018-11-28
目錄
9-1(9-2) 餐館
#!/usr/bin/env python # -*- coding:utf-8 -*- class Restaurant(): """模擬餐館資訊的簡單嘗試""" def __init__(self, restaurant_name, cuisine_type): """初始化描述汽車的屬性""" self.restaurant_name = restaurant_name self.cuisine_type = cuisine_type def describe_restaurant(self): """返回餐館資訊""" long_name = self.restaurant_name + ' ' + self.cuisine_type return long_name.title() def open_restaurant(self): """列印餐廳營業訊息""" print("The restaurant is opening!!") my_restaurant1 = Restaurant('美味', '炒菜') print(my_restaurant1.describe_restaurant()) my_restaurant1.open_restaurant() my_restaurant2 = Restaurant('香辣', '香鍋') print(my_restaurant2.describe_restaurant()) my_restaurant2.open_restaurant() my_restaurant3 = Restaurant('歡歡', '火鍋') print(my_restaurant3.describe_restaurant()) my_restaurant3.open_restaurant()
執行結果:
9-3 使用者
#!/usr/bin/env python # -*- coding:utf-8 -*- class User(): def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def describe_user(self): """描述使用者資訊""" long_name = self.last_name + ' ' + self.first_name + ' ' + self.age print(long_name.title()) def greet_user(self): """向用戶問好""" print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!') user = User('San', 'Zhang', '20') user.describe_user() user.greet_user()
執行結果:
9-4 就餐人數
#!/usr/bin/env python # -*- coding:utf-8 -*- class Restaurant(): """模擬餐館資訊的簡單嘗試""" def __init__(self, restaurant_name, cuisine_type): """初始化描述餐館的屬性""" self.restaurant_name = restaurant_name self.cuisine_type = cuisine_type self.number_served = 0 def describe_restaurant(self): """返回餐館資訊""" long_name = self.restaurant_name + ' ' + self.cuisine_type return long_name.title() def open_restaurant(self): """列印餐廳營業訊息""" print("The restaurant is opening!!") def set_number_served(self, numbers): """設定就餐人數""" self.number_served = numbers def increment_number_served(self, numbers): self.number_served += numbers def read_number_served(self): """列印一條就餐人數資訊""" print("There are " + str(self.number_served) + ' people eating in this restaurant') # 建立餐館例項 my_restaurant = Restaurant('歡歡', '火鍋') # 列印餐館資訊 print(my_restaurant.describe_restaurant()) my_restaurant.open_restaurant() # 列印初始餐館就餐人數 my_restaurant.set_number_served(10) my_restaurant.read_number_served() # 列印認為的可能就餐人數 my_restaurant.increment_number_served(100) my_restaurant.read_number_served()
執行結果:
9-5 嘗試登陸次數
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class User():
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
def describe_user(self):
"""描述使用者資訊"""
long_name = self.last_name + ' ' + self.first_name + ' ' + self.age
print(long_name.title())
def greet_user(self):
"""向用戶問好"""
print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!')
def increment_login_attempts(self):
"""計數登入次數"""
self.login_attempts += 1
def reset_login_attempts(self):
"""重置登入次數為0"""
self.login_attempts = 0
user = User('San', 'Zhang', '20')
# 列印使用者資訊並問好
user.describe_user()
user.greet_user()
# 多次呼叫increment_login_attempts
for i in range(1, 6):
user.increment_login_attempts()
print(user.login_attempts)
user.reset_login_attempts()
print("login_attempts重置為: " + str(user.login_attempts))
執行結果:
9-6 冰淇淋小店
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class Restaurant():
"""模擬餐館資訊的簡單嘗試"""
def __init__(self, restaurant_name, cuisine_type):
"""初始化描述餐館的屬性"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
"""返回餐館資訊"""
long_name = self.restaurant_name + ' ' + self.cuisine_type
return long_name.title()
def open_restaurant(self):
"""列印餐廳營業訊息"""
print("The restaurant is opening!!")
def set_number_served(self, numbers):
"""設定就餐人數"""
self.number_served = numbers
def increment_number_served(self, numbers):
self.number_served += numbers
def read_number_served(self):
"""列印一條就餐人數資訊"""
print("There are " + str(self.number_served) + ' people eating in this restaurant')
class IceCreamStand(Restaurant):
def __init__(self, restaurant_name, cuisine_type):
"""初始化父類的屬性"""
super().__init__(restaurant_name, cuisine_type) # 初始化父類的屬性
self.flavors = []
def set_flavors(self, flavors):
"""設定冰淇淋餐廳口味"""
self.flavors = flavors
def read_flavors(self):
"""列印餐廳冰淇淋口味"""
print('The taste of ice cream has:', end='')
for flavor in self.flavors:
print(flavor, end=' ')
# 建立冰淇淋餐廳例項
my_icecreamstand = IceCreamStand('歡歡', '冰淇淋')
# 列印冰淇淋資訊
print(my_icecreamstand.describe_restaurant())
# 列印冰淇淋口味
my_icecreamstand.set_flavors(['藍莓', '巧克力', '芒果'])
my_icecreamstand.read_flavors()
執行結果:
9-7 管理員
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class User():
"""使用者類"""
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
def describe_user(self):
"""描述使用者資訊"""
long_name = self.last_name + ' ' + self.first_name + ' ' + self.age
print(long_name.title())
def greet_user(self):
"""向用戶問好"""
print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!')
def increment_login_attempts(self):
"""計數登入次數"""
self.login_attempts += 1
def reset_login_attempts(self):
"""重置登入次數為0"""
self.login_attempts = 0
class Admin(User):
"""特殊使用者Admin"""
"""初始化父類屬性"""
def __init__(self, first_name, last_name, age):
super().__init__(first_name, last_name, age) # 初始化父類屬性
self.privileges = ['can add post', 'can delete post', 'can ban user'] # Admin類特有的屬性
def show_privileges(self):
print('管理員許可權有:', end='')
for privilege in self.privileges:
print(privilege + ',', end=' ')
admin = Admin('San', 'Zhang', '20')
# 列印使用者資訊並問好
admin.describe_user()
admin.greet_user()
# 呼叫管理員許可權方法
admin.show_privileges()
執行結果:
9-8 許可權
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class User():
"""使用者類"""
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
def describe_user(self):
"""描述使用者資訊"""
long_name = self.last_name + ' ' + self.first_name + ' ' + self.age
print(long_name.title())
def greet_user(self):
"""向用戶問好"""
print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!')
def increment_login_attempts(self):
"""計數登入次數"""
self.login_attempts += 1
def reset_login_attempts(self):
"""重置登入次數為0"""
self.login_attempts = 0
class Privileges():
"""許可權類"""
def __init__(self):
self.privileges = ['can add post', 'can delete post', 'can ban user']
def show_privileges(self):
print('管理員許可權有:', end='')
for privilege in self.privileges:
print(privilege + ',', end=' ')
class Admin(User):
"""特殊使用者Admin"""
"""初始化父類屬性"""
def __init__(self, first_name, last_name, age):
super().__init__(first_name, last_name, age) # 初始化父類屬性
self.privileges = Privileges()
admin = Admin('San', 'Zhang', '20')
# 列印使用者資訊並問好
admin.describe_user()
admin.greet_user()
# 呼叫管理員許可權方法,注意這裡還需要privileges句點法呼叫show_privileges()
admin.privileges.show_privileges()
執行結果:
9-10 匯入Restaurant類
restaurant.py模組
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class Restaurant():
"""模擬餐館資訊的簡單嘗試"""
def __init__(self, restaurant_name, cuisine_type):
"""初始化描述餐館的屬性"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = 0
def describe_restaurant(self):
"""返回餐館資訊"""
long_name = self.restaurant_name + ' ' + self.cuisine_type
return long_name.title()
def open_restaurant(self):
"""列印餐廳營業訊息"""
print("The restaurant is opening!!")
def set_number_served(self, numbers):
"""設定就餐人數"""
self.number_served = numbers
def increment_number_served(self, numbers):
self.number_served += numbers
def read_number_served(self):
"""列印一條就餐人數資訊"""
print("There are " + str(self.number_served) + ' people eating in this restaurant')
class IceCreamStand(Restaurant):
def __init__(self, restaurant_name, cuisine_type):
"""初始化父類的屬性"""
super().__init__(restaurant_name, cuisine_type) # 初始化父類的屬性
self.flavors = []
def set_flavors(self, flavors):
"""設定冰淇淋餐廳口味"""
self.flavors = flavors
def read_flavors(self):
"""列印餐廳冰淇淋口味"""
print('The taste of ice cream has:', end='')
for flavor in self.flavors:
print(flavor, end=' ')
主程式my_restaurant.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from restaurant import IceCreamStand
# 建立冰淇淋餐廳例項
my_icecreamstand = IceCreamStand('歡歡', '冰淇淋')
# 列印冰淇淋資訊
print(my_icecreamstand.describe_restaurant())
# 列印冰淇淋口味
my_icecreamstand.set_flavors(['藍莓', '巧克力', '芒果', '草莓'])
my_icecreamstand.read_flavors()
執行結果:
9-11 匯入Admin類
admin.py模組
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class User():
"""使用者類"""
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
def describe_user(self):
"""描述使用者資訊"""
long_name = self.last_name + ' ' + self.first_name + ' ' + self.age
print(long_name.title())
def greet_user(self):
"""向用戶問好"""
print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!')
def increment_login_attempts(self):
"""計數登入次數"""
self.login_attempts += 1
def reset_login_attempts(self):
"""重置登入次數為0"""
self.login_attempts = 0
class Privileges():
"""許可權類"""
def __init__(self):
self.privileges = ['can add post', 'can delete post', 'can ban user']
def show_privileges(self):
print('管理員許可權有:', end='')
for privilege in self.privileges:
print(privilege + ',', end=' ')
class Admin(User):
"""特殊使用者Admin"""
"""初始化父類屬性"""
def __init__(self, first_name, last_name, age):
super().__init__(first_name, last_name, age) # 初始化父類屬性
self.privileges = Privileges()
主程式my_admin.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 從admin模組匯入Admin類
from admin import Admin
admin = Admin('Si', 'Li', '20')
# 列印使用者資訊並問好
admin.describe_user()
admin.greet_user()
# 呼叫管理員許可權方法,注意這裡還需要privileges句點法呼叫show_privileges()
admin.privileges.show_privileges()
執行結果:
9-12 多個模組
user.py模組
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class User():
"""使用者類"""
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.login_attempts = 0
def describe_user(self):
"""描述使用者資訊"""
long_name = self.last_name + ' ' + self.first_name + ' ' + self.age
print(long_name.title())
def greet_user(self):
"""向用戶問好"""
print('Hello,' + ' ' + self.last_name + ' ' + self.first_name + '!')
def increment_login_attempts(self):
"""計數登入次數"""
self.login_attempts += 1
def reset_login_attempts(self):
"""重置登入次數為0"""
self.login_attempts = 0
admin.py模組
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 從user模組匯入User類
from user import User
class Privileges():
"""許可權類"""
def __init__(self):
self.privileges = ['can add post', 'can delete post', 'can ban user']
def show_privileges(self):
print('管理員許可權有:', end='')
for privilege in self.privileges:
print(privilege + ',', end=' ')
class Admin(User):
"""特殊使用者Admin"""
"""初始化父類屬性"""
def __init__(self, first_name, last_name, age):
super().__init__(first_name, last_name, age) # 初始化父類屬性
self.privileges = Privileges()
主程式my_admin.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 從admin模組匯入Admin類
from admin import Admin
admin = Admin('Hua', 'Li', '15')
# 列印使用者資訊並問好
admin.describe_user()
admin.greet_user()
# 呼叫管理員許可權方法,注意這裡還需要privileges句點法呼叫show_privileges()
admin.privileges.show_privileges()
執行結果: