Python编程:从入门到实践 第 9 章 类 课后练习 9-1~9-5

9-1 餐馆 :创建一个名为 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(self.restaurant_name)
        print(self.cuisine_type)

    def open_restaurant(self):
        """餐馆正在营业"""
        print("The restaurant is opening.")


restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()

结果:

henry
chinese
The restaurant is opening.


9-2 三家餐馆 :根据你为完成练习 9-1 而编写的类创建三个实例,并对每个实例调用方法 describe_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(self.restaurant_name.title())
        print(self.cuisine_type.title())

    def open_restaurant(self):
        """餐馆正在营业"""
        print("The restaurant is opening.\n")


restaurant1 = Restaurant('henry', 'chinese')
restaurant1.describe_restaurant()
restaurant1.open_restaurant()

restaurant2 = Restaurant('allen', 'italian')
restaurant2.describe_restaurant()
restaurant2.open_restaurant()

restaurant3 = Restaurant('alice', 'french')
restaurant3.describe_restaurant()
restaurant3.open_restaurant()
Henry
Chinese
The restaurant is opening.

Allen
Italian
The restaurant is opening.

Alice
French
The restaurant is opening.


9-3 用户 :创建一个名为 User 的类,其中包含属性 first_name 和 last_name ,还有用户简介通常会存储的其他几个属性。在类 User 中定义一个名为 describe_user() 的方法,它打印用户信息摘要;再定义一个名为 greet_user() 的方法,它向用户发出个性化的问候。创建多个表示不同用户的实例,并对每个实例都调用上述两个方法。

class User():
    def __init__(self, first_name, last_name ):
        """用户信息初始化"""
        self.first_name = first_name
        self.last_name = last_name

    def describe_user(self):
        """用户详细信息"""
        print(self.first_name)
        print(self.last_name)

    def greet_user(self):
        """问候用户"""
        long_name = self.first_name.title() + " " + self.last_name.title() + "!"
        print("Hello, " + long_name)


user = User('henry', 'he')
user.describe_user()
user.greet_user()

结果:

henry
he
Hello, Henry He!

9-4 就餐人数 :在为完成练习 9-1 而编写的程序中,添加一个名为 number_served 的属性,并将其默认值设置为 0 。根据这个类创建一个名为 restaurant 的实例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。


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):
        """描述餐馆信息"""
        print(self.restaurant_name)
        print(self.cuisine_type)

    def open_restaurant(self):
        """餐馆正在营业"""
        print("The restaurant is opening.")

    def served_number(self):
        """打印服务人数"""
        print("The served_number are " + str(self.number_served) + ".")


restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.number_served = 20
restaurant.served_number()
henry
chinese
The restaurant is opening.
The served_number are 20.


添加一个名为 set_number_served() 的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。


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):
        """描述餐馆信息"""
        print(self.restaurant_name)
        print(self.cuisine_type)

    def open_restaurant(self):
        """餐馆正在营业"""
        print("The restaurant is opening.")

    def served_number(self):
        """打印服务人数"""
        print("The served_number are " + str(self.number_served) + ".")

    def set_number_served(self, number):
        self.number_served = number
        

restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.set_number_served(20)
restaurant.served_number()

结果:

henry
chinese
The restaurant is opening.
The served_number are 20.

添加一个名为 increment_number_served() 的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。

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):
        """描述餐馆信息"""
        print(self.restaurant_name)
        print(self.cuisine_type)

    def open_restaurant(self):
        """餐馆正在营业"""
        print("The restaurant is opening.")

    def served_number(self):
        """打印服务人数"""
        print("The served_numbers are " + str(self.number_served) + ".")

    def set_number_served(self, number):
        self.number_served = number

    def increment_number_served(self, number):
        self.number_served += number


restaurant = Restaurant('henry', 'chinese')
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant.set_number_served(20)
restaurant.served_number()

restaurant.increment_number_served(25)
restaurant.served_number()

结果:

henry
chinese
The restaurant is opening.
The served_numbers are 20.
The served_numbers are 45.


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 。

扫描二维码关注公众号,回复: 3480710 查看本文章
class User():
    def __init__(self, first_name, last_name ):
        """用户信息初始化"""
        self.first_name = first_name
        self.last_name = last_name
        self.login_attempts = 0

    def describe_user(self):
        """用户详细信息"""
        print(self.first_name)
        print(self.last_name)

    def greet_user(self):
        """问候用户"""
        long_name = self.first_name.title() + " " + self.last_name.title() + "!"
        print("Hello, " + long_name)

    def increment_login_attempts(self, attempts):
        self.login_attempts += attempts

    def reset_login_attempts(self):
        self.login_attempts = 0


user = User('henry', 'he')
user.greet_user()
user.increment_login_attempts(12)
print(user.login_attempts)

user.increment_login_attempts(15)
print(user.login_attempts)

user.reset_login_attempts()
print(user.login_attempts)

user.increment_login_attempts(1)
print(user.login_attempts)

结果:

Hello, Henry He!
12
27
0
1

猜你喜欢

转载自blog.csdn.net/hjk120key3/article/details/82767204