第二十九天日志和config模块:

1.我们在写文件时会产生一些数据这些数据需要一个文件进行存储,有时我们需要访问这些文件,需要知道这些文件的路径,而confing主要时我们写程序时所放路径的py文件

而configparser适用于配置文件的格式和windows ini的文件类型相似,可以包含一个或者多个节(section),每个节可以有多个参数(键=值或者时键,值)两种方式。

2.怎么用python生成一个这样的文档:

import configparser
config1=configparser.ConfigParser()
config1['二哥']={
                    'python':'niubi',
                    'dfjkfdj':'sb'    #这里面写数据类型时都要以字典的形式

}
config1['three']={
    'jfkdjfj':'fjdljfkjl',
    'fjkdjfdj1':'fdjkfdjfd'
}

with open('config.ini','w',encoding='utf-8') as f:#文件的格式是以ini
    config1.write(f)  #写入的方式
View Code

  结果为

 

 3.对进行config模块内容的读取操作:

import configparser
config1=configparser.ConfigParser()
print(config1.sections())
config1.read('config.ini',encoding='utf-8') #如果出现中文乱码可以在这里设置格式
print(config1.sections()) #读出组的内容
print(config1['二哥']['python'])#读出组里面的内容
for i in config1['二哥'] :  #用循环读出一个组里的内容
    print(i,config1['二哥'][i])
结果为
[]
['二哥', 'three']
niubi
python niubi
dfjkfdj sb
View Code

4.对config进行增删改查操作:

import configparser
config1=configparser.ConfigParser()
config1.read('config.ini',encoding='utf-8')
config1.add_section('yuan')#删除一个section
config1.remove_option('二哥','python')#删除一个配置项
config1.remove_section('three')
config1.set('yuan','fdkjfj','eee')
with open('config.ini','a',encoding='utf-8') as f:
    config1.write(f)
View Code

 5.logging模块:可以一键控制·,排错时需要打印很多细节可以帮助我们排错;严重的错误可以记录下来’有一些用户行为无论是否有错都要记录下来

6.logging的几种模式:

import logging
logging.debug('debufg message')#排错信息  /低级
logging.info('info message') #正常信息
logging.warning('warning message') #警告信息
logging.error('error message') #错误信息
logging.critical('critical message') #严重错误信息/高级
View Code

7.格式化输出的另一种方式:

print('%(key)s'%{'key':'value'}) #另一种格式化输出方式
结果为
value
View Code

8.日志中格式化输出的格式:

 

 9.使用configbasic的logging模式程序为

import logging
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s [line:%(lineno)d]%(levelname)s%(message)s',
                    datefmt='%a,%d %b %Y %H:%M:%S',
                    filename='test.log',
                    filemode='a')
try:
    num=int(input('>>>'))
except Exception:
    logging.error('你输入的有误f')
结果为
View Code

 

   从上述结果我们不难发现出现了乱码/可以使用下列方法来进行解决:(即basic简单,能做的事情少,中文会出现乱码)

10.使用配置log对象来实现的程序如下:

import logging
logger=logging.getLogger()
fh=logging.FileHandler('log.log',encoding='utf-8')
format=logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
fh.setFormatter(format) #logger 文件操作要和格式关联
logger.addHandler(fh)
try:
    num=int(input('>>>'))
except Exception:
    logging.error('你输入的有误f')
View Code

  结果为

 

 也可以以让其输出在屏幕上:

import logging
logger=logging.getLogger()
fh=logging.FileHandler('log.log',encoding='utf-8')#输出在文件里
sh=logging.StreamHandler()#进行屏幕的显示
format=logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
fh.setFormatter(format) #logger 文件操作要和格式关联
sh.setFormatter(format)
logger.addHandler(fh)
logger.addHandler(sh)
try:
    num=int(input('>>>'))
except Exception:
    logging.error('你输入的有误f')
结果为
>>>f
2020-03-02 21:20:35,031 root ERROR 你输入的有误f
View Code

11.       s='***hello,world**'请使用strip方法去掉字符串中两端的‘*’号       

s='***hello,world**'
s=s.strip('*')
print(s)
结果为2
hello,world
View Code

12,用户输入一个任意的数字n求1-n之间所有数字的奇数

range(1,n,2)
View Code

13,s=‘hskakhlkshfkskjakf’,请出去字符串s中重复的字母:

