A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小江哥 黑马粉丝团   /  2018-12-8 17:24  /  1048 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.   
强化 向对象编程的设计能,进步理解类、属性、法 的构建场景 **
强化 对self的理解,法中使self 可以获取和修改属性
2.    需求说明

烤地规则:
1.    地⾃⼰的状态,默认是的,地可以进烧烤
2.    地⾃⼰烧烤的总时间,由每次烧烤的时间累加得出
3.    地烧烤时,需要提供本次烧烤的时间
4.    地烧烤时,地状态随着烧烤总时间的变化改变:[0, 3) 的、[3, 6) 半不熟、[6, 8) 熟了、>=8 烤糊了
5.    输出地信息时,可以显示地的状态和烧烤的总时间
3.    向对象设计
类图
3.1   地
1.    使 SweetPotato 类可以创建 地对象
2.    地有两个属性:
状态 state:字符串
烧烤总时间 cooked_time:整数
3.    定义 cook 法, 提供参数 time 设置 本次烧烤的时间
使 本次烧烤时间 对 烧烤总时间 进累加
根据 烧烤总时间, 设置地的状态:
[0, 3) ->
[3, 6) -> 半不熟
[6, 8) -> 熟了
于等于8 -> 烤糊了
3.2   主程序逻辑
1.    创建地对象
2.    分多次烧烤地
3.    每烧烤次,输出地信息
4.    代码实现
4.1   定义地类,并且定义       init  () 和       str   ()
class SweetPotato:# 定 义 类
"""地⽠类"""
definit (self):
self.cooked_state = "⽣的"# 地⽠状态
self.cooked_time = 0 # 烧烤总时间
defstr (self):
return "地⽠状态:%s, 烧烤总时间:%d" % ( self.cooked_state, self.cooked_time)
4.2   定义"烤地"
defcook(self,time):
"""烧烤"""
# 本次烧烤时间累加到烧烤总时间中
self.cooked_time += time
# 根据烧烤总时间改变地⽠的状态
if self.cooked_time >= 0 and self.cooked_time< 3: self.cooked_state = "⽣的"
elif self.cooked_time >= 3 and self.cooked_time< 6:
self.cooked_state = "半⽣不熟"
elif self.cooked_time >= 6 and self.cooked_time< 8: self.cooked_state = "熟了"
else:
self.cooked_state = "烤糊了"
对象法中可以使self修改、获取对象属性,如 cook 法中使 self 修改了 cooked_time
和 cooked_state 属 性
4.3   测试代码
把上2块代码合并为个程序后,在代码的下添加以下代码进测试
# 创建对象
digua1 =SweetPotato() digua1.cook(1)
print(digua1) # 地⽠状态:⽣的,烧烤总时间:1
digua1.cook(2)
print(digua1) # 地⽠状态:半⽣不熟, 烧烤总时间:3 digua1.cook(3)
print(digua1) # 地⽠状态:熟了, 烧烤总时间:6 digua1.cook(3)
print(digua1) # 地⽠状态:烤糊了, 烧烤总时间:9


1 个回复

倒序浏览
一个人一座城0.0 来自手机 中级黑马 2018-12-8 20:55:28
沙发
看看不说话
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马