天天看點

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