s='hskakhlkshfkskjakf'
s1=''
for i in s:
    if i not in s1:
        s1+=i
print(s1)

结果为
hskalfj
View Code

14,请看下列程序,说出打印出来的值a,b,c分别是什么?

a=10
b=20
def test(a,b):
    print(a,b)
c=test(b,a)
print(c)
结果为
20 10
None
View Code

s=‘123.33sdhf3424.34fdg323.324’,计算字符串中所有数字的和

import re
ret=re.findall('\d+\.?\d*',s)
sum=0
for i in ret:
    sum+=float(i)
print(sum)
结果为
C:\pycharm\python.exe D:/python练习程序/第二十九天/practise.py
3870.994
View Code
s='123.33sdhf3424.34fdg323.324'
import re
ret=re.findall('\d+\.?\d*',s)
sum1=0
for i in ret:
    sum1+=round(float(i),2)
print(sum1)
View Code

15d={'k1':'v1','k2':'[1,2,3]',('k','3'):{1,23,4}}请用程序实现下述功能;

1.输出上述字典中value为列表的key

2.如果字典中的key是一个元组,请输出对应的value值:

d={'k1':'v1','k2':[1,2,3],('k','3'):{1,23,4}}
for i in d:
    if type(d[i]) is list:
        print(i)
    if type(i) ==tuple :
        print(d[i])
结果为
k2
{1, 4, 23}
View Code

16.如果不适用装饰器@wrapper装饰器请在a()之前加以局话,达到相同的效果

def wrapper(func1):
    def inner(*args,**kwargs):
        func1()
    return inner
def func():
    print('hello,world')
a=wrapper(func) #这是加的语句
a()
结果为
hello,world
View Code

17.请处理文件中以T开头的所有行,并进行输出

with open('test5.txt',encoding='utf-8') as f:
    for i in f:
        if i.startswith('T'):
            print(i)
View Code

18请说出下列程序的输出结果:

def f1():  #第一步
    print('funcname1')
def f2():  #第二步
    print('funcname2') #第六步
    return 1 #第七步
def f3(func1):#第三步
    ll=func1() #右边第五步
    print('func3name') #第八步
    return ll  #第九步
print(f3(f2))  #括号里面第四步 打印是第十步
结果为
funcname2
func3name
1
View Code

19.写出能匹配手机的正则表达式:

ret=re.search('^1[345678]\d{9}')
View Code

20.有四个数字,1,2,3,4能组成多少个互不相同且无重复的数字的三位数各是多少:

count=0
for i in range(1,5):
    for m in range(1,5):
        for n in range(1,5):
            if i!=n!=m:
                count+=1
                print(str(i)+str(m)+str(n))
print(count)
View Code

21.模拟cs游戏:

人物角色分为警察和匪徒两种,定义为两个类:

所有·的警察角色都是police

每个警察都有自己独立的名字,生命值,武器和性别

每个都可以开枪攻击敌人,攻击目标不能是police

所有的警察角色都是terroist

每个匪徒都有独自名字,生命值,武器,性别

每个都可以攻击敌人,攻击目标不能是terriost

2,实例化一个警察,一个匪徒,警察攻击匪徒,匪徒掉血

3.提取警察类和匪徒类相似的地方定义成一个类

class Person:
    def __init__(self,name,blood,wuqi,sex):
        self.name=name
        self.blood =blood
        self.wuqi=wuqi
        self.sex=sex
class Wuqi:
    def __init__(self,name,njd,gjl):
        self.name=name
        self.njd=njd
        self.gjl=gjl
class Police(Person):
    def attack(self,terroist):
        terroist.blood=terroist.blood-self.wuqi.gjl
        print('歹徒还剩下%s血量,掉了%s血量'%(terroist.blood,self.wuqi.gjl))
class Terroist(Person):
    def attack(self,person,wuqi):
        person.blood=person.blood-self.wuqi.gjl
        print('歹徒掉了%s血量'%terroist.blood)
wuqi_police=Wuqi('',10,3)
wuqi_terriost=Wuqi('',14,2)
police=Police('alex',100,wuqi_police,'')
terrist=Terroist('二哥',100,wuqi_terriost,'nan')
police.attack(terrist)
View Code

 

 

                        

`  

posted @ 2020-03-02 17:22  chown  阅读(264)  评论(0编辑  收藏  举报