python从入门到实践-课后练习-第九章

  • 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.title()
        self.cuisine_type = cuisine_type.title()

    def describe_restaurant(self):
        print('restaurant name is ' + self.restaurant_name)
        print('cuisine is belonging to ' + self.cuisine_type)

    def open_restaurant(self):
        print(self.restaurant_name + 'is opening now')


restaurant1 = Restaurant('Changlai', 'Yue')
print(restaurant1.restaurant_name)
print(restaurant1.cuisine_type)
restaurant1.describe_restaurant()
restaurant1.open_restaurant()
  • 9-2三家餐馆:根据你为完成练习 9-1而编写的类创建三个实例,并对每个实例调用方法describe_restaurant()。

调用方法同上,参考restaurant1

  • 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.title()
        self.last_name = last_name.title()

    def describe_user(self):
        print(f'This user name is {self.first_name} {self.last_name}, from {self.country}')

    def greet_user(self):
        print(f'Greetings! {self.first_name} {self.last_name}')


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

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

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

class Restaurant:
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name.title()
        self.cuisine_type = cuisine_type.title()
        self.number_served = 0

    def describe_restaurant(self):
        print('restaurant name is ' + self.restaurant_name)
        print('cuisine is belonging to ' + self.cuisine_type)

    def open_restaurant(self):
        print(self.restaurant_name + 'is opening now')

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

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


pizza = Restaurant('queen', 'pizza')
pizza.describe_restaurant()
pizza.number_served = 430
print(pizza.number_served)
pizza.set_number_served(500)
print(pizza.number_served)
pizza.increment_number_served(800)
print(pizza.number_served)
  • 9-5尝试登录次数:在为完成练习 9-3而编写的 User 类中,添加一个名为login attempts 的属性。编写一个名为 increment login attempts()的方法,它将属性loginattempts的值加 1。再编写一个名为reset loginattempts()的方法,它将属性login attempts的值重置为0。

       根据User 类创建一个实例,再调用方法increment login attempts()多次。打印属性login attempts的值确认它被正确地递增;然后,调用方法reset login attempts(),并再次打印属性login attempts 的值,确认它被重置为0。

class User:
    def __init__(self, first_name, last_name):
        self.first_name = first_name.title()
        self.last_name = last_name.title()
        self.login_attempts = 0

    def describe_user(self):
        print(f'This user name is {self.first_name} {self.last_name}')

    def greet_user(self):
        print(f'Greetings! {self.first_name} {self.last_name}')

    def increment_login_attempts(self):
        self.login_attempts += 1
        print(self.login_attempts)

    def reset_login_attempts(self):
        self.login_attempts = 0
        print(self.login_attempts)


user1 = User('vivi', 'wang')
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.reset_login_attempts()
  • 9-6冰淇淋小店:冰淇淋小店是一种特殊的餐馆。编写一个名为 IceCreamStand的类,让它继承你为完成练习 9-1或练习 9-4 而编写的 Retaurant 类。这两个版本的Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为 flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋的方法。创建一个IceCreamStand实例,并调用这个方法。
class Restaurant:
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name.title()
        self.cuisine_type = cuisine_type.title()
        self.number_served = 0

    def describe_restaurant(self):
        print('restaurant name is ' + self.restaurant_name)
        print('cuisine is belonging to ' + self.cuisine_type)

    def open_restaurant(self):
        print(self.restaurant_name + 'is opening now')


class IceCreamStandard(Restaurant):
    def __init__(self, restaurant_name, cuisine_type):
        super().__init__(restaurant_name, cuisine_type)
        self.flavor = []

    def show_flavor(self):
        for i in self.flavor:
            print(f'ice cream include flavor {i}')


ice_cream = IceCreamStandard('KFC', 'IceCream')
ice_cream.flavor = ['chocolate', 'watermelon']
ice_cream.describe_restaurant()
ice_cream.show_flavor()
  • 9-7管理员:管理员是一种特殊的用户。编写一个名为Admin的类,让它继承你为完成练习9-3或练习9-5而编写的 User 类。添加一个名为 privileges 的属性,用于存储一个由字符串(如"canadd post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show privileges()的方法,它显示管理员的权限。创建一个Admir实例,并调用这个方法。
class User:
    def __init__(self, first_name, last_name):
        self.first_name = first_name.title()
        self.last_name = last_name.title()

    def describe_user(self):
        print(f'This user name is {self.first_name} {self.last_name}, from {self.country}')

    def greet_user(self):
        print(f'Greetings! {self.first_name} {self.last_name}')

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):
        print(self.first_name + ' ' + self.last_name + ' have this controlling right: ')
        for privilege in self.privileges:
            print('-' + privilege)


print(Charlie.login_attempts)
Charlie.reset_login_attempts()
print(Charlie.login_attempts)
Charlie.privileges = ['can reset passwords', 'can moderate discussions', 'can suspend accounts']
Charlie = Admin('Charlie', 'Wang')
Charlie.show_privileges()
  • 9-8权限:编写一个名为Privileges 的类,它只有一个属性-——privileges,其中存储了练习9-7所说的字符串列表。将方法 show privileges()移到这个类中。在Admir类中,将一个 Privileges 实例用作其属性。创建一个Admin 实例,并使用方法show _privileges()来显示其权限。
class User:
    def __init__(self, first_name, last_name):
        self.first_name = first_name.title()
        self.last_name = last_name.title()
        self.login_attempts = 0

    def describe_user(self):
        print(f'This user name is {self.first_name} {self.last_name}')

    def greet_user(self):
        print(f'Greetings! {self.first_name} {self.last_name}')

    def increment_login_attempts(self):
        self.login_attempts += 1
        print(self.login_attempts)

    def reset_login_attempts(self):
        self.login_attempts = 0
        print(self.login_attempts)

class Privileges:
    def __init__(self, privileges=[]):
        self.privileges = privileges

    def show_privileges(self):
        print(self.privileges)
        for i in self.privileges:
            print(f'this admin has {i}')


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


admin = Admin('wang', 'vivi')
admin.message.privileges = ['can reset passwords', 'can moderate discussions', 'can suspend accounts']
admin.describe_user()
admin.greet_user()
admin.message.show_privileges()
  • 9-9电瓶升级:在本节最后一个electric carpy版本中,给Battery类添加一个名为upgrade_battery()的方法。这个方法检查电瓶容量,如果它不是85,就将它设置为85。创建一辆电瓶容量为默认值的电动汽车,调用方法 get range(),然后对电瓶进行升级并再次调用 get range()。你会看到这辆汽车的续航里程增加了。
class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model
        self.year = 2023

    def change_year(self, change):
        self.year = change

    def describe_car(self):
        print(f'this car is {self.brand}, {self.model}, {self.year}')


class Battery:
    def __init__(self, battery_size=70):
        self.battery_size = battery_size

    def get_range(self):
        if self.battery_size == 70:
            range = 240
        elif self.battery_size == 85:
            range = 275

        print(f'this car range is {range}')

    def update_battery(self):
        if self.battery_size != 85:
            self.battery_size = 85
            print(self.battery_size)


class Electric_car(Car):
    def __init__(self, brand, model):
        super().__init__(brand, model)
        self.battery = Battery()


car1 = Electric_car('Audi', 'blue')
car1.battery.get_range()
car1.battery.update_battery()
car1.battery.get_range()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charliewyzzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值