hw3¶
约 932 个字 127 行代码 预计阅读时间 5 分钟
Problem 1 汽车¶
编写一个函数,将一辆汽车的信息存储在一个字典中。这个函数总是接受制造商和型号,还接受任意数量的关键字实参。¶
这样调用这个函数:提供必不可少的信息,以及两个名称—值对,如颜色和选装配件。这个函数必须能够像下面这样进行调用:
car = make_car('subaru', 'outback', color='blue', tow_package=True)
打印返回的字典,确认正确地处理了所有的信息。
Python
def make_car(manufacturer, model, **other_info):
"""创建包含汽车信息的字典"""
car_dict = {
'manufacturer': manufacturer,
'model': model
}
car_dict.update(other_info) # 添加额外的关键字参数
return car_dict
# 调用函数并打印结果
car = make_car('subaru', 'outback', color = 'blue', tow_package = True)
print(car)
1 |
|
Problem 2 餐馆¶
创建一个名为Restaurant 的类,其方法__init__()设置两个属性:restaurant_name 和cuisine_type。¶
Python
class Restaurant():
def __init__(self, restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
创建一个名为describe_restaurant()的方法和一个名为open_restaurant()的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。¶
Python
def describe_restaurant(self):
print(f"restaurant_name :{self.restaurant_name},cuisine_type:{self.cuisine_type}")
def open_restaurant(self):
print(f"{self.restaurant_name} 正在营业")
根据这个类创建一个名为restaurant 的实例,分别打印其两个属性,再调用前述两个方法。¶
Python
restaurant = Restaurant ("二食堂", "预制菜")
# 打印两个属性
print(restaurant.restaurant_name)
print(restaurant.cuisine_type)
# 调用两个方法
describe_restaurant(restaurant)
open_restaurant(restaurant)
1 2 3 4 |
|
Problem 3 三家餐馆¶
根据你为完成练习2而编写的类创建三个实例,并对每个实例调用方法describe_restaurant()。¶
Python
# 创建三个实例
restaurant1 = Restaurant("一食堂", "预制菜" )
restaurant2 = Restaurant("二食堂", "预制菜" )
restaurant3 = Restaurant("三食堂", "预制菜" )
# 调用方法
describe_restaurant(restaurant1)
describe_restaurant(restaurant2)
describe_restaurant(restaurant3)
1 2 3 |
|
Problem 4 用户¶
创建一个名为User 的类,其中包含属性first_name 和last_name,还有用户简介通常会存储的其他几个属性。¶
Python
class User():
def __init__(self, first_name, last_name, **other_info):
"""初始化用户属性"""
self.first_name = first_name
self.last_name = last_name
self.other_info = other_info
在类User 中定义一个名为describe_user()的方法,它打印用户信息摘要;再定义一个名为greet_user()的方法,它向用户发出个性化的问候。¶
Python
def describe_user(self):
"""打印用户信息摘要"""
print("用户信息摘要:")
print(f"first name:{self.first_name},last name:{self.last_name}")
for key, value in self.other_info.items():
print(f"{key}:{value}")
def greet_user(self):
"""向用户发出个性化问候"""
full_name = f"{self.first_name} {self.last_name}"
print(f"你好(Hello),{full_name}!欢迎访问!")
创建多个表示不同用户的实例,并对每个实例都调用上述两个方法。¶
Python
# 创建不同用户实例
user_1 = User("黄", "刚", age = 19, city = "天津") # 中文实例
user_2 = User("Emma", "Wilson", job = "Designer", hobby = "Reading") # 英文实例
user_3 = User("朱", "Peter", language = "Jupyter", work = "Notebook") # 中英混杂实例
# 调用方法
describe_user(user_1)
greet_user(user_1)
# 换行隔开
print("\n")
describe_user(user_2)
greet_user(user_2)
# 换行隔开
print("\n")
describe_user(user_3)
greet_user(user_3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Problem 5 就餐人数¶
在为完成练习2而编写的程序中,添加一个名为number_served的属性,并将其默认值设置为0。根据这个类创建一个名为restaurant 的实例;打印有多少人在这家餐馆就餐过,然后修改这个值并再次打印它。¶
Python
# 练习2的程序
class Restaurant():
def __init__(self, restaurant_name, cuisine_type, number_served = 0):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
self.number_served = number_served
# 实例
restaurant = Restaurant("包子铺", "包子", 10)
print(f"来了{restaurant.number_served}人")
# 修改 再次打印
restaurant.number_served = 100
print(f"来了{restaurant.number_served}人")
1 2 |
|
添加一个名为set_number_served()的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。¶
Python
# 添加一个名为set_number_served()的方法,它让你能够设置就餐人数
def set_number_served(self, num):
self.number_served = num
# 调用这个方法并向它传递一个值,然后再次打印这个值。
set_number_served(restaurant, 200)
print(f"来了,{restaurant.number_served}人")
1 |
|
添加一个名为increment_number_served()的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。¶
Python
# 添加一个名为increment_number_served()的方法,它让你能够将就餐人数递增
def increment_number_served(self, increment_number):
self.number_served += increment_number
# 调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数
increment_number_served(restaurant, 900)
print(f"现在来了,{restaurant.number_served}人")
1 |
|
Problem 6 尝试登录次数¶
在为完成 练习4 而编写的 User 类中,添加一个名为login_attempts 的属性。编写一个名为increment_login_attempts()的方法,它将属性login_attempts 的值加1。再编写一个名为reset_login_attempts()的方法,它将属性login_attempts 的值重置为0。¶
Python
# 练习4编写的 User 类
class User():
def __init__(self, first_name, last_name, login_attempts = 0, **other_info):
"""初始化用户属性"""
self.first_name = first_name
self.last_name = last_name
self.login_attempts = login_attempts
self.other_info = other_info
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
根据User 类创建一个实例,再调用方法increment_login_attempts()多次。打印属性login_attempts 的值,确认它被正确地递增;然后,调用方法reset_login_attempts(),并再次打印属性login_attempts 的值,确认它被重置为0。¶
Python
user_4 = User("Huang", "gang", age = 19, city = "TJ")
# 多次调用
for i in range(0,5):
user_4.increment_login_attempts()
print(f"尝试登陆次数,{user_4.login_attempts}")
# 重置登录次数
user_4.reset_login_attempts()
print(f"重置后登陆次数,{user_4.login_attempts}")
1 2 3 4 5 6 |
|