python外部数据源文件处理

1.熟练掌握 面对对象的思想
  class ,def
 
class C:
    cc = 10
print('类的静态属性',C.cc)
a = C()
b =C()
print('实例对象a',a.cc)
print('实例对象b',b.cc)
a.cc = 50
print('222实例对象a',a.cc)
print('222实例对象b',b.cc)
C.cc = 100
print('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 =90
print('第2次打印实例对象属性',x.__dict__)
 #使用__dict__查看对象属性
2.
YAML 是一个可读性高,用来表达数据序列化的格式,常常作为配置文件使用
JSON 是一个轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或序列值的 值组成的数据对象
 
json的使用:
json 官方文档:
 
 
import json
class 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库:
https://openpyxl.readthedocs.io/en/stable/ 5
 
 
 简单解决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方法
 
posted on 2020-05-12 16:43  nancy_kou  阅读(323)  评论(0)    收藏  举报