python外部数据源文件处理
1.熟练掌握 面对对象的思想
class ,def
class C:cc = 10print('类的静态属性',C.cc)a = C()b =C()print('实例对象a',a.cc)print('实例对象b',b.cc)a.cc = 50print('222实例对象a',a.cc)print('222实例对象b',b.cc)C.cc = 100print('333实例对象a',a.cc)print('333实例对象b',b.cc)print('333实例对象b',C.cc)print(C.__dict__)x = C()#使用__dict__查看对象属性print('第一次打印实例对象属性',x.__dict__)x.cc =90print('第2次打印实例对象属性',x.__dict__)
#使用__dict__查看对象属性
2.
YAML 是一个可读性高,用来表达数据序列化的格式,常常作为配置文件使用
JSON 是一个轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或序列值的 值组成的数据对象
json的使用:
json 官方文档:
import jsonclass PracticeJson:def __init__(self):self.data = {'a':1,'b':2}def practicedump(self):with open('./demo.json',mode ='w') as fs:json.dump(self.data,fp=fs)def practicedumps(self):print('===dumps之前====')print(type(self.data))print('===dumps之后====')print(type(json.dumps(self.data)))def practiceload(self):print(json.load(open('demo.json')))def practiceloads(self):print('===loads之前====')json_data = json.dumps(self.data)print(type(json_data))print('===loads之后')print(type(json.loads(json_data)))pj =PracticeJson()pj.practicedump()pj.practiceload()
excel
好用的第三方库集合: http://www.python-excel.org/
openpyxl库:
简单解决ImportError: No module named openpyxl,xlrd
--直接cmd: pip install openpyxl
'''
设定一个回合制2人对打游戏。
每个人物都有hp,power,skill
hp代表血量,power代表攻击力,
每三个回合可以使用一次skill,skill将攻击力翻倍
'''
import yaml #导入yaml
class Game: #定义Game类
def __init__(self): #定义init私有方法
battle = yaml.safe_load(open("homework-yaml.yaml")) #读取game.yaml文件并传递给battle
default = battle["default"] #读取字典中的 default
self.first = default[0] #读取default中第一个人
self.second = default[1] #读取default中第二个人
#读取第一个人的血量、攻击力和技能
self.first_hp = battle[self.first]["hp"]
self.first_power = battle[self.first]["power"]
self.first_skill = battle[self.first]["skill"]
#读取第二个人的血量、攻击力和技能
self.second_hp = battle[self.second]["hp"]
self.second_power = battle[self.second]["power"]
self.second_skill = battle[self.second]["skill"]
def fight(self): #定义 fight方法
round = 0 #初始化第一回合
while True:
print(self.first,"'s hp is",self.first_hp) #打印每一轮后第一个人的血量
print(self.second,"'s hp is", self.second_hp) #打印每一轮后第二个人的血量
round +=1 #每一回合round+1
if round % 3 == 0: #每3回合使用一次技能,分别计算第一个人和第二个人此回合后的血量
self.first_hp = self.first_hp - self.second_power * self.second_skill
self.second_hp = self.second_hp - self.first_power * self.first_skill
else: #非3的倍数回合时,分别计算第一个人和第二个人每回合后的血量
self.first_hp = self.first_hp - self.second_power
self.second_hp = self.second_hp - self.first_power
if self.first_hp <=0: #如果第一个人的血量先小于等于0,则判定为第一个人输,第二个人赢
print("{} lose!".format(self.first))
print("{} win!".format(self.second))
break
elif self.second_hp <=0: #如果第二个人的血量先小于等于0,则判定为第二个人输,第一个人赢
print("{} lose!".format(self.second))
print("{} win!".format(self.first))
break
game = Game() #实例化Game
game.fight() #调用fight方法
浙公网安备 33010602011771号