高级编程技术(Python)作业9
2018-04-08 17:06
344 查看
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。
Solution:
Output:
9-8 权限:编写一个名为Privileges的类,它只有一个属性——privileges,其中存储了练习9-7 所说的字符串列表。将方法show_privileges()移到这个类中。在Admin 类中,将一个Privileges实例用作其属性。创建一个Admin实例,并使用方法show_privileges()来显示其权限。
Solution:
Output:
9-14 骰子:模块random包含以各种方式生成随机数的函数,其中的randint()返回一个位于指定范围内的整数,例如,下面的代码返回一个1~6内的整数:
请创建一个Die 类,它包含一个名为sides 的属性,该属性的默认值为6。编写一个名为roll_die()的方法,它打印位于1和骰子面数之间的随机数。创建一个6面的骰子,再掷10次。创建一个10面的骰子和一个20面的骰子,并将它们都掷10次。
Solution:
Output:
根据User 类创建一个实例,再调用方法increment_login_attempts() 多次。打印属性login_attempts的值,确认它被正确地递增;然后,调用方法reset_login_attempts(),并再次打印属性login_attempts的值,确认它被重置为0。
Solution:
class User(): def __init__(self, first_name, last_name, age, login_attempts = 0): """initialize a user""" self.first_name = first_name self.last_name = last_name self.age = age self.login_attempts = login_attempts def describe_user(self): """show one's name""" print("My name is " + self.first_name.title() + " " + self.last_name.title() + ".") print("I'm " + str(self.age) + " years old.") def greet_user(self): """say hallo to user""" print("Hello, " + self.first_name.title() + " " + self.last_name.title() + "!") def increment_login_attempts(self): """increase login_attempts by 1""" self.login_attempts += 1 def reset_login_attempts(self): """set login_attempts to 0""" self.login_attempts = 0 user1 = User("Tim", "Ashero", 21) user1.describe_user() user1.greet_user() print() user2 = User("xianghe", "li", 22) user2.describe_user() user2.greet_user() user2.increment_login_attempts() print(user2.login_attempts) user2.increment_login_attempts() print(user2.login_attempts) user2.increment_login_attempts() print(user2.login_attempts) user2.reset_login_attempts() print(user2.login_attempts)
Output:
My name is Tim Ashero. I'm 21 years old. Hello, Tim Ashero! My name is Xianghe Li. I'm 22 years old. Hello, Xianghe Li! 1 2 3 0
9-8 权限:编写一个名为Privileges的类,它只有一个属性——privileges,其中存储了练习9-7 所说的字符串列表。将方法show_privileges()移到这个类中。在Admin 类中,将一个Privileges实例用作其属性。创建一个Admin实例,并使用方法show_privileges()来显示其权限。
Solution:
class User(): """build a user acount""" def __init__(self, first_name, last_name, age): """initialize a user""" self.first_name = first_name self.last_name = last_name self.age = age def describe_user(self): """show one's name""" print("My name is " + self.first_name.title() + " " + self.last_name.title() + ".") print("I'm " + str(self.age) + " years old.") def greet_user(self): """say hallo to user""" print("Hello, " + self.first_name.title() + " " + self.last_name.title() + "!") class Admin(User): """build an admin acount""" def __init__(self, first_name, last_name, age): super().__init__(first_name, last_name, age) self.privileges = Privileges() class Privileges(): """save privilege""" def __init__(self): """initialize privileges""" self.privileges = ["can add post", "can delete post", "can ban user"] def show_privileges(self): """print privilege""" for privilege in self.privileges: print(privilege) admin1 = Admin("Ashero", "Tim", 21) admin1.privileges.show_privileges()
Output:
can add post can delete post can ban user
9-14 骰子:模块random包含以各种方式生成随机数的函数,其中的randint()返回一个位于指定范围内的整数,例如,下面的代码返回一个1~6内的整数:
from random import randint x = randint(1, 6)
请创建一个Die 类,它包含一个名为sides 的属性,该属性的默认值为6。编写一个名为roll_die()的方法,它打印位于1和骰子面数之间的随机数。创建一个6面的骰子,再掷10次。创建一个10面的骰子和一个20面的骰子,并将它们都掷10次。
Solution:
import random class Die< 4000 span class="hljs-params">(): """Make a die""" def __init__(self, sides = 6): """build by sides""" self.sides = sides def roll_die(self): print(random.randint(1, self.sides)) die6 = Die() die10 = Die(10) die20 = Die(20) count = 10 while(count): print(10 - count + 1) print("6 sides: ", end = "") die6.roll_die() print("10 sides: ", end = "") die10.roll_die() print("20 sides: ", end = "") die20.roll_die() print() count -= 1
Output:
1 6 sides: 5 10 sides: 9 20 sides: 7 2 6 sides: 1 10 sides: 5 20 sides: 9 3 6 sides: 1 10 sides: 7 20 sides: 10 4 6 sides: 2 10 sides: 10 20 sides: 19 5 6 sides: 3 10 sides: 3 20 sides: 11 6 6 sides: 5 10 sides: 8 20 sides: 15 7 6 sides: 1 10 sides: 9 20 sides: 5 8 6 sides: 1 10 sides: 5 20 sides: 1 9 6 sides: 1 10 sides: 2 20 sides: 20 10 6 sides: 5 10 sides: 9 20 sides: 3
相关文章推荐
- 高级编程技术(Python)作业5
- 高级编程技术(Python)作业3
- 高级编程技术 Python 第二周作业
- 高级编程技术 Python 第四周作业
- 高级编程技术(Python)作业10
- 高级编程技术(Python)作业6
- 高级编程技术作业_1:浏览https://www.python.org的发现与收获
- 高级编程技术 Python 第三周作业
- 《高级编程技术》作业[1]——python实现程序构想
- 高级编程技术(Python)作业1
- 高级编程技术 Python 第五周作业
- Python-S13作业-day5-之 ATM
- python基础学习小作业(一)
- 高级编程技术第四次作业
- Lesson007作业 python
- Python学习第四周第一次作业——用户输入和while循环
- python小作业初版之信用卡交易
- 高级编程技术第七、八次作业
- 高级编程技术第四周平时作业(2)