转眼学完四天了,来看看这次学了点啥:

NO1  很重要的函数

#函数就是一个功能,一个方法,简化代码#函数必须得调用才会执行#在函数里面的变量全都是局部变量,它只能在函数里面用,函数执行结束那么没有这个变量
#不带参数
def say():                    #函数名print('哈哈哈')            #函数体say()      #函数调用 

#带一个参数1 def say(name):     #形参
2       print('%s说:哈哈哈哈!'%name)
3
4 say('周继蓉')      #实参

#带多个参数def say(name,sex)print('%s 哈哈  性别%s '%(name,sex))x='zhoujirong'
say(x,‘女’)

 #默认值参数 1 def say(name,sex='男'):
 2          # 必填参数,未知   #默认值参数,非必填
 3      print('%s 哈哈哈  性别%s'%(name,sex))
 4 x='zjr'
 5 say(x)
 6 say(x,'女')
 7
 8 #结果:
 9 # zjr 哈哈哈 性别男
10 # zjr 哈哈哈 性别女

#返回值#如果需要用到函数的处理结果的话需要写return,不需要就不需要写#函数里面如果碰到return,函数立即结束
1 def calc(a,b):
2     res = a*b
3     return res
4 cur_money = 8000
5 nx=calc(1000,13)
6 print(nx+cur_money)

 1 def my():
 2     for i in range(100):
 3         print(i)
 4         if i==2:
 5             return
 6 print(my())
 7 #结果
 8 #0
 9 #1
10 #2
11 #none

 1 #1.写一个校验输入的字符串是否是小数的程序
 2 # 0.12  -0.13
 3 #1.只有一个小数点,count
 4 #2.正小数的情况,小数点左边和右边都是整数的话,才合法 0.12  [0,12]
 5 #3.负小数的情况下,小数点右边是整数,左边必须以负号开头,只有一个负号
 6 # -5.4
 7 #[-5,4]
 8 #[1:] 从第二位开始到最后都是整数
 9
10 def check_float(s):
11      s = str(s)#转成字符串
12      if s.count('.')==1:
13          s_list=s.split('.')
14          left=s_list[0]#小数点左边
15          right=s_list[1]#小数点右边
16          if left.isdigit() and right.isdigit():
17              return True
18          if left.startswith('-') and left.count('-')==1:
19              if left[1:].isdigit() and right.isdigit():
20                  return True
21
22      return False
23
24 print(check_float(-5.2))
25 print(check_float(-.6))
26 print(check_float('--.6'))
27 print(check_float('-dd.6'))

1 def my_file(name,content=None):
2     with open(name,'a+') as f:
3         f.seek(0)
4         if content:
5             f.write(content)
6         else:
7             return f.read()

NO2 json模块使用

 1 # json是一个字符串,只不过是长得像字典
 2 # json只能用双引号 3 import json
 4
 5 user_info = '''
 6
 7     {"nhy":"123456","zjr":"111111"}
 8
 9 '''
10 user_dic=json.loads(user_info)#把json(字符串)装换成字典
11 print(user_dic)
12 print('user_dic',type(user_dic))
13 print('user_info',type(user_info))#结果:#{‘nhy’:'123456','zjr':'111111'}#user_dic<class'dict'>

#user_info<class'str'>

将字典转换成json串

1 stu_info = {'laowang':{'cars':['bmw','Ben-z']}}
2 stu_str = json.dumps(stu_info)#把字典转成json(字符串)
3 print('json',type(stu_str))
4 print(stu_str)

结果:

#dump 将字典直接成json写进文件1 stu_info = {'laowang':{'cars':['bmw','Ben-z']}}
2 fw=open('users.json','w',encoding='utf-8')
3 json.dump(stu_info,fw,indent=4)#不需要咱们自己再write,人家会自动写入文件,indent加缩进,4 就够用
4
5 # load 和loads 不带s直接读文件,带s读字符串,同dumps和dump

结果:

1 f=open('users.json')
2 res=json.load(f) #将json文件读成字典
3 print(res)

结果:

用json写注册程序:

 1 import json
 2 f = open('users','a+',encoding='utf-8')  #文件句柄,文件对象
 3 f.seek(0)
 4 all_users = json.load(f) #把json(字符串)转换成字典
 5 for i in range(3):
 6     u = input('user:').strip()
 7     p = input('p:').strip()
 8     cp = input('cp:').strip()
 9     if not u or not p:
10         print('账号、密码不能为空')
11     elif u in all_users:
12         print('该用户已经被注册!')
13     elif u not in all_users and cp==p:
14         all_users[u]=p
15         break
16 f.seek(0)
17 f.truncate()#清空原来的内容
18 json.dump(all_users,f,indent=4) #字典转json
19 f.close()

NO3  高效读取文件

速度顺序: CPU>内存>磁盘

存用户名、密码进文件,写登录和注册

 1 all_users = {}
 2 f = open('users.txt','a+',encoding='utf-8') #文件句柄,文件对象
 3 f.seek(0)
 4 for line in f: #直接循环文件对象,每次循环的时候就是取的每一行数据
 5 line = line.strip()
 6 line_list = line.split(',') # [nhy,123456]
 7 username = line_list[0]
 8 passwd = line_list[1]
 9 all_users[username] = passwd
