第五周课后作业,第九章的练习题选几道写一下
9-3用户 : 创建一个名为User的类, 其中包含属性first_name和last_name, 还有用户简介通常会存储的其他几个属性。 在类User中定义一个名为describe_user()的方法, 它打印用户信息摘要; 再定义一个名为greet_user()的方法, 它向用户发出个性化的问候。创建多个表示不同用户的实例, 并对每个实例都调用上述两个方法。
class User():
def __init__(self, first_name, last_name, age, gender):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.gender = gender
def describe_user(self):
print("Name:" + self.first_name.title() + ' ' + self.last_name.title())
print("Age:" + self.age)
print("Gender:" + self.gender)
def greet_user(self):
print("Hello, " + self.first_name.title() + ' ' + self.last_name.title() + '.')
user_1 = User('jason', 'todd', '20', 'male')
user_2 = User('alice', 'barnes', '18', 'female')
user_1.describe_user()
user_1.greet_user()
print()
user_2.describe_user()
user_2.greet_user()
9-5尝试登录次数 : 在为完成练习9-3而编写的User类中, 添加一个名为login_attempts的属性。 编写一个名为increment_login_attempts()的方法,它将属性login_attempts的值加1。 再编写一个名为reset_login_attempts()的方法, 它将属性login_attempts的值重置为0。根据User类创建一个实例, 再调用方法increment_login_attempts()多次。 打印属性login_attempts的值, 确认它被正确地递增; 然后, 调用方法reset_login_attempts(), 并再次打印属性login_attempts的值, 确认它被重置为0。
class User():
def __init__(self, first_name, last_name, age, gender):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.gender = gender
self.login_attempts = 0
def describe_user(self):
print("Name:" + self.first_name.title() + ' ' + self.last_name.title())
print("Age:" + self.age)
print("Gender:" + self.gender)
def greet_user(self):
print("Hello, " + self.first_name.title() + ' ' + self.last_name.title() + '.')
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
user_1 = User('jason', 'todd', '20', 'male')
user_1.increment_login_attempts()
print(user_1.login_attempts)
user_1.increment_login_attempts()
print(user_1.login_attempts)
user_1.reset_login_attempts()
print(user_1.login_attempts)
9-7管理员 : 管理员是一种特殊的用户。 编写一个名为Admin的类, 让它继承你为完成练习9-3或练习9-5而编写的User类。 添加一个名为privileges的属性, 用于存储一个由字符串(如"can add post"、"can delete post"、"can ban user"等) 组成的列表。 编写一个名为show_privileges()的方法, 它显示管理员的权限。 创建一个Admin实例, 并调用这个方法。
class User():
def __init__(self, first_name, last_name, age, gender):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.gender = gender
self.login_attempts = 0
def describe_user(self):
print("Name:" + self.first_name.title() + ' ' + self.last_name.title())
print("Age:" + self.age)
print("Gender:" + self.gender)
def greet_user(self):
print("Hello, " + self.first_name.title() + ' ' + self.last_name.title() + '.')
def increment_login_attempts(self):
self.login_attempts += 1
def reset_login_attempts(self):
self.login_attempts = 0
class Admin(User):
def __init__(self, first_name, last_name, age, gender, privileges):
super().__init__(first_name, last_name, age, gender)
self.privileges = privileges
def show_privileges(self):
print(self.first_name.title() + ' ' + self.last_name.title()+' ' + self.privileges + '.')
user_1 = Admin('jason', 'todd', '20', 'male', 'can add post')
user_1.show_privileges()
9-12多个模块 : 将User类存储在一个模块中, 并将Privileges和Admin类存储在另一个模块中。 再创建一个文件, 在其中创建一个Admin实例, 并对其调用方法show_privileges(), 以确认一切都依然能够正确地运行。
from User import User
from Admin import Admin
user_1 = Admin('jason', 'todd', '20', 'male', 'can add post')
user_1.show_privileges()
9-14骰子 : 模块random包含以各种方式生成随机数的函数, 其中的randint()返回一个位于指定范围内的整数。创建一个Die类, 它包含一个名为sides的属性, 该属性的默认值为6。 编写一个名为roll_die()的方法, 它打印位于1和骰子面数之间的随机数。 创建一个6面的骰子, 再掷10次。 创建一个10面的骰子和一个20面的骰子, 并将它们都掷10次。
from random import randint
class Die:
def __init__(self, sides=6):
self.sides = sides
def roll_die(self):
print(randint(1, self.sides))
die_1 = Die()
print("Roll a die with six sides.")
for i in range(1, 11):
die_1.roll_die()
die_2 = Die(10)
print("Roll a die with ten sides.")
for i in range(1, 11):
die_2.roll_die()
die_3 = Die(20)
print("Roll a die with twenty sides.")
for i in range(1, 11):
die_3.roll_die()