下载安装Anaconda
下载Anaconda
在官网上下载安装包
https://www.anaconda.com/distribution/ 命令安装Anaconda
Anaconda3-5.1.0-Windows-x86_64.ext
运行Python自带Demo
python –m turtledemo
Python开发工具
Python解释器
IPython交互式shell
Jupyter Notebook
基于Web的可支持实时代码的应用 启动方法:jupyter notebook
Jupyter Notebook介绍
Jupyter Notebook是一个Web应用
Python Kernel用于执行 Python代码
Python Kernel与Jupyter之间的关系 使用Jupyter Notebook的方法
创建Python Notebook文件
在Jupyter Notebook中编写代码 执行Python代码
PyCharm集成开发环境
JetBrains公司开发的IDE 使用方式与IDEA相似 适合于工程类Python应用开发 下载安装PyCharm Community版
Python的工程结构
Python工程结构
模块(module)
一个Python文件就是一个模块
.py source code .pyc compiled bytecode .pyo optimized bytecode 包(package)
导入已有模块
import sys from os import path
Python语句块规范
缩进
Python中要求强制缩进以区分层次和代码块 缩进可以使用2个空格、4个空格、1个tab键实现 推荐只使4个空格进行缩进
因缩进方式不同会引起编译错误提示 需要手动修改统一缩进方式 PyCharm默认设置不使用“TAB缩进符”,而是设置一个TAB=4个空格
Python的注释方法与常见内置函数
函数名 说明 type() 返回对象类型 dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表 input()/print() 输入/打印输出 id() 返回对象的内存地址
Python变量的特点
变量名的命名原则
以_或字母开头 变量名大小写敏感 不能使用Python保留的关键字
查看Python关键的方法:import keyword Python变量的特点
使用变量前不需要声明 变量的类型不固定 Python变量是实际值的引用
数值类型
类型 类型 举例 int(整数) 十进制 123、1_234_789 int(整数) 八进制 0o123、0o_1_234_567、0O123 int(整数) 十六进制 0x123、0x_1_234_567、0X_BAD_BEEF int(整数) 十六进制 二进制 float()浮点数 - 1.23、1_2_3.、.123、.1_2_3 float()浮点数 指数表示 1.23e4、1.2_3E-4、0E0、1e+1_1
数值类型操作符
操作符 说明 x+y 加法 x-y 减法 x*y 乘法 x/y 除法 x//y 除后取整 x%y 除后取余 -x 负数 abs(x) 取绝对值 int(x) 转换成整数 float(x) 转换成浮点数 divmod(x,y) 返回一个包含商和余数的元组 pow(x,y) 返回x的y次方 x**y 返回x的y次方 round(x[,n]) 方法返回浮点数x的四舍五入值
列表
列表的特点
用来存储多个数据的数据结构 储存的数据是有序的,可使用位置索引 列表长度和元素都是可变的 可储存不同类型的数据 列表的使用方法
创建列表
使用索引获取列表中的数据
判断值是否存在于列表汇总
in和not in
元组(tuple)
元组的特点
储存形式与列表相似 与列表不同的地方
常用于安全级别较高的场景应用 元组的使用方法
创建元组 使用索引获取元组中的数据
判断值是否存在于列表汇总
t1= ( 1 , 2 , 3 , 4 , 5 )
t2= 'one' , 2 , [ 3 , 4 ] , ( 5 , 6 )
t3= tuple ( [ 1 , 2 , 3 ] )
列表/元组操作
通过切片获得新的列表/元组
[start: end:step]
start:起始索引,从0开始,-1表示结束 end:结束索引 step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值 对列表x=[1,2,3,4,5,6,7,8,9,0]切片
切片 结果 x[1:3] [2,3] x[-3:-1] [8,9] x[:4] [1,2,3,4] x[6:] [7,8,9,0] x[1:6:2] [2,4,6] x[-8: -1:3] [3,6,9] x[6:1:-2] [7,5,3] x[-1:-8:-3] [0,7,4]
for v in x:
print ( v)
zip()函数
将可迭代的对象作为参数,将对象中的对应的元素打包成一个个元组,然后返回由这些元组组成的对象
matrix = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] , [ 9 , 10 , 11 ] ]
list ( zip ( * matrix) ) # result: [ (1 , 5 , 9 ), (2 , 6 , 10 ), (3 , 7 , 11 )]
t = ( 1 , 2 , 3 , 4 )
list ( zip ( t) )
range类型
range类型
一段不可变的数字序列 经常被用作for里面来指定循环次数 创建range对象
range对象 数列 range(4) 0,1,2,3 range(1,4) 1,2,3 range(1,4,2) 1,3 range(4,1,-1) 4,3,2
range操作方法
切片 结果 x[1:3] range(1,3) x[-3:-1] range(7,9) x[:4] range(0,4) x[6:] range(6:10) x[1:6:-2] range(1,6,2) x[-8: -1:3] range(2,9,3) x[6:1:-2] range(6,1-2) x[-1:-8:-3] range(9,2,-3)
for v in range ( 10 ) :
print ( v)
列表、元组、range转换
t = tuple ( l) # l是列表
l = list ( t) # t是元组
l = list ( r) # r是range
t = tuple ( r) # r是range
pack&unpack
t = 1 , 2 , 3 #t是(1 , 2 , 3 )
a, b, c= t #a= 1 , b= 2 , c= 3
a, b, * c = 1 , 2 , 3 , 4 , 5 # a= 1 , b= 2 , c= [ 3 , 4 , 5 ]
a, * b, c = 1 , 2 , 3 , 4 , 5 # a= 1 , b= [ 2 , 3 , 4 ] , c= 5
* a, b, c = 1 , 2 , 3 , 4 , 5 # a= [ 1 , 2 , 3 ] , b= 4 , c= 5
* a, b, c, d, e, f = 1 , 2 , 3 , 4 , 5 # a= [ ] , b= 1 , c= 2 , d= 3 , e= 4 , f= 5
a, b = b, a
l = [ ( 1 , 2 ) , ( 3 , 4 ) , ( 5 , 6 ) ]
result= 0
for x, y in l:
result += x* y
print ( result)
常见的序列操作
s = [ 1 , 2 , 3 ] t = [ 4 , 5 , 6 ] n = 2
操作符 说明 s+t 拼接:[1,2,3,4,5,6] sn or n s 乘法:[1,2,3,1,2,3] len(s) 计算序列的长度:3 min(s) 获得序列中的最小值:1 max(s) 获得序列中的最大值:3 s.index(x[,i[,j]]) 获得第1个x元素的索引(索引值在i和j之间) s.count(x) 序列x元素出现的次数
可变序列支持的操作
操作符 说明 s[i]=x 更新指定索引的值 s[i:j]=t 使用序列t替换s中的i到j的值 del s[s:j] 等同于s[i:j]=[](左闭右开) s[i:j:k] = t 使用序列t中值替换s[i:j:k]的值 del s[i:j:k] 删除s[i:j:k]的值 s.append(x) 将值x添加到序列的末尾 s.clear() 清空序列,相当于del s[:] s.copy() 创建一个s的浅拷贝 s.extend(t) 使用序列t扩展序列s s.insert(i, x) 在序列s的i索引处插入值x s.pop(i) 返回序列s中索引为i的值,并将该值从序列中移除 s.remove(x) 就昂序列中第一个值为x的元素移除 s.reverse() 将序列s倒序排列
Set(集合)
储存形式与列表相似
集合中保存的数据具有唯一性,不可重复 集合中保存的数据时无序的 往集合中添加重复数据,集合将只保留一个 set集合常被用来去重或者过滤 创建一个集合
空集合:变量=set() 非空集合:变量=(元素1,元素2,…) 集合操作
集合操作
newSet = s1 | s2 | s3
newSet = s1. union ( s2, s3)
newSet = s1 & s2 & s3
newSet = s1. intersection ( s2, s3)
newSet = s1 - s2 - s3
newSet = s1. difference ( s2, s3)
s1. issuperset ( s2)
s2. issubset ( s1)
s1. isdisjoint ( s2)
字典
通过键值对(key-value)来存储数据 储存的数据时无序的,可使用键索引 键是必须唯一,但值可以不唯一 键的类型只能是字符串、数字或元组,值可以是任何 字典操作
empty_dict = { }
dict_1 = { 1 : 'one' , 2 : 'two' , 3 : 'three' }
dict_2 = dict ( one= 1 , two= 2 , three= 3 )
字典操作
x = d[ 1 ] #1 是Key,不是索引
x = d[ 'three' ]
x = d. get ( 3 , 'This value when key is not found' )
#遍历字典的键for k in x: #x. keys ( )
print ( k)
#遍历字典的值for v in x. values ( ) :
print ( v)
#遍历字典的键和值for k, v in x. items ( ) :
print ( k, v)
字符串
#单引号
str1 = 'allows embedded "double" quotes'
#双引号
str2 = "allows embedded 'single' quotes"
#三引号
str3= '' 'Three single quotes,
span multiple lines'' '
str4= "" "Three double quotes,
span multiple lines"" "
字符串操作
字符串操作 说明 string[n:m] 字符串切片 int() 字符串转数值类型 str() 数值类型转字符串 ord() 字符转Unicode码 chr() Unicode码转字符串 lower() 转成小写字符串 upper() 转成大写字符串 split() 分隔字符串 join() 将序列中的元素以指定的字符连接生成一个新的字符串 strip() 用以移除字符串头尾指定的字符(默认为空格或换行符)或字符序列 lstrip() 用于移除字符串头指定的字符(默认为空格或换行符)或字符序列 rstrip() 用于移除字符串尾指定的字符(默认为空格或换行符)或字符序列 in 判断是否为子串 find() 返回子串开始的索引值,找不到子串时返回-1 index() 返回子串开始的索引值,找不到子串时抛出异常 count() 统计字符串里某个字符出现的次数 replace() 方法把字符串中的就字符替换成新字符串 startswith() 检查字符串是否是以指定子字符串开头 endswith() 检查字符串是否是以指定子字符串结尾 maketrans() translate() 字符串转换,maketrans()设置转换模式,translate()执行转换操作
None和布尔值
True False 不为0的数值 0, 0.0, 0+0j 非空字符串 空字符串 非空列表 空列表 非空字典 空字典 非空集合 空集合 - None
比较运算符
操作符 解释 < 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 != 不等于 is 判断两个标识符是不是引用自一个对象 is not 判断两个标识符是不是引用自不同对象
流程控制语句
if guess > secret :
print ( "too large" )
elif guess < secret : # elif is optional
print ( "too small" )
else : # else is optional
print ( "equals" )
while guessed != secret :
guessed = int ( input ( "Guess a number: " ) )
else : # else is optional
print ( "Congratulation!" )
for i in range ( 0 , 8 , 2 ) :
print ( i)
else : # else is optional
print ( "Done!" )
break
break语句在循环中的作用是跳出当前循环语句 循环语句的else子句不会被执行 continue
continue语句在循环中的作用是跳出本次循环 遇到了continue将跳出本次循环的剩余代码,直接开始下一次循环 pass
三元表达式
result= 值1 if x< y else 值2
'even' if x% 2 == 0 else 'odd'
'A' if x% 2 == 0 else 'B' if x% 5 == 0 else 'C
列表生成式
列表生成式举例
需求描述 列表生成式 0~9的平方 [x**2 for x in range(10) ] 2~99中的偶数 [x for x in range(2,100) if x % 2 == 0] π的精度逐渐升高(1~9位小数) from math import pi [str(round(pi, i)) for i in range(1, 10)] [[ 1, 0, 0, 1 ],[ 0, 1, 1, 0 ], [ 0, 1, 1, 0 ],[ 1, 0, 0, 1 ]] [[1 if r==c or r+c==3 else 0 for c in range(4)]for r in range(4)] 字符串’what is this’中出现的字母(生成集合) sentence = ‘what is this’ { c for c in sentence if c != ’ ’ } 字符串’what is this’中含i单词(生成生成器) sentence = ‘what is this’ (w for w in sentence.split() if ‘i’ in w) 字符串’what is this’中单词的辅音字母(生成字典) sentence = ‘what is this’ { w:{c for c in w if c not in ‘aeiou’} for w in sentence.split() }
字典、集合生成式
字典生成式
{k:v for k,v in input if xxxx }
#将所有的key值变为大写
d = dict ( a= 1 , b= 2 )
print ( { k. upper ( ) : v for k, v in d. items ( ) } )
#大小写key值合并, 统一以小写key值输出;
d = dict ( a= 2 , b= 1 , c= 2 , B = 9 , A = 5 )
print ( { k. lower ( ) : d. get ( k. lower ( ) , 0 ) + d. get ( k. upper ( ) , 0 ) for k in d} )
集合生成式
{v for v in input if xxxx}
#筛选字符串中的字母
{ x for x in 'abracadabra' if x not in 'abc' }