第一章 pyhton基础
一 、pyhton2与python3的区别
在pyhton2中,其中编码默认使用的是ascii编码,输出格式为print"xxx",输入为raw_input(“请输入”),在整型中有int和long两种,计算除法的时候只能保留整数,还有range生成列表和xrange生成迭代器两种,在创建模块的包时需要在包中创建一个__init__.py文件,字符串在电脑中的编码分为Unicode和str,深度优先。
在python3中,其中编码默认使用的是utf-8编码,输出格式为print("xxx"),输入为input("请输入"),在整型中只有int型,除法会保留全部结果,并且只有一种range生成的为迭代器,在电脑里编码为str和byte,在创建模块的包时可以只用,广度优先。
二、数据类型
1. int整型
整数称为整型,并且可以利用int()将可以变为整型的其他类型变为整型。
2.str 字符串不可变类型
2.1 表示方法
可以用单引号''双引号""表示
‘’和""表示空字符串
2.2 字符串方法
变大写:字符串.upper()
变小写:字符串.lower()
将字符串居中两边用*代替每边有6个:字符串.center(6,'*')
判断是否可转换成数字:字符串.isdecimal()
去除空格、换行符(\n)、Tab(\t):字符串.strip()
把字符串的z替换成x:字符串.replace('z','x')
把字符串根据x切割成列表(其中不包含x):字符串.spilt('x')
判断是否已x开头或者结尾(返回布尔值):字符串.startswith/endwith(x)
字符串格式化:%s为字符串、%d为数字 例:'%s在教室‘(name,)
循环每个元素并在每个元素之间加入指定的连接符:连接符.join(字符串)
3 bool 布尔值
布尔值只有True和False两种
对于bool类型来说:整数0为Flase,其余为True
字符串空‘’为Flase,其余为True
列表[]为Flase,其余为True
元组空()为False,其余为True。
4 list 列表
4.1 概念和表示方法
当想要表示多个事物的时候可以用列表,用[]表示,每个元素用逗号隔开
4.2 列表的方法
在列表后追加元素:列表.append(元素)
在指定索引位置进行插入元素:列表.insert(1,'xxx')
删除从左到右的第一个匹配元素:列表.remove('xxx')
删除匹配到的索引位置的元素(默认删除最后一个):列表.pop(2)
清空列表:列表.clear()
在原有的列表中加入另外一个列表:列表1.extend(列表2)
列表的排序从小到大:列表.sort(reverse=False)
列表的排序从大到小:列表.sort(reverse=True)
4.3 强制转换
字符串强制转换成列表:v1 = list("dskjfd")
元祖强制转换成列表:v2 = list((11,22,33,44))
4.4 嵌套
列表中可以互相嵌套:[1,[11,22],2]
5 tuple元组
5.1 元组的书写规范和概念
书写规范:user=(11,22,33,'如果')
元组没有方法,且元组中的数据不可改变
5.2 嵌套
元组嵌套元组:(11,22,(1,2)) #数据不可改
元组嵌套列表:(11,22,[1,2]) #列表中的数据可以改,但是不能改元组的元素包括列表
列表嵌套元组:[1,2,(11,22)] #列表中的数据可以改包括元组,但是不能改元组的元素
5.3 强制转换
列表转成元组:v1 = tuple([1,2,3])
6 dict 字典
6.1 字典的书写规范
dict = {'键':'值','键’,‘值’},冒号前后称为一个键值对
例:dict1 = {'name':'如果','age':'20'}
6.2 字典的方法
获取字典中所有的键:info.keys() #不可用可变类型当做字典的键
获取字典中所有的值:info.values()
获取字典中所有的键值对:info.items()
查找字典中是否有指定的键:字典.get('键') #不存在返回None
给字典添加键值对:字典['键']=‘值’
更新字典的值,存在则更新,不存在则添加:字典.update({'键‘:'值'})
7 set 集合
7.1 集合的书写规范
书写规范:v = {1,2,3,4}
空集合:v = set()
注:集合中的元素不能存在重复,且集合元素无序
7.2 集合的方法
集合添加元素:集合.add(元素) #集合中若存在则不添加
集合删除元素:集合.disable(元素) #无序不重复,不能用索引
集合的更新:集合.update(元素) #批量添加
集合的交集:new_set = set1.intersection(set2) #在set1和set2的交集
集合的并集:new_set = set1.union(set2)
集合的差集:new_set = set1.difference(set2)
8 数据类型公共方法
索引:获取第一个位置的元素(从0开始):x[0](排除:int/bool/set) #x[-1] 复数从后向前
切片:获取一部分元素(取前不取后)(排除:int/bool/set)
例题:v = '现实没有如果'
v1 = v[2:4] 获取到位置为2到3的字符串 #没有
v2 = v[3:] 获取到位置为3到最后的字符串 #有如果
v3 = v[:-1] 获取从开始到-2位置的字符串 #现实没有如
步长:获取其中某字符(排除:int/bool/set)
例题:name = ’alexalex‘
val = name[1:-1:2] 获取从1到-1每间隔为2的所有字符 #lxl
val = name[1::2] 获取从1到最后每间隔为2的所有字符 #lxlx
val = name[::2] 获取从开始到最后每间隔为2的所有字符 #aeae
val = name[-1:0:-2] 获取从-1到0每间隔为-2的所有字符 #xlxl
val =name [::-1] 将字符串反转 #xelaxela
删除(排除:str/int/bool/set)
for循环(排除:int/bool)
len:计算长度,判断有多少元素(排除:int/bool)
9 条件判断
9.1 if 条件:
内容
9.2 if 条件:
内容
else:
内容
9.3 if 条件:
内容
elif 条件:
内容
else:
内容
9.4 三元运算(三目运算)
简单的if条件时使用:v = 前面 if 条件 else 后面 #条件为True,则v = 前面 条件为False,则v = 后面
10 循环
10.1 while 循环
基本条件:while + 条件 例:while True:(永久成立)
关键字:break 例:while True:
break #终止循环
关键字:continue while num <10:
continue #循环如果遇到continue则直接执行下一次循环,不执行下面
关键字:else #不满足while后的条件时触发
10.2 for 循环
基本条件:for 变量 in 被循环数据: 例:for i in 'alex':
关键字:break 例:for i in 'alex':
break #终止循环
关键字:continue for i in 'alex':
continue #循环如果遇到continue则直接执行下一次循环,不执行下面
关键字:else #不满足for后的条件时触发
11 运算符
11.1 普通运算符
加:+ 减:- 乘:* 除:/ 取余数:% 次方:** 取商的整数://
11.2 比较运算
等于:== 不等于:!= 大于:> 小于:< 大于等于:>= 小于等于:<=
11.3 赋值运算
c=a+b:将a+b的结果赋值给c
c+=a,等效于c=c+a
c-=a,等效于c=c-a
c*=a,等效于c=ca
c/=a,等效于c=c/a
c%=a,等效于c=c%a #取余数
c**=a,等效于c=c**a
c//=a,等效于c=c//a #取整数
11.4 逻辑运算
与:and 例:x and y 如果X为False,取X否则取Y
或:or 例:x or y 如果x为False,取y否则取x
非:not 例:如果x为Flase,则取True,否则为Flase
11.5 成员运算符
判断某字符串中是否含有某字符:in
判断某字符串中是否不含有某字符:not in
11.6 运算符优先级
三 内存相关
查看内存地址:print(id(v1))
python常用地址:-5~256
==和is的区别:==只是比较值是否相等,is比较内存地址是否一致
例一 v1 = [1,2,3] v2 = [1,2,3] #数据一致但是存储磁盘内位置不一致
例二 v1 = [1,2,3] v2 =v1 v1.append(666) print(v2)#[1,2,3,666] #v2把自己指向v1数据的地址,当v1添加时,v2也存在
例三 v1 = [1,2,3] v2 =v1 v1 = [11,22,33] print(v2)#[1,2,3] #v1被重新赋值,v2指向原内存地址,v1已开辟新内存地址
例四 v1 = [1,2,3] v2 = [11,v1]
v1.append(9) print(v2)#[11,[1,2,3,9]
v2[1].append(999) print(v1)#[1,2,3,999]
v1 = 999 print(v2)#[11,22,[1,2,3]]
v2[1] = 999 print(v1)#[1,2,3]
四 深浅拷贝
格式前提:import copy #copy属于新建内存地址
浅拷贝只会拷贝可变类中的第一层可变类,深拷贝会拷贝所有的可变数据。
#str/int/bool都是按照此方法深浅拷贝
a=“dlkfjsdlk”
b = cogy.copy(a)###浅拷贝
c = copy.deepcopy(a)###深拷贝 #list/set/dict无嵌套深浅拷贝无区别
v1 = [1,2,3]
v2 = copy(v1)###复制之后的地址指向原来
v3 = deepcopy(v1)###找到所有可变类型进行拷贝 #list/set/dict有嵌套深浅拷贝的区别
v1 = [1,2,[33,99]]
v2 = copy(v1)###复制第一层内存地址,如有嵌套,只指向内存地址,不复制
v3 = (v1)###复制所有可变类型,不拷贝数据 #因为元组属于不可变类型所以深浅拷贝地址都不变
v1 = (1,2,3,4)
import copy
v2 = copy.copy(v1)###地址不变
v3 = copy.deepcopy(v1)###地址不变
#特殊:存在元组嵌套列表时
v1 = (1,2,3,[1,2,3],4)
v2 = copy.copy(v1)###地址不变
v3 = copy.deepcopy(v1)###如果元组中存在可变的列表,则地址要变
五 文件操作
打开文件
f = open('要打开的文件',mode='r/w/a',encoding='文件原来写入时的编码') 注:当要打开的文件是在windows中创建的时候,编码后要加-sig
mode有很多种:r 只读,文件不存在则报错 w只写,打开文件的孙坚文件内容全部清空,文件不存在则新建 a 追加,打开文件并在末尾追加需要输入的但不能读
r+可读可写,默认光标在最前 w+可读可写,打开时文件会被勤工,默认光标在最后,读取时需要把光标移动到最前 a+打开文件,默认追加,光标在最后
rb 读出为字节 wb 写入字节 ab 追加字节(当读、写、追加为字节时,不需要添加encoding)
同时打开两个文件的方式: make open ('文件路径',mode='r/w/a',encode='utf-8') as f,open ('另一个文件路径',mode='r/w/a',encode='utf-8') as f2;
操作文件
读:content = f.read(X) #表示每次往内存中读X个字符不填默认全部读取 当文件比较大时,利用循环将文件内容一部分一部分读取出来
content = f.readlines() #表示每次往内存中读一行,使用循环可以读出所有的文件,需要使用strip去除换行符
#例题:文件读操作,每次读10行,并且不占用文件
while True:
f = open('db','r',encoding = 'utf-8')
data_list = []
for i in range(10):
line = f.readline()
if not line:
return
data_list.append(line)
cursor = f.tell() #游标位置
f.close()
for row in data_list:
yield row #生成器
写:f.write(X) #在X处替换你要写的内容
关闭:f.close() #必须关闭,否则读写都在内存中,无法保存
注:使用with open()格式打开的文件,当代码写到文件缩进外时,自动关闭
修改文件内容:只能同时打开两个文件,一个读,把读出的需要改的内容改完后,逐条写进新文件中
make open ('文件路径',mode='r/w/a',encode='utf-8') as f,open ('另一个文件路径',mode='r/w/a',encode='utf-8') as f2;
date1 = f1.read()
date2 = date1.replace('xxx','yyy') #把date1中的xxx改成yyy
f2.write(date2)
第一章 pyhton基础的更多相关文章
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- [Python笔记][第一章Python基础]
2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...
- 第一章 jQuery基础
第一章jQuery基础 一.jQuert简介 1.什么是jQuery jQuery是javaScript的程序库之一,它是javaScript对象和实用函数的封装. jQuery是继Prototype ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- python第一章计算机基础
第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...
- Java基础知识二次学习-- 第一章 java基础
基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...
随机推荐
- laravel之null替换空字符串中间件
在laravel写接口的时候免不了数据库中保存null,可用诸如设置ORM的访问器或以下方法处理 $goods->name?$goods->name:''; 其实可以利用路由中间件,在需要 ...
- Metasploits之Adobe阅读器漏洞
实验环境:Kali 2.0+Windows XP+Adobe Reader 9.3.0 类别:缓冲区溢出 描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uni ...
- 108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树.此题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1.示例:给定有序数组: [-10,-3,0,5,9], ...
- attribute与property区别总结
在前阵子看JQuery源码中,attr()的简单理解是调用了element.getAttribute()和element.setAttribute()方法,removeAttr()简单而言是调用ele ...
- Spring Boot运行原理
概述 本文主要写了下Spring Boot运行原理,还有一个小例子. Spring4.x提供了基于条件来配置Bean的能力,而Spring Boot的实现也是基于这一原理的. Spring Boot关 ...
- kafka java api生产者
import java.util.HashMap; import java.util.List;import java.util.Map;import java.util.Properties; im ...
- JS权威指南-概述学习
<script src="/javascripts/application.js" type="text/javascript" charset=&quo ...
- iOS 画圆图片的几种方法
方法一: self.cycleImv= [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)]; [self.view addS ...
- 分布式定时任务的redis锁实现
一个web项目如果部署为分布式时,平时常见的定时服务在一定的间隔时间内,可能出现多次重复调用的问题.而此时由于是不同容器之间的竞争,因此需要容器级别的锁 Redis为单进程单线程模式,采用队列模式将并 ...
- The Singapore NRIC Check Digit
The Singapore NRIC number is made up of 7 digits and a letter behind. This letter is calculated from ...