天天看点

《Python编程:从入门到实践》课后习题-第9章9-1 餐馆9-2 三家餐馆9-3 用户9-4 就餐人数9-5 尝试登陆次数9-6 冰淇淋小店9-7 管理员9-8 权限9-9 电瓶升级9-10 导入Restaurant类9-11 导入Admin类9-12 多个模块9-13 使用OrderedDict9-14 骰子

9-1 餐馆

#9-1 餐馆

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("餐馆正在营业。")

restaurant = Restaurant('KFC','fast food')
print(restaurant.restaurant_name)
print(restaurant.cuisine_type)
restaurant.describe_restaurant()
restaurant.open_restaurant()
           

9-2 三家餐馆

#9-2 三家餐馆

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("餐馆正在营业。")

restaurant1 = Restaurant('KFC','fast food')
restaurant2 = Restaurant('Quanjude','Peking Duck')
restaurant3 = Restaurant('Shaxian County snacks','snacks')
restaurant1.describe_restaurant()
restaurant2.describe_restaurant()
restaurant3.describe_restaurant()
           

9-3 用户

#9-3 用户

class User():
    """存储并打印用户信息与属性"""
    def __init__(self,first_name,last_name,age,city):
        self.first_name = first_name
        self.last_name = last_name
        self.age = str(age)
        self.city = city

    def describe_user(self):
        """打印用户信息摘要。"""
        print("User's name is " + self.first_name.title() + " " + self.last_name.title() + ".")
        print("User's age is " + self.age + ".")
        print("User comes from " + self.city)

    def greet_user(self):
        """向用户发出个性化的问候。"""
        print("Hello dear " + self.first_name.title() + " " +  self.last_name.title() + "!")

person1 = User('jane','zhang',,'Chengdu')
person2 = User('rosalyn','yu',,'Wuhan')
person3 = User('Stefani Joanne Angelina','Germanotta',,'New York')
User.describe_user(person1)
User.greet_user(person1)
User.describe_user(person2)
User.greet_user(person2)
User.describe_user(person3)
User.greet_user(person3)
           

9-4 就餐人数

#9-4 就餐人数

class Restaurant():

    def __init__(self,restaurant_name,cuisine_type,):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
        self.number_served = 

    def describe_restaurant(self):
        print(self.restaurant_name)
        print(self.cuisine_type)
        print(str(self.number_served) + "人在这里就餐过。")

    def open_restaurant(self):
        print("餐馆正在营业。")

    def set_number_served(self,number):
        """设置就餐人数"""
        print("就餐人数:" + str(number) + ".")

    def increment_number_served(self,increment_number):
        """将就餐人数递增"""
        self.number_served += increment_number

restaurant = Restaurant('KFC','fast food')
restaurant.describe_restaurant()
restaurant.number_served = 
restaurant.describe_restaurant()
restaurant.set_number_served()
restaurant.increment_number_served()
restaurant.describe_restaurant()
           

9-5 尝试登陆次数

#9-5 尝试登陆次数

class User():
    """存储并打印用户信息与属性"""
    def __init__(self,first_name,last_name,age,city,login_attempts):
        self.first_name = first_name
        self.last_name = last_name
        self.age = str(age)
        self.city = city
        self.login_attempts = 

    def describe_user(self):
        """打印用户信息摘要。"""
        print("用户名:" + self.first_name.title() + " " + self.last_name.title() + ".")
        print("年龄:" + self.age + ".")
        print("地区:" + self.city)
        print("用户尝试登入次数:" + str(self.login_attempts))

    def greet_user(self):
        """向用户发出个性化的问候。"""
        print("欢迎" + self.first_name.title() + " " +  self.last_name.title() + "!")

    def increment_login_attempts(self):
        self.login_attempts += 

    def reset_login_attempts(self):
        self.login_attempts = 

person = User('jane','zhang',,'Chengdu',)
person.increment_login_attempts()
person.increment_login_attempts()
person.increment_login_attempts()
person.increment_login_attempts()
person.increment_login_attempts()
person.describe_user()
person.reset_login_attempts()
person.describe_user()
           

9-6 冰淇淋小店

#9-6 冰淇淋小店

class Restaurant():

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type

    def describe_restaurant(self):
        print("Restaurant's name is " + self.restaurant_name + ".")
        print("Restaurant's cuisine type is " + self.cuisine_type + ".")

    def open_restaurant(self):
        print("Restaurant is opening.")

class IceCreamStand(Restaurant):
    """冰淇淋小店"""

    def __init__(self,restaurant_name,cuisine_type,*flavors):
        """初始化父类的属性"""
        super().__init__(restaurant_name,cuisine_type)
        self.flavors = flavors

    def describe_flavors(self):
        print("The ice cream has follow flavors: ")
        for i in self.flavors:
            print(i)

