Python基础知识
2018-07-20 11:19:56 1 举报
AI智能生成
路飞学城第一模块(基础知识)
作者其他创作
大纲/内容
数据类型、字符编码、文件操作
字符编码简介
ASCII 占1个字节,只支持英文
GB2312 占2个字节,支持6700+汉字
GBK GB2312的升级版,支持21000+汉字
Shift-JIS 日本字符
ks_c_5601-1987 韩国编码
TIS-620 泰国编码
Unicode 2-4字节 已经收录136690个字符,并还在一直不断扩张中
UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个
UTF-16: 使用2、4个字节表示所有字符;优先使用2个字节,否则使用4个字节表示。
UTF-32: 使用4个字节表示所有字符;
Pyhton基础
编程语言介绍
什么是编程
编程就是计算机通过二进制语言实现一些事件
语言的分类
机器语言(优点是最底层,速度最快,缺点是最复杂,开发效率低)
汇编语言(优点是底层,速度最快,缺点是最复杂,开发效率低)
高级语言(编译型语言执行速度快,不依赖语言环境运行,跨平台差)
编译类(开发周期长,程序执行效率高,依赖编译器,跨平台差些,如C、C++、Delphi)
解释类(比较灵活,可以动态的调整,修改应用程序,如Python,Java,PHP,Ruby等语言)
变量与常量
变量
变量的定义
变量就是定义之后还能发生改变,可以重新赋值的量
变量的规范
字母、数字或下划线的任意组合,虽然是数字、字母和下划线,但是变量名的第一位不能是数字
特殊关键字不能使用
["and","as","assert","break","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","not","or","pass","print","raise","return","try","while","yield"]
如果起了以上变量名,就会覆盖原python的变量名
如果起了以上变量名,就会覆盖原python的变量名
约定规范
驼峰体:AgeOfOldboy = 100 NumberOfStudent = 80
【官方推荐】下划线:age_of_oldboy = 100 number_of_student = 80
变量的注意点
变量名为中文、拼音是不行的
变量名过长是不行的
变量名词不达意是不行的
常量
常量的定义
常量就是不变的量,或在程序运行过程中不会改变的量
常量的规范
在python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量:AGE=18
用户交互(输入与输出)
输入(input)
输出(print)
代码注释
单行注释
以#开始>>>#一段字符串
多行注释
三个单引号'''字符串'''
三个双引号"""字符串"""
Python语法基础
基本类型
数字
整型(int)
32位机器上
整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~214748364
64位机器上
整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
长整型(long)
Python的长整型没有指定的位宽(理论上无限大)
浮点型(float)
双精度的浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,进行相等性比较不可靠
字符串
文本(str)
数字可以进行加减,字符串可以相加,也可以相乘(相乘就是复制自己多少次,再拼接在一起),一方是数字一方是字符串就会报错,互相之间是不能加减等运算的
字节(bytes)
在python3里,bytes类型主要来存储图片、视频等二进制格式的数据
Python3里str = unicode,默认就支持了全球的语言编码
在python2里,bytes类型和字符串是本质上时没有区分的
python2里,以utf-8里编码的文件,在windows里显示的就是乱码了,因为windows上支持的是GBK编码
字符串方法
swapcase()>>都变成大写字母
capitalize()>>都变成首字母大写
center(50,"*")>>打印变量s的字符串 指定长度为50,字符串长度不够的用*号补齐
count("a",0,5)>>统计字符串a在变量里有几个;0,5代表统计范围是下标从0-5的范围
endswith("!")>>是否是以什么结尾的
startswith("a")>>判断以什么开始
expandtabs(20)>>相当于在a和b中间的tab长度变成了20个字符,交互模式可看出效果
find("a",0,5)>>查找字符串,并返回索引
format()>>字符串格式化
index("a")>>返回索引值
isalnum()>>查看是否是一个阿拉伯字符 包含数字和字母
isalpha()>>查看是否是一个阿拉伯数字 不包含字母
isdecimal()>>判断是否是一个整数
isdigit()>>判断是否是一个整数
isidentifier()>>判断字符串是否是一个可用的合法的变量名
islower()>>判断是否是小写字母
isnumeric()>>判断只有数字在里边
isprintable()>>判断是否可以被打印,linux的驱动不能被打印
isspace()>>判断是否是一个空格
istitle()>>判断是否是一个标题 每个字符串的首字母大写
isupper()>>判断是否都是大写
"".join(...)>>列表转成字符串,把列表里边的元素都join到字符串中
ljust(50,"-")>>给字符串从左往右设置长度为50,字符串长度不够用
lower()>>字符串都变成小写
upper()>>变大写
strip()>>脱掉括号里边的,可以是空格 换行 tab
lstrip()>>只脱掉左边的空格
rstrip()>>只拖掉右边的空格
maketrans(str_in,str_out) >>生成对应表,就像密码表一样
translate(tt)>>加密方法tt 给 s的字符串加密
partition("o")>>把字符串用 从左到右第一个o把 字符串分成两半
replace("原字符","新字符",2)>>字符串替换,也可以写换几次 默认全换,可以设置count次数
rfind("o")>>查找最右边的字符,也有开始和结束
rpartition("o")>>从最右边的字符开始 把字符串分成两半
split()>>已括号里边的把字符串分成列表,括号里可以是空格、等字符来分成列表
rsplit()>>从最右边以 某字符 来分开字符串
splitlines()>>设置以换行的形式 把字符串分成列表
zfill(40)>>把字符串变成40,字符串不够,从左往右用0 补齐
布尔值
真值(True)
True(与1等价)
非零的数值
非空字符串
至少有一个元素的容器对象
非None对象
假值(False)
False(与0等价)
0, 0.0
'', ""(空字符串)
[], (), {}, set()
None
数据集
列表(list)
创建
list1 = ["a", "b"] 常用
list2 = list () 不常用
查询
L2[2] >>通过索引值查询,从左往右
L2[-1]>>从右边通过索引值开始查询
index()只会从左右往后找,找到第一个就停止,如果有重复的只能再查询
count()>>查询有多少重复值
切片(取某一部分的值)
L2[0:2]或者L2[:2]
注意:切片不能从右往左,只能从左往右>>L2[-5:]或L2[-5:0]
L2[:7:2]>>0-7,隔2个取值,隔N个取值,步长取值
增加
append ("d")>>追加,只能在最后加
insert(0,"abc")>>插入aa到列表下标为0的之前
修改
L2[2] = "OK"
直接给对应位置赋值,即是修改 结果:['a', 'bb', 'b', 'c', 'd']
批量修改
list1[0:2] = "boy"
结果:['b', 'o', 'y', 'b', 'c', 'd']
循环
for i in list1
使用for循环循环列表list1里边的元素
排序
sort ()>>排序是按照ASCII码对应排序
reverse ()>>排序是按照ASCII码反向对应排序
拼接
list1 + list2
list1.extend (list2)
把列表2扩展到list1中
清空
clear ()>>清空列表
元祖(tuple)
类似列表,有序的不可变的数据类型,元祖其实跟列表不同,也是存一组数,只不过一旦创建,便不能再修改
元祖本身不可变,如果元祖中包含其他可变元素,这些可变元素可以改变
【使用场景】
数据库连接配置信息
字典(dict)
有序字典
无序字典
字典语法
{"k1":"v1","k2","v2"}
【特性】
字典是一种key-value的数据类型
无序
可以存放任意多个值,可修改,可以不唯一
key必须可hash,且必须为不可变的数据类型,必须唯一
字典方法
增加
dic["k1"] = "v1"
修改
dic["k2"] = "v2">>找到key值就直接修改就行了,会覆盖的
查询
if str in dic
判断是否在字典里
删除
pop("k1")>>删除key
popitem()>>随机删除key
del>>通用删除大法
clear()>>清空字典
其他方法
keys()>>打印所有的key
values()>>打印所有的value
items()>>字典转成一个列表
update(dic2)>>把两个字典合成一个,如果有重复的key ,info2里边的重复key会覆盖info里边的key
setdefault()>>设置一个默认的key:value
fromkeys()>>函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
集合(set)
有序集合
无序集合
集合方法
交集 s1.intersection(s2) 或者 s1 & s2
差集 s1.difference(s2) 或者 s1-s2
并集 s1.union(s2) 或者 s1|s2
对称差集 s1.symmetric_difference(s2)
两个集合之间的包含关系
s1.issubset(s2)
s1.issupperset(s2)
两个集合是不是不相交
s1.isdisjoint(s2)
s1.difference_update(s2)把差集的结果赋值给s1
控制语句
格式化输出
%s>>打印字符串
%d>>打印整数
%f>>打印浮点数
%m>>打印浮点数(指定保留小数点位数)
运算符
算术运算符
+ 两个对象相加
- 得到负数或是一个数减去另一个数
* 两个数相乘或是返回一个被重复若干次的字符串
/ x除以y
% 返回除法的余数
** 返回x的y次幂
// 返回商的整数部分
比较运算符
== 比较对象是否相等
!= 比较两个对象是否不相等
<> 比较两个对象是否不相等(Python3不用)
> 返回x是否大于y
< 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。
>= 返回x是否大于等于y。
<= 返回x是否小于等于y。
赋值运算符
= 简单的赋值运算符
+= 加法赋值运算符
-= 减法赋值运算符
*= 乘法赋值运算符
/= 除法赋值运算符
%= 取模赋值运算符
**= 幂赋值运算符
//= 取整除赋值运算符
逻辑运算符
and 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值
or 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
身份运算符
is 是判断两个标识符是不是引用自一个对象
is not 是判断两个标识符是不是引用自不同对象
if分支语句
单分支
成立就执行,不成立就停止
双分支
成立就执行,不成立就执行下一个语句
多分支
成立就执行,不成立就下一个,然后依次
while循环
条件循环
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束
死循环(dead loop)
条件一直成立就一直执行,很多大程序本身就是一个大的死循环
continue语句
continue只是终止本次循环,接着还执行后面的循环
break语句
break用于完全结束一个循环,跳出循环体执行循环后面的语句
pass语句
直接过,执行下一语句
0 条评论
下一页