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")