ice_cream = IceCreamStand('Haagen-Dazs','ice cream','Vanilla','Strawberry','chocolate')
ice_cream.describe_flavors()
           

9-7 管理员

#9-7 管理员

class User():
    """存储并打印用户信息与属性"""
    def __init__(self,first_name,last_name,age,city):
        self.first_name = first_name
        self.last_name = last_name
        self.age = str(age)
        self.city = city

    def describe_user(self):
        """打印用户信息摘要。"""
        print("User's name is " + self.first_name.title() + " " + self.last_name.title() + ".")
        print("User's age is " + self.age + ".")
        print("User comes from " + self.city)

    def greet_user(self):
        """向用户发出个性化的问候。"""
        print("Hello dear " + self.first_name.title() + " " +  self.last_name.title() + "!")

class Admin(User):

    def __init__(self,first_name,last_name,age,city,*privileges):
        super().__init__(first_name,last_name,age,city)
        self.privileges = privileges

    def show_privileges(self):
        print("管理员的权限如下:")
        for i in self.privileges:
            print(i)

user = Admin('rosalyn','yu',,'Wuhan','can add post','cab delete post','can ban user')
user.show_privileges()
           

9-8 权限

#9-8 权限

class User():
    """存储并打印用户信息与属性"""
    def __init__(self,first_name,last_name,age,city):
        self.first_name = first_name
        self.last_name = last_name
        self.age = str(age)
        self.city = city

    def describe_user(self):
        """打印用户信息摘要。"""
        print("User's name is " + self.first_name.title() + " " + self.last_name.title() + ".")
        print("User's age is " + self.age + ".")
        print("User comes from " + self.city)

    def greet_user(self):
        """向用户发出个性化的问候。"""
        print("Hello dear " + self.first_name.title() + " " +  self.last_name.title() + "!")

class Privileges():

    def __init__(self,privileges = ['can add post','cab delete post','can ban user']):
        self.privileges  = privileges

    def show_privileges(self):
        print("管理员拥有所有的权限:" )
        for j in self.privileges:
            print(j)

class Admin(User):

    def __init__(self,first_name,last_name,age,city):
        super().__init__(first_name,last_name,age,city)
        self.privileges = Privileges()

user = Admin('rosalyn','yu',,'wuhan')
user.privileges.show_privileges()
           

9-9 电瓶升级

#9-9 电瓶升级

class Car():
    """一次模拟汽车的简单尝试"""

    def __init__(self,make,model,year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 

    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 = ):
        """初始化电瓶的属性"""
        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 == :
            range = 
        elif self.battery_size == :
            range = 

        message = "This car can go approximately " + str(range)
        message += " miles on a full charge."
        print(message)

    def upgrade_battery(self):
        """检查电瓶容量"""
        if self.battery_size != :
            self.battery_size = 

class ElectricCar(Car):
    """电动汽车的独特之处"""
    def __init__(self,make,model,year):
        """初始化父类的属性,再初始化电动汽车特有的属性"""
        super().__init__(make,model,year)
        self.battery = Battery()

user_car = ElectricCar('tesla','model s',)
user_car.battery.get_range()
user_car.battery.upgrade_battery()
user_car.battery.get_range()
           

9-10 导入Restaurant类

#9-10 导入Restaurant类

from restaurant import Restaurant

my_restaurant = Restaurant('KFC','fast food')
my_restaurant.describe_restaurant()
my_restaurant.open_restaurant()
           

9-11 导入Admin类

#9-11 导入Admin类

from admin import Admin

users = Admin('rosalyn','yu',,'Wuhan')
users.privileges.show_privileges()
           

9-12 多个模块

#9-12 多个模块

from user import *
from admin import *

users = Admin('rosalyn','yu',,'Wuhan')
users.privileges.show_privileges()
           

9-13 使用OrderedDict

#9-13 使用OrderedDict

from collections import OrderedDict

dic = OrderedDict()
dic['lower'] = '全部小写'
dic['sort'] = '永久性排序'
dic['strip'] = '删除首尾空白'
dic['title'] = '首字母大写'
dic['pop'] = '删除'
dic['min']='最小值'
dic['max']='最大值'
dic['sum']='总和'
dic['insert']='插入元素'
dic['sorted']='临时排序'

for key,value in dic.items():
    print("语法" + key + "的意思是:" + value + "。")
           

9-14 骰子

#9-14 骰子

from random import randint

class Die():

    def __init__(self,sides = ):
        self.sides = sides

    def roll_die(self):
        """打印位于1和骰子面数之间的随机数"""
        x = randint(,self.sides)
        print(x)

my_die = Die()
for i in range(,):
    i = my_die.roll_die()
print("\n")
my_die = Die()
for i in range(,):
    i = my_die.roll_die()
print("\n")
my_die = Die()
for i in range(,):
    i = my_die.roll_die()