初学python,在编程中,应该如何一步一步着手,遵循一个合理的逻辑思维过程,培养良好的编程习惯,特此记录方便以后查阅。
小人开枪为例
1.定义主函数,控制整个程序流程:
def main():
"""用于控制程序流程
pass
if __name__ == '__main__':
main()
2.搭建框架。在主函数中用中文注释每一个步骤
def main():
# 1.创建一个小人对象
# 2.创建一把枪对象
# 3.创建一个弹夹对象
# 4.创建子弹对象
# 5.小人把子弹装入弹夹中
# 6.小人把弹夹装入枪中
# 7.创建一个敌人对象
# 8. 小人拿起枪
# 9.小人开枪射杀敌人
if __name__ == '__main__':
main()
3.顺着搭建的框架,依次设计类、创建对象
4.每写一个类的方法,都要注释""“写出该方法的功能是干什么的”""(类似于大框架),以及用#写出怎么分步实现的,怎么实现的,再去写实现的过程。
"""实例"""
class A:
def test(self):
"""进行测试"""
#1. 取出数据
XXXXXXXX
#2. 带入公式
XXXXXXXX
5.完成一个步骤之后,要习惯性的进行test
# 测试弹夹的信息
print(dan_jia)
# 测试枪的信息
print(ak47)
弹夹的子弹数量为:1/20
ak47枪装有弹夹
此人有ak47枪
完整代码
class Person():
"""人的类"""
def __init__(self, name):
self.name = name
self.hp = 100 #100血
def add_bullet(self,danjia_temp, bullet_temp):
# 给弹夹添加子弹
danjia_temp.tianjia_bullet(bullet_temp)
def add_danjia(self,gun_temp, dan_jia_temp):
# 给枪添加弹夹
gun_temp.add_danjia(dan_jia_temp)
def own_gun(self, gun_temp):
"""拿枪"""
self.gun = gun_temp
def __str__(self):
return "此人有%s枪"%(self.gun.name)
def shot(self, target):
"""击杀敌人"""
self.gun.fire(target)
def diaoxue(self,shanghai_temp):
"""被打中掉血了"""
self.hp-=shanghai_temp
print("打中敌人了,敌人的血还剩下: %d"%self.hp)
class Gun():
"""枪的类"""
def __init__(self, name):
self.name = name
self.danjia = None
def add_danjia(self,dan_jia_temp):
#枪装入弹夹
self.danjia = dan_jia_temp
def __str__(self):
if self.danjia == None:
return "%s枪没有弹夹"%(self.name)
else:
return "%s枪装有弹夹"%(self.name)
def fire(self, target):
"""从弹夹中取出子弹,然后让该子弹打中敌人"""
#弹夹取出子弹
zidan_temp = self.danjia.tanchu_bullet()
#用子弹去打敌人
if zidan_temp:
zidan_temp.hurt(target)
class DanJia():
"""弹夹的类"""
def __init__(self, max_number):
self.max_number = max_number #弹夹的容量
self.bullet_list = [] #弹夹当前的子弹数量
def tianjia_bullet(self,bullet_temp):
"弹夹添加子弹"
self.bullet_list.append(bullet_temp)
def __str__(self):
return "弹夹的子弹数量为:%d/%d"%(len(self.bullet_list), self.max_number)
def tanchu_bullet(self):
#弹夹.弹出子弹
if self.bullet_list:
return self.bullet_list.pop()
else:
print("很遗憾,没有子弹...")
return None
class Bullet():
def __init__(self):
self.shanghai = 10
def hurt(self, target):
target.diaoxue(self.shanghai)
def main():
# 1.创建一个小人对象
xiaoren = Person("xiaoren")
# 2.创建一把枪对象
ak47 =Gun("ak47")
# 3.创建一个弹夹对象
dan_jia = DanJia(20) #属性:弹夹能装20颗子弹
# 4.创建子弹对象
bullet = Bullet()
# 5.小人人把子弹装入弹夹中
xiaoren.add_bullet(dan_jia, bullet)
# 6.小人把弹夹装入枪中
xiaoren.add_danjia(ak47, dan_jia)
# 7.创建一个敌人对象
enermy = Person("enermy")
# 测试弹夹的信息
# print(dan_jia)
# 测试枪的信息
# print(ak47)
# 8. 小人拿起枪
xiaoren.own_gun(ak47)
#测试人
# print(xiaoren)
# 9.小人开枪射杀敌人
xiaoren.shot(enermy)
if __name__ == '__main__':
main()