python_chapter9

9.1练习

复制代码
#练习9.1
class Restaurant:
    #注意init函数是两个下划线
    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
    def describe_restaurant(self):
        print(f"Our name is {self.restaurant_name.title()},our type is {self.cuisine_type.title()}")
    def open_restaurant(self):
        print(f"we are {self.restaurant_name},we are running")
my_restaurant1 = Restaurant('jiangxixiaochao','xiaochao')
my_restaurant1.describe_restaurant()
my_restaurant1.open_restaurant()

#练习9.2
my_restaurant2 = Restaurant('jijihong','huoguo')
my_restaurant2.describe_restaurant()
my_restaurant2.open_restaurant()

#练习9.3
class User:
    def __init__(self,first_name,last_name):
        self.first_name = first_name
        self.last_name = last_name
    def describe_user(self):
        print(f"user's name is {self.first_name} {self.last_name}")
    def greet_user(self):
        print("hello , welcome to here!!!")

user1 = User('zhang','san')
user1.describe_user()
user1.greet_user()

9.2练习

复制代码
#练习9.4
class Restaurant:
    #注意init函数是两个下划线
    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(f"Our name is {self.restaurant_name.title()},our type is {self.cuisine_type.title()}")
    def open_restaurant(self):
        print(f"we are {self.restaurant_name},we are running")
    def set_number_served(self,person):
        #修改就餐人数值
        if person > self.number_served:
            self.number_served = person
            print(f"There are {self.number_served} eat here!!!")
        else:
            print("You are wrong!!!!")
    def increment_number_served(self,increase_p):
        #更新就餐人数值
        self.number_served += increase_p
        print(f"Now,There are {self.number_served} eat here!!!")
my_restaurant1 = Restaurant('jiangxixiaochao','xiaochao')
my_restaurant1.describe_restaurant()
my_restaurant1.open_restaurant()
my_restaurant1.set_number_served(20)
my_restaurant1.increment_number_served(12)
    

#练习9.5
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(f"user's name is {self.first_name} {self.last_name}")
    def greet_user(self):
        print("hello , welcome to here!!!")
    def increment_login_attempts(self):
        #新增属性值加一
        self.login_attempts += 1
    def reset_login_attempts(self):
        #重置属性值
        self.login_attempts = 0
user1 = User('zhang','san')
user1.describe_user()
user1.greet_user()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.increment_login_attempts()
user1.increment_login_attempts()
print(f"update login_attempts is :{user1.login_attempts}")
user1.reset_login_attempts()
print(f"reset login_attempts is: {user1.login_attempts}")

9.3练习 9.4练习

复制代码
#练习9.6 9.10
#导入单个类
from demo_9_2 import Restaurant
#导入整个模块
#import demo_9_2 
#导入所有类
#from demo_9_2 import *
#继承
class IceCreamStand(Restaurant):
    def __init__(self,restaurant_name,cuisine_type):
        super().__init__(restaurant_name,cuisine_type)
        #新增属性,初值为空列表
        self.flavors = []
    def my_flavors(self,myfavor):
        self.flavors.append(myfavor)
        print(f"my favor icecream is {self.flavors}")
#创建实例
# my_icecreamstand1 = IceCreamStand('DQ','IceCream')
# my_icecreamstand1.describe_restaurant()
# my_icecreamstand1.open_restaurant()
# my_icecreamstand1.set_number_served(20)
# my_icecreamstand1.increment_number_served(12)
# my_icecreamstand1.my_flavors('orange')
# my_icecreamstand1.my_flavors('apple')
# my_icecreamstand1.my_flavors('banana')

#练习9.7
from demo_9_2 import User
class Admin(User):
    def __init__(self,first_name,last_name):
        super().__init__(first_name,last_name)
        #self.privileges = []
    # def show_privileges(self,right):
    #     self.privileges.append(right)
    #     print(f"you have this rights: {self.privileges}")
# my_admin1 = Admin('zhang','san')
# my_admin1.describe_user()
# my_admin1.show_privileges("can add post")
# my_admin1.show_privileges("can delete post")
# my_admin1.show_privileges("can ban user")

#练习9.8
#将实例用作属性
class Privileges:
    def __init__(self,privileges = []):
        self.privileges = privileges
    def show_privileges(self,right):
        self.privileges.append(right)
        print(f"you have this rights: {self.privileges}")

from demo_9_2 import User
class Admin(User):
    def __init__(self,first_name,last_name):
        super().__init__(first_name,last_name)
        self.p = Privileges()
# my_admin2 = Admin('li','si')
# my_admin2.describe_user()
# my_admin2.p.show_privileges("can add")
# my_admin2.p.show_privileges("can delete")
# my_admin2.p.show_privileges("can ban")

#练习9.9
class Car:
    '''模拟汽车尝试'''
    def __init__(self,make,model,year):
        '''初始化描述汽车属性'''
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
    def get_descriptive_name(self):
        '''返回格式规范的描述性名称'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()
    def read_odometer(self):
        '''打印一个句子,指出汽车的行驶里程'''
        print(f"This car has {self.odometer_reading} miles on it.")
    def updata_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 =40):
        self.battery_size = battery_size
    def describe_battery(self):
        '''打印描述电池信息'''
        print(f"This car has a {self.battery_size}-kwh battery.")
    def get_range(self):
        '''打印一条信息,指出电池的续航里程'''
        if self.battery_size == 40:
            range = 150
        elif self.battery_size == 65:
            range = 225
        print(f"This car can go about {range} miles on a full charge.")
    def upgrade_battery(self):
        if self.battery_size < 65:
            self.battery_size = 65
        

class Electriccar(Car):
    '''电车的独特之处'''
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery = Battery()
        
my_electricar = Electriccar('bwm','leaf','2024')
print(my_electricar.get_descriptive_name())
my_electricar.battery.describe_battery()
my_electricar.battery.get_range()
my_electricar.battery.upgrade_battery()
my_electricar.battery.describe_battery()
my_electricar.battery.get_range()

9.5练习

复制代码
#练习9.13
from random import randint
'''randint(a,b) 将两个整数作为参数,并随机返回位于这两个整数之间(含)的整数'''
class Die:
    def __init__(self,sides=6):
        self.sides = sides
    def des_die(self):
        print(f"it is {self.sides} sides Die!!")
    def roll_die(self):
        print(randint(1,6))
my_die1 = Die()
my_die1.des_die()
i = 1
while(i<=10):
    my_die1.roll_die()
    i += 1
my_die2 = Die(10)
my_die2.des_die()
i = 1
while(i<=10):
    my_die2.roll_die()
    i += 1
my_die3 = Die(20)
my_die3.des_die()
i = 1
while(i<=10):
    my_die3.roll_die()
    i += 1
#练习9.14
from random import choice
'''choice() 将一个列表或元组作为参数,并随机返回其中一个元素'''
list1 = ['a','b','c','d',1,2,3,4,5,6,7,8,9,10]
first = choice(list1)
if first == 1 or first == 2:
    print("You have get big reward!!")

else:
    print("Sorry! no reward for you!")
#练习9.15
my_ticket = [1,2,3,4,5,6,7,8,9,'a','c','s','d']
i = 1
while(i):
    second = choice(my_ticket)
    i += 1
    if second == 1 or second == 2:
        print(f"i = {i}")
        print("You have get big reward!!")
        break
    else:
        print("sorry")
相关推荐
雨季6664 小时前
构建 OpenHarmony 简易文字行数统计器:用字符串分割实现纯文本结构感知
开发语言·前端·javascript·flutter·ui·dart
雨季6664 小时前
Flutter 三端应用实战:OpenHarmony 简易倒序文本查看器开发指南
开发语言·javascript·flutter·ui
小北方城市网4 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
进击的小头4 小时前
行为型模式:策略模式的C语言实战指南
c语言·开发语言·策略模式
console.log('npc')4 小时前
vue2 使用高德接口查询天气
前端·vue.js
2401_892000524 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 添加支出实现
前端·javascript·flutter
天马37985 小时前
Canvas 倾斜矩形绘制波浪效果
开发语言·前端·javascript
天天向上10245 小时前
vue3 实现el-table 部分行不让勾选
前端·javascript·vue.js
Tansmjs5 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法
喵手5 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列