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")
相关推荐
刘发财3 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶6 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶6 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol8 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路9 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide9 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter10 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
孟健10 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
格砸10 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
Live0000011 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native