10 u = input('user:').strip()
11 p = input('p:').strip()
12 cp = input('cp:').strip()
13 for i in range(3):
14 if not u or not p:
15 print('账号、密码不能为空')
16 elif u not in all_users:
17 print('用户不存在!')
18 elif p!=all_users.get(u):
19 print('密码错误!')
20 else:
21 print('登录成功')
22 break
23
24 for i in range(3):
25 if not u or not p:
26 print('账号、密码不能为空')
27 elif u in all_users:
28 print('该用户已经被注册!')
29 elif u not in all_users and cp==p:
30 info = '%s,%s\n'%(u,p)
31 f.write(info)
32 break
33 f.close()

缓存区:内存和磁盘中间存数据的地方,缓存区存满会写入磁盘

fw = open('zjr','w')
fw.write('dddd','w')
fw.flush()#把缓冲区里面的数据立即写到磁盘上
fw.close()

with写打开文件,会自己关闭文件

1 with open('zjr','w') as fw,open('tzy','w') as fw2:  #打开多个文件,用逗号隔开
2     fw.read()
3     fw.write()

NO4 文件修改

方法一:

 1 #文件修改
 2 方法1#1.简单粗暴直接  文件小可以,文件大会崩溃
 3   1.先获取到文件里的所有内容
 4    2.然后修改内容
 5    3.清空原来文件里面的内容
 6    4.重新写入
 7
 8 f = open('test','a+')
 9 f.seek(0)
10 all_data=f.read()
11 new_data=all_data.replace('123','python')
12 f.seek(0)
13 f.truncate()#清空文件内容
14 f.write(new_data)
15 f.flush()
16 f.close()

方法二:

 1 #方法2 高效的处理文件方式
 2  #      words            words_new
 3     #1.先打开原来的文件,再打开一个空文件
 4     #2.循环处理原来文件里面的每一行数据,处理完之后,写到新文件里面
 5     #3.把原来的文件删掉,把新的文件的名字改为原来文件的名字
 6 import os #引入os模块删除
 7 with open('words',encoding='utf-8') as fr,open('.words','w',encoding='utf-8') as fw:
 8     for line in fr:
 9         line=line.lstrip()#去左边空格
10         if line:#判断这一行是否有数据 非空即真,真就处理,假就不处理,继续循环
11             line = line.replace('你','you')#替换数据
12             fw.write(line)#写到新文件里面
13 os.remove('words')#删除原来文件
14 os.rename('.words','words')#把新文件的名字改成原来文件的名字

练习修改文件

 #邮箱 1 import os #引入os模块删除
 2 import string
 3 with open('eamil.txt',encoding='utf-8') as fr,open('.words','w',encoding='utf-8') as fw:
 4     for line in fr:
 5         if  not line[0] in string.digits:
 6             line=line.rstrip()
 7             line = line+'@163.com\n'#替换数据
 8             fw.write(line)#写到新文件里面
 9 os.remove('eamil.txt')#删除原来文件
10 os.rename('.words','eamil.txt')#把新文件的名字改成原来文件的名字

监控日志

 1 #1.监控日志
 2 #  1.如果一分钟之内某个ip访问超过100次
 3 #  2.就把ip找出来
 4
 5
 6 #集合  天生去重
 7 #1.打开日志文件
 8 #2.获取每行数据
 9 #3.split,取第一个元素
10 #4.找出所有ip,统计次数
11 #5. 判断每个ip次数大于100,就发邮件
12 #6. 记录文件指针,给下一次读的时候用
13 #7. 等待60a,重新读取文件
14
15 import time
16 point = 0 #存放的是文件初始的位置
17 while True:
18     with open('access.log',encoding='utf-8') as f:
19         f.seek(point)
20         ip_info={}#定义字典存放ip和它出现的次数
21         for line in f:
22             ip=line.split()[0]#列表按空格切分,第一个就是ip
23             if ip in ip_info:
24                 ip_info[ip]+=1
25             else:
26                 ip_info[ip]=1
27         point = f.tell()#获取当前文件指针的位置
28         for k in ip_info:
29             if ip_info.get(k)>=100:
30                 print('该ip正在攻击你:%s'%k)
31     time.sleep(60)#等待60s再统计

NO5 集合

 1.天生去重,循环 2.关系测试 - 交集、差集、并集、反向差集、对称差集

集合:天生去重

1 nums = [1,1,1,2,3,4,4]
2 nums_set = set(nums)
3 nums2 = {1,2,3,4,1,1,1}
4 print(nums2)
5
6 null_set=set()#空集合定义

 1 #转集合
 2 list = [1,2,3,4,5,6]
 3 list_2 = [2,5,4,7]
 4 list=set(list)
 5 list_2=set(list_2)
 6 print(list.intersection(list_2))#交集 取出重复数据
 7 print(list.union(list_2))#并集 去重 统一展示
 8 print(list.difference(list_2))#差集 list中有,list_2没有
 9
