1. 程式人生 > >《Python程式設計從入門到實踐》第9章類課後習題(附程式碼)

《Python程式設計從入門到實踐》第9章類課後習題(附程式碼)

目錄

9-1(9-2) 餐館

9-3 使用者

9-4 就餐人數

9-5 嘗試登陸次數

9-6 冰淇淋小店

9-7 管理員

9-8 許可權

9-10 匯入Restaurant類

9-11 匯入Admin類

9-12 多個模組


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()

執行結果: