Python自动化课之Day3篇
Part 1, 对于上节课的补充
1. 数据类型--None类型:(字符串是不可变变量,不可变变量就是指定义之后不能修改它的值)
None是空,代表什么都没有,但是它不是空字符串.
而'',是一个字符串对象,代表一个空的字符串。
count+=1和count = count +1是一样
count-=1
count*=1
count/=1
2.if 条件判断的
or and
in 在不在它里面
例:
names='lj,zhx,zhwq,zhwx'print('lj' in names)输出:True
is 判断的是内存地址一样不一样
例:
name1='lj'name2='lj'print(name1 is name2)输出:True #print(id(变量))可看内存地址
not 取反
例:
names='lj,zhx,zhwq,zhwx'print('lj' not in names)输出: False
Part 2, Python数据类型
一,字符串和字符串操作
1,字符串是可以通过下标(索引)来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值
username = 'li'
username[0]
例:
names='lj,zhx,zhwq,zhwx'print(names[0:6])输出:lj,zhx
python里面的for循环,每次循环的时候,循环的是循环对象里面的每一个元素例:
names='lj,zhx,zhwq,zhwx'for name in names: print(name) 等于:(python里不要这么写)
names='lj,zhx,zhwq,zhwx'for i in range(len(names)): #len(names)#取变量的长度 print(names[i])
二,列表
!/usr/bin/python #python里面有个这个话,代表在linux下运行的时候去哪个目录下找python的解释器,在windows上运行不用写
coding:utf-8和 __*__ coding:utf-8 __*__ 这两种都在python2里面为了防止中文报错,修改字符集用的,python3里面不用写
列表也叫数组,列表定义,使用[]即可;列表里面可以再套列表,一个里面套一个列表,叫二维数组;一个里面套一个列表,里面的列表再套一个列表,这个叫三维数组,套几层就是几维
定义列表: names=[1,2,3,'LJ',"ZHX"]
通过下标取值:print(names[3]) -->输出:LJ
列表是可变变量,它是可以通下标修改值的
修改值:names[0]='zhwq' (print(names) 输出:['zhwq',2,3,'LJ',''ZHX''])
对列表的操作,分以下几种增、删、改、查
增:
给list从最末尾添加值: names.append('ZHWX') (print(names) 输出:['zhwq',2,3,'LJ',''ZHX'','ZHWX'])
指定位置添加元素: names.insert(0,'libby') (print(names) 输出:['libby','zhwq',2,3,'LJ',''ZHX'','ZHWX'])
删:
names.pop() 默认删除最后一个元素,删谁也把它的值返回了 (print(names) 输出:['libby','zhwq',2,3,'LJ',''ZHX''])
names.pop(2) 删除指定位置的元素 (print(names) 输出:['libby','zhwq',3,'LJ',''ZHX'','ZHWX'])
或使用del关键字删除指定元素 :del names[2]
清空列表:
names.clear()
删除指定的元素: 要和pop方法区别开来,pop如果删除的话,传是下标
names.remove('libby')
查找值在list里面的次数:print(names.count('LJ')) -->输出:1
用in来判断一个元素是否在list里面:print('LJ' in names) -->看输出True/ False
查:
下标是-1的话,代表最后一个元素 :print(names[-1])
一些内置方法:
names=['libby',1,2,3,'LJ',"ZHX",'zhwx']
print(name.index('LJ')) #返回查找元素的下标,如果有多个话返回第一个的,如果没有的话就会报错
print(name.index('LJ',2,5)) #后面可以加上查找开始位置和结束位置
两个列表相加:
stu=['peggy','LYX','wm']
print(stu+names) 输出:['peggy', 'LYX', 'wm', 'libby', 1, 2, 3, 'LJ', 'ZHX', 'zhwx']
把另一个列表里面的每个值挨个添加到前面的列表中:
stu.extend(names)
print(stu) 输出:['peggy', 'LYX', 'wm', 'libby', 1, 2, 3, 'LJ', 'ZHX', 'zhwx']
排序:
nums=[23,34,1,2,345,7,9,343555]
nums.sort() #默认是升序
print(nums)
输出:[1, 2, 7, 9, 23, 34, 345, 343555]
nums.sort(reverse=True) #指定reverse=True就是降序
print(nums)
输出:[343555, 345, 34, 23, 9, 7, 2, 1]
nums.reverse() #反转数组,会改变原数组的值
print(nums)
输出:[343555, 9, 7, 345, 2, 1, 34, 23]
多维数组(列表,list):
lis=[1,'lily',19.8,['lily','lilei',['heheh','haha']]]
print(lis[3][2][1])
输出:haha
三,字符串方法
所有字符串的方法,它都不会修改原来字符串的值,都会产生一个新的字符串
name='hello world'
print(name.capitalize()) 输出:Hello world #首字母大写
print(name.center(100,'*')) 输出:********************************************hello world********************************************* #100个*,把name放中间
print(name.endswith('d')) 输出:True #判断字符串是否以“d”结尾
print(name.find('world')) 输出:6 #查找字符串的索引,找到的话返回第一次出现的索引,找不到返回-1
print(name.format(name='niuniu', age=18)) #格式化字符串
print(name.format_map({'name':'niuniu','age':19})) #这个也是格式化字符串,后面跟的是一个字典
print('abA123'.isalnum()) 输出:True #判断字符串是否包含数字和字母
print('abA'.isalpha()) 输出:True #判断字符串是否是英文字母
print('122'.isdigit()) 输出:True #判断字符串是否是数字
print('aa'.isidentifier()) 输出:True #判断是否是一个合法的变量名
print('aa'.islower()) 输出:True #判断是否是小写字母
print('AA'.isupper()) 输出:True #判断是否是大写字母
print(name.upper()) 输出:HELLO WORLD #变成大写
print(name.lower()) 输出:hello world #变成小写
names=['LJ','ZHX','sffffff']
print('+'.join(names)) 输出:LJ+ZHX+sffffff
或
strname='ABCDEF'
print('&'.join(strname)) 输出:A&B&C&D&E&F #join是用来通过某个字符串拼接一个可迭代对象的的每个元素的
print('\nmysql \n'.lstrip()) #默认去掉左边的空格和换行
print('\nmysql \n'.rstrip()) #默认去掉右边的空格和换行
print('\nmysql \n'.strip()) #默认去掉两边边的空格和换行
print('mysqlm '.strip('m')) 输出:ysql #当你传入某个字符串的话,它就只会去掉你指定的字符串
p = str.maketrans('abcdefg','1234567') #前面的字符串和后面的字符串做映射
print('cc ae gg'.translate(p)) #输出按照上面maketrans做映射后的字符串
#下面是反解
new_p = str.maketrans('1234567','abcdefg')
print('cc ae gg'.translate(new_p))
str='mysql is db...mysql mysql mysql'
print(str.replace('mysql','oracle',1)) 输出:oracle is db...mysql mysql mysql # 替换字符串
print('mysql is is db'.rfind('is')) 输出:9 #返回最右边字符的下标
name1='LJ,ZHX,sffffff'
print(name1.split(',')) 输出:['LJ', 'ZHX', 'sffffff']
#切割字符串,返回一个list,按照你指定的字符串去分隔这个字符串,然后放到一个list里面
如果你什么都不写的话,按照空格分割,多个空格也算一个
print('1+2+3\n1+2+3+4'.splitlines()) #按照换行符分割
print('Abcdef'.swapcase()) #大小写反转
import string
print(string.ascii_letters+string.digits) 输出:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 #所有的大小写字母加数字
print(string.ascii_lowercase) #所有的小写字母
print(string.ascii_uppercase) #所有的大写字母
print(string.digits) #所有的数字
四,切片
切片,切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值,格式是name:[1:10],比如说要获取name的第一个元素到第五个元素,就可以用name[0:6],切片是不包含后面那个元素的值的,记住顾头不顾尾;前面的下标如果是0的话,可以省略不写,这样写,name[:6],切片后面还有可以写一个参数,叫做步长,也就是隔多少个元素,取一次,默认可以不写,也就是隔一个取一次,切片操作也可以对字符串使用,和列表的用法一样。
names = ['zcl','py','zyz'] #切片的意思就是从list里面或者字符串里面取几个元素
print(names[0:2]) 输出:['zcl', 'py'] #从第几个取到第几个,这个也是顾头不顾尾
print(names[:2]) #如果是从第一个开始取,取到某一个下标结束,那么最前面是可以不写的
print(names[1:]) #如果是从前面某个开始取,取到最后面结束,那么最后面是可以不写的
print(names[:]) #如果最前面和最后面都不写的话,取整个列表
切片操作对字符串也是完全适用的
name1='zcl,pyzyz'
print(name1[1:5]) 输出:cl,p
nums=list(range(1,21))
print(nums[0:10:2]) #如果最后面写上步长的话,就是每隔几个取一次
print(nums[::-1]) #当切片的步长为负数时,是从末尾开始取值的,然后隔几个取一次
#如果步长为-1的时候,还有反转的功能 (和nums.reverse() 效果一样)
五,元组
元组其实和列表一样,不一样的是,元组的值不能改变,一旦创建,就不能再改变了,比如说,要存数据库的连接信息,这个连接信息在程序运行中是不能被改变的,如果变了那数据库连不上了,就程序就完犊子了,这样的就可以使用元组了,元组呢,也提示别人,看到是元组的话,就说明这个值是不能被改变的
元组的定义方式是用(),小括号,定义元组的时候,如果元组只有一个元素,那么你要在这个元素后面加一个逗号,要不然就是一个字符串。
元组只有两个方法,那就是count和index
例:
tp=(1,2,3,4,5,6,1,1,1)
print(tp[0]) 输出:1
print(tp.count(1)) 输出:4
print(tp.index(1)) 输出:0
lis=['1','2323']
new_lis=tuple(lis) (强制类型转换)
print(type(new_lis)) 输出: <class 'tuple'>
已学强制类型转换:
#int()
#float()
#str()
#list()
#tuple()
六,字典
字典也是我们开发过程中最常用的一种数据类型,字典dict,全称是dictionary,它具有极快的查找速度;字典是一种key-value的数据类型,比如说要存每个人的信息,那么每个人的编号就是key,value就是每个人的信息,这样的话,一个字典就能存所有人的信息了。字典的定义使用{},大括号,每个值用“,”隔开,key和value使用“:”分隔。字典里的Key是不能重复的。
例:
info={'name':'xiaoming',
'sex':'nan',
'age':20,
'id':1}
取值: print(info['name']) 输出:xiaoming
print(info['id']) 输出:1
print(info.get('id')) 输出:1
print(info['addr']) 报错
print(info.get('addr')) 输出:None
#用中括号取值和get方法取值的区别,get方法获取不到Key的时候不会报错,中括号取值找不到Key会报错
print(info.get('addr','beijing')) 输出:beijing
#get方法还可以多传一个参数,如果get不到key的话,那么返回**,如果不写的话,默认get不到返回None.
增加:
info['addr']='beijing' #给字典新增一个值
print(info)
输出:{'addr': 'beijing', 'sex': 'nan', 'age': 20, 'id': 1, 'name': 'xiaoming'}
info.setdefault('phone',13811111) #给字典新增一个值
print(info)
输出:{'phone': 13811111, 'sex': 'nan', 'name': 'xiaoming', 'id': 1, 'age': 20}
修改:
info['id']=7 #在有这个key的情况下,就是修改这个Key的value,没有这个Key的话,就是新增。
print(info)
输出:{'id': 7, 'age': 20, 'name': 'xiaoming', 'sex': 'nan'}
删除:
del info['id']
print(info)
输出:{'sex': 'nan', 'name': 'xiaoming', 'age': 20}
或者
info.pop('id') #字典是无序的,pop删除的时候必须指定key,pop方法会返回删除的key对应的value
print(info)
输出:{'sex': 'nan', 'name': 'xiaoming', 'age': 20
info.clear() #清空字典
info.popitem() #随机删除一个元素
字典的一些内置方法:
all={'car':{'color':['red','yellow','black'], 'money':111111, 'pailiang':'2.5L', 'name':'BMW' }, 'car1':{'color':['red','yellow','black'], 'money':111111, 'pailiang':'2.5L', 'name':'China' }, 'car2':{'color':['red','yellow','black'], 'money':111111, 'pailiang':'2.5L' } }
取car里yellow的值:
print(all.get('car').get('color')[1])
修改car里yellow的值为orange:
all.get('car').get('color')[1]='orange'
print(all)
print(all.keys()) 输出:dict_keys(['car2', 'car', 'car1']) #获取该字典的所有Key
print(all.values()) #获取该字典所有的value
print(all.items()) #获取字典的key和value,循环的时候用
直接循环字典循环的是字典的key,如果想循环的时候同时获取到key和value,那么就要用.item方法。items方法的作用就是为了让你循环的时候同时把key和value取到。输出的是列表,效率比较低。
for k in all:
print(k,all[k]) #这种方法取值效率比较高
info.update(all) #把两个字典合并到一起,如果有一样的key,那么更新value.
print(info)
info.has_key('name') #python2里有这个方法,来判断key是否存在,python3里没有
print('name' in info) #python3里面直接用in来判断key是否存在
,
七,文件读写
文件打开模式有三种
1,w写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写。
w+写读模式,只要沾上w,肯定会清空原来的文件
2,r读模式,只能读,不能写,而且文件必须存在
r+读写模式,只要沾上r,文件必须存在
3,a追加模式,也是只能写不能读,在文件的末尾添加内容
4,rb+,wb+,ab+,这种是二进制模式打开或读取,一些音乐文件,图片等。
fw=file('a.txt','r')
#在python2里面可以用file这个函数去操作文件,但是在python3里面只能用open
f=open('a.txt','r',encoding='utf-8')
print(f.read()) #读文件内容,返回的是一个字符串
print(f.readlines()) #读文件内容,返回的是一个列表
print(f.readline()) #只读文件一行的内容
f.write('lj') #写文件的时候,只能是字符串
f.writelines(['123','456','789']) #可以把列表写到文件里面
f=open('a.txt')
#如果在打开文件的时候,不指定模式,那就是读模式
f=open('a.txt','a+') #f代表的是这个文件的对象,也叫句柄
f.seek(0) #移动文件指针
#文件对象也是可迭代的
print(f.read())
for line in f:
print(line) #直接循环文件对象的话,循环的是文件每一行的内容
修改文件:
修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;第二种是把修改后的文件内容写到一个新的文件中
第一种:
f=open('a.txt1','a+',encoding='utf-8')f.seek(0)res=f.read()f.seek(0)f.truncate() #清空文件内容new_res=res.replace('nihao','nibuhao')f.write(new_res)
第二种:
import osf=open('a.txt','a+',encoding='utf-8')f.seek(0)fw=open('a.txt.new','w',encoding='utf-8')for line in f: new_res=line.replace('学','不学') fw.write(new_res)f.close() #关闭文件fw.close()os.remove('a.txt')os.rename('a.txt.new','a.txt') Flush用法:
import timefw=open('python.txt','w',encoding='utf-8')fw.write('更新博客')fw.flush() #写完之后立马生效time.sleep(30)fw.close()
With用法:文件不再用的时候,就会自动关闭该文件
with open('python.txt',encoding='utf-8') as fr: print(fr.read())
转载于:https://www.cnblogs.com/feifeijiduqiuxin/p/6924961.html
Python自动化课之Day3篇相关推荐
- Python自动化课之Day2篇
第二部分:Python简介和入门 一.什么是python? python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学. 由荷兰人Guido van Rossum于1989年发 ...
- python自动化办公:文件篇(自动整理文件,一键完成)
文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 用到的库os Python os.path() 模块 详解 附算例 os.walk()用法 ...
- python自动化办公:邮件篇 (定时邮件问候女票so easy)
前言和准备工作 如果你能找到一个要看邮件的女票哈,本文能帮你用程序实现在每天不同时间段给女友定时给女友发消息,不错过早上,中午.晚安! 而你自己却可以玩游戏,不管这回事. 你告诉我看邮件的女生少,别着 ...
- python自动化办公:word篇。职场高手不是梦。
工具包安装 使用的库:docx python 没有自带.需要安装. 若运行出现:ModuleNotFoundError: No module named 'exceptions' 则说明安装失败,需要 ...
- python自动化办公:excel篇,从此做表不加班。
表格讲解 表格格式 表格分为:工作簿,工作表,单元格 如图:整个文件就是一个工作簿,下面的 zhengjiang_power 和sheet1为工作表. xlrd +xlwt读写表格 因为电脑右键新建的 ...
- python自动化办公脚本下载-python自动化办公:文件篇(自动整理文件,一键完成)...
import os list_all=[]#初始化一个空列表 for root ,dirs,files in os.walk(r'C:UsersShineionDesktop新建文件夹'): for ...
- Python自动化开发之基础篇--Day1
一.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...
- python自动化办公案例-python自动化办公:文件篇(自动整理文件,一键完成)
import os list_all=[]#初始化一个空列表 for root ,dirs,files in os.walk(r'C:UsersShineionDesktop新建文件夹'): for ...
- python excel 自动化-python自动化测试报告(excel篇)
转:https://www.jianshu.com/p/6c5d328bf390 # -*- coding: utf-8 -*- import xlsxwriter def get_format(wd ...
- python自动化教程_Python自动化开发实战视频课程-全新基础篇_Python教程
教程名称:Python自动化开发实战视频课程-全新基础篇 课程目录: 0001.51CTO学院-01Pythons10 day1 开课前言- _* N, R+ w/ T 0001.51CTO学院-01 ...
最新文章
- 使用php+phantomjs构建一只简单爬虫的开发思路
- iOS 9应用开发教程之ios9的视图
- vue cli3.3 以上版本配置vue.config.js 及反向代理操作解决跨域操作
- 16个在线机器学习视频与教程
- OpenCV中的数据结构
- Windows x64内核学习笔记(三)—— SMEP SMAP
- 【Python进阶】实战Python面向对象基本编程
- php中的意外type字符串,关于php:解析错误:语法错误,意外’文本’(T_STRING),期待’,’或’;’...
- MyEclipse或者Eclipse的小图标含义详解
- html dom透明度,HTML DOM Style overflow 属性
- 考研c 语言程序设计题库,温州大学c语言程序设计考研复试核心题库(23页)-原创力文档...
- 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
- 【源码好又多】开源在线教育系统
- Matlab计算机视觉/图像处理工具箱推荐
- 今日头条java后端四面_今日头条笔试第二批后端开发第一题java实现
- linux创建虚拟目录意义,配置虚拟主机和虚拟目录
- 设置mysql数据库为只读
- 华硕电脑锁定计算机,华硕笔记本电脑的BIOS怎么设置
- 活非光合细胞中ROS的主要从哪里细胞来源?
- Gateway服务网关使用教程
热门文章
- Salesforce Ventures为云初创公司Vlocity注资5000万美元
- AR技术介绍(Located in Android)
- server2008R2WSUS管理之 计算机管理
- db2 license过期
- Dokcer学习笔记之Dokcerfile 文件构建
- JPA唯一索引更新删除的问题
- javascript基础知识(6) 对象
- 又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!...
- 用exp无法导出空表解决方法/用exp导出数据时表丢失原因
- Java内部类(转)