10 list_3 = set([1,3,6])
11 print(list_3.issubset(list))#子集
12 print(list.issuperset(list_3))#父集
13 print(list.symmetric_difference(list_2))#对称差集,并集-交集
14
15 # & 交集  |并集  - 差集  ^对称差集
16 print(list & list_2)
17 print(list | list_2)
18 print(list - list_2)
19 print(list ^ list_2)
20
21 #集合操作
22 #添加
23 list.add(555)#一次只能添加一个
24 list.update(666,777)#同时添加多个
25 #删除
26 # list.remove(5)#指定删除,删除一个不存在的会报错
27 list.pop()#随机删除
28 list.discard(666)#删除一个不存在的不会报错

集合练习-密码

 1 pwd = input('请输入你的密码:').strip()
 2 pwd = set(pwd)
 3 #大写字母、小写字母、数字、特殊字符
 4 import string
 5 nums=set(string.digits)
 6 ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
 7 lower=set(ascii_lowercase)
 8 ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 9 upper =set(ascii_uppercase)
10 punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
11 zifu=set(punctuation)
12 if pwd & nums & lower & upper & zifu:
13     print('合法!')
14 else:
15     print('大写字母、小写字母、数字、特殊字符都要有!')

转载于:https://www.cnblogs.com/Mezhou/p/9206179.html

跟牛牛老师学python自动化的第四天相关推荐

  1. 跟李宁老师学Python视频教程(1):初识Python-李宁-专题视频课程

    跟李宁老师学Python视频教程(1):初识Python-1142人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手可热 ...

  2. 跟着王进老师学Python:通过案例学条件选择-王进-专题视频课程

    跟着王进老师学Python:通过案例学条件选择-55人已学习 课程介绍         未来2年,拥有这种技能的人抢手 2017年是人工智能(AI)的元年,AI已经成为当前火热的前沿技术:而Pytho ...

  3. 跟着王进老师学Python:初识Python-王进-专题视频课程

    跟着王进老师学Python:初识Python-165人已学习 课程介绍         2017年是人工智能(AI)的元年,AI已经成为当前火热的前沿技术:而Python也在去年正式被纳入高考,要加强 ...

  4. 跟李宁老师学Python视频课程(14):Python数据存储-李宁-专题视频课程

    跟李宁老师学Python视频课程(14):Python数据存储-109人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手 ...

  5. 跟李宁老师学Python视频课程(12):Python常用模块-李宁-专题视频课程

    跟李宁老师学Python视频课程(12):Python常用模块-143人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手 ...

  6. 跟李宁老师学Python视频课程(19):Python GUI库:PyQt5-李宁-专题视频课程

    跟李宁老师学Python视频课程(19):Python GUI库:PyQt5-639人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Pyth ...

  7. 跟李宁老师学Python视频课程(13):Python文件和流-李宁-专题视频课程

    跟李宁老师学Python视频课程(13):Python文件和流-99人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手可 ...

  8. 跟李宁老师学Python视频课程(15):Python TCP与UDP编程-李宁-专题视频课程

    跟李宁老师学Python视频课程(15):Python TCP与UDP编程-122人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Pytho ...

  9. 跟李宁老师学Python视频课程(20):Python 测试-李宁-专题视频课程

    跟李宁老师学Python视频课程(20):Python 测试-219人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手可 ...

最新文章

  1. 看来Kubernetes将一统天下?Docker也无法幸免
  2. python获取天气信息写入原有的excel文档
  3. 网络:浏览器静态资源缓存机制
  4. python创建sqlite3数据库_Python之Sqlite3数据库基本操作
  5. linux双机ssh互信方法总结
  6. pwm控制舵机转动角度程序_Mixly 第15课 舵机的使用
  7. Simulink之变压器漏抗对整流电路的影响
  8. centos 6.5 yum
  9. PHP Notice: undefined index xxx
  10. 后台job批量停用和开启
  11. 偶遇的webshell,那得冲一波
  12. 通信原理 简易蒙特卡洛仿真法仿真无码间干扰基带系统误码率的matlab实现
  13. Photoshop插件-证件照-3寸裁剪-3寸排版-脚本开发-PS插件
  14. idea实现打包springboot项目并且运行在cmd中
  15. 【论文阅读】Zero-Resource Knowledge-Grounded Dialogue Generation
  16. 设计原则与设计模式定义
  17. win10有一个隐藏的超级管理员帐户,拥有全部权限,如何启用它
  18. 关闭小米系统自动更新通知
  19. 微信小程序 获取当前日期时间
  20. SQL Server数据库-存储过程(第一讲)

热门文章

  1. 库函数、系统调用和内核函数的区别
  2. jquery mobile自定义图标实现方法
  3. 为eclipse在线安装svn
  4. 开发板的I/O在哪里——韦东山嵌入式Linux视频学习笔记01
  5. Ubuntu系统rm命令删除文件没有提示,怎么办?
  6. 程序的加载和执行(四)——《x86汇编语言:从实模式到保护模式》读书笔记24
  7. Linux 网络诊断命令
  8. 线程间通信及虚假唤醒
  9. 为什么Map桶中个数超过8才转为红黑树
  10. Java小结(五)——进制转换