文章目录
1.标识符和变量
标识符:用来标识某个实体的一个符号,在不同的应用环境下由不同的含义,eg:变量,常量或函数···
标识符由字母、下划线和数字组成,且不能以数字开头(在Python 3中还可以包含中文字符)
错误:mass!2 2mass class(关键字)
关键字,保留字,函数名不能做变量名(通c/c++)
正确:x2 _12a
Python标识符区分大小写
Python中变量无需定义或声明(与c,c++,java)不同
Python变量名对大小写敏感,对同一变量可反复赋值,且类型也可不同
Python变量有一个非常重要的性质:变量是将没名字和对象进行关联
赋值操作并不会实际复制值,它只是为数据对象取个相关的名字
id()是Python的内置函数,可以显示对象的地址
a=1000 b=1000 与1000 的内存地址不同的原因:
Python的解释器会把一些小整数(-5~256)存放在一个所谓的小整数对象池,(小整数范围内的)这些值可以直接从数组中获取就不需要再对这些对象重新分配内存空间,效率较高;
而大整数或其他对象需要重新获取内存空间
2.输入和输出函数
输入函数:input(); 所有输入的内容均以字符串形式与变量相关联
若想得到想要的类型,需要进行强制转换(将str型转为int型)
想要在一行输入多个数值,使用input().split()函数 ,也可用int()进行强制转换
加入提示语:input(“提示内容”);
输出函数:print() 默认输出换行符
输出示例:
end可以是空格也可以是任意符号
3.数据类型
整型:int
-
可正可负
-
默认情况下,整数采用十进制。其他进制需要增加相应的引导符号/前导符
浮点数:float
- 取值范围与精度都有限制
表示方式:
-
小数:1.23 ,3.14,-9.5
-
科学计数法:1.23×10^9 -> 1.23e9 (e后的数字必须为整型)
0.000012 ——> 1.2e-5
-
浮点数运算存在不确定尾数,有误差(以二进制存储)
-
消除尾数:使用round()函数
复数:特有 -
虚部用j表示
-
real方法取实部
-
image取虚部
-
complex()函数可用于创建一个值为real+image*j的复数**
算数运算符:
除法不同与其他语言
幂运算的优先级别高于乘除
使用示例:
数学函数:
4.字符串
字符串不可被修改
python不提供单字符,所有字符均以字符串形式存在
-
字符串是以引号括起来的任意文本
-
是一个有序序列
-
表现形式:双引号“” 单引号‘’
三引号:“‘ ’” 多行文本
转义字符:
\xyy -->x是16进制 ,yy是任意数值
\ooo -->第一个o是8进制前导符,最多三位8进制
字符串运算:+
+:仅用于字符串与字符串连接
字符串索引和切片:
示例:
关系运算符:
逻辑运算符:and,or ,not
运算符之间优先级和结合性:
示例:
短路原则:
- 或运算 :当第一个逻辑量为真时,会跳过第二个逻辑量的判断,直接为真
- 与运算:当第一个逻辑量为假时,会直接判断为假,跳过第二个逻辑量的判段
5.内置转换函数
内置函数:无需导入,可直接使用
6.语句
6.1赋值语句
6.2if语句
if 判断语句:(if和else后都要加“:”)
····
else:
···
保留两位小数在“{}”用“:.2f” .format()函数
6.3for语句:循环语句
for语句格式:
for 变量 in 列表:
语句块
eg:for i in [0,1,2,3,4]:
print(i)
6.4.列表
列表支持:加法,乘法,比较,索引,切片操作等
变量相关表达式 for 变量 in 范围
示例:求1,1/2,1/3···1/20的和
还可以加if语句进行判断例题:
求前20项 1,-1/2,1/3,-1/4·····-1/20的和
例3:“*”字符串复制符的使用
6.5.格式化输出
str.format();
{}内的参数必须是存在的,不能超出范围
参数的大小决定输出的顺序
例题:
7.使用字符串,列表和元组
7.1序列的访问及运算符
字符串是不可变对象
列表是可变对象
切片:
三个参数:
lens()函数:返回列表或字符串的长度
换行相关符号:
转义字符:
单引号:\ ’ :‘it\ ’ is a good boy’
双引号:\ "
横向制表符:\t
纵向制表符:\v
lens(),find(),count(),strip():
返回字符串中重复子字符串的最后一个的位置函数:str.rfind():
将其他类型的元素转换成字符串:str(’’)
当a的序列赋给b时,两变量指向同一地址,当b的某一内容改变时,a也会跟着改变
单个变量不会出现上述情况;
示例:
8.列表(list)
列表变量只是列表的管理者,而非所有者,列表之间的赋值是管理权的授予,而不是列表本身的赋值,与普通变量赋值有着本质的不同
删除列表元素:del
列表常用函数:
- list.append() 在列表尾部添加新对象(列表或数值)
- list.remove() 删除括号内的元素
- list.insert(index,obj) 在index位置插入obj元素
- list.extend([]) 在列表的尾部连接上新列表的内容(将新列表的元素加到列表之后)
- list.reverse() 倒置列表
- list.pop(index) 默认移除列表最后一位(移除index位置的元素)并返回
- list.index(obl) 查找obl在列表中的位置
- list.count(obl) 统计obl在列表中出现的次数
str.split()函数:
-
将字符串转换成列表(默认将字符串按空格分割)
-
括号内有参数时,按参数进行分割;(当两个参数相连时,两参数之间应该存在一个字符,但实际不存在,用’'代替)
.join(list)函数:使用.之前的参数将列表内的元素连接成一个字符串
9.元组(tuple)
元组与列表大多相似,但元组的数据不可修改(列表的append,extend,insert,remove,del等能修改列表内容的函数在元组不能使用)
- tuple()函数列表转换成元组
- 元组常用count,index函数
10.随机函数random
random 函数的使用需要先导入random库:import random
常用随机函数:
- random.shuffle(list) 打乱列表(列表排序:list.sort())
- random.choice(list) 从list中随机输出一个元素
- random.random() 默认随机产生0~1之间的浮点数([0.1))
- random.randint(begin,end) 随机产生区间内的一个整数
- random.seed(num) 随机数的种子
计算机中的随机数并不是真正的随机数,是通过一个公式计算出来的 ,根据上一次计算出来的值进行下一次随机值的计算,seed确定了上一次的随机值,seed值一定,下一次的随机数也一定,seed值不定时下一次的随机值一定不一样
11.if条件语句
python通过缩进表示层次
if语句:
if 判断语句:
···
else :
···
多级适用if ··else语句时可使用:
if 判断语句:
···
elif 判断语句:
····
else:
···
等同于c/c++中的if ···· else if··· else ···语句
直接输入两个整数可使用map函数:
m,n=map(int,input().split())
map()根据提供的函数(本题中的int)对指定序列(输入的字符串)做映射 (类似将输入的字符之间转换成数值)
12.循环语句
while循环语句
while语句在python中的使用和c/c++差不多使用,python的条件判断句不带括号
使用break跳出循环
for循环
for 语句:
····
else:
····
当for循环正常结束时,else后的内容才会执行
for循环内的i值不会因为语句的改变而造成影响
13.异常
try:
正常执行语句块
except 异常类型1:
抛出异常
except :
抛出异常
else:
try内不抛异常时执行else
finally:
无论什么情况都执行finally内的语句
常见异常类型:
14.集合
容器之一
集合特性:
- 元素不重复
- 自动排序
表示方式:
空集合:set() (不是{},是字典)
非空集合:{元素1,元素2··}
常用:
- 不能通过下标取元素
- s.add(obj) 添加元素进集合,返回值为None
- set(list) 将列表转换成集合
- s.remove(obj) 删除特定元素,若不存在,抛出KeyError异常
- max(s),min(s),len(s),sum(s)取集合的最大、最小值,集合的长度,集合元素的累加和
- 通过>,<,==等关系运算符判断包含关系
- s1 | s2 s1与s2的并集
- s1 & s2 s1与s2的交集
- s1 ^ s2 对称差,去掉s1,s2共同元素之后的集合
- s1 - s2 差集,去除s1中两者交集的元素
- s1.issubset(s2) 判断s1是不是s2的子集
- s2.issuperset(s1) 判断s2是不是s1的超集 (s2包含s1)
15.字典
容器之一
创建字典:{} 、 dict()
表示:{ key: data }
键(key):不可变对象(数字,字符串,元组)可以作为key;
可变对象(列表,字典等)不可做key
字典常用内容:
- del dict[key] 删除key条目,如果key不存在,抛出KeyError异常
- 遍历字典时,遍历的是key,可通过key输出相应的数据
- len(dict) 字典的大小
- keys() 返回由全部键组成的一个序列
- values() 返回由全部的值组成的一个序列
- Items() 返回一个序列,期中的每一项是一个元祖,每个元组由他的key和值组成
- clear() 删除所有条目
- get(key) 返回这个key对应的值,如果key不存在,不会抛出异常,会返回None
- pop(key) 返回这个key所对应的值,并删除这个条目
- in运算,判断某key是否在字典里,对value值不适用,与has_key(key)功能相似
16.函数
函数的定义与调用
python中函数声明和函数定义视为一体
python里函数必须先定义,再使用
函数:内置函数和自定义函数
def 函数名(函数参数)
函数体
return 表达式或值
lambda表达式可以用来声明匿名函数(小函数),只可以包含一个表达式,表达式的计算结果为函数的返回值
格式:
result=lambda 参数:表达式
函数参数:
实参:调用函数时,函数中的参数值为实参(实际参数)
形参:通过def定义函数时函数名后面括号里的参数
参数类型:
- 位置参数(实参的位置与形参一一对应)
- 关键字参数
- 默认值参数 (形参有默认值,在函数对象被创建时计算)
- 数量可变参数
关键字参数在位置参数之后
当实参是不可变对象时,形参改变不影响实参
当实参是可变对象时,形参改变可能会影响实参
数量可变参数:
*或 ** 都是加在形参的前面,表示不定长参数,分别用来接收不带变量名的多余参数和带有变量名的多余参数,分别将他们以元组或字典的形式接收进函数
在实参前加“*”,意味着拆包,将一个序列拆散成一个个单独的实参
变量的类型:
全局变量:定义在函数外,作用域是整个程序
局部变量:定义在函数内,作用域是函数内部(eg:形参)
当局部变量和全局变量名相同时,起作用的是局部变量
内置函数
①sorted:
函数语法:sorted(iterable,key= ,reverse=True/False)
key是关键字,按照key进行排序
reverse=True 降序 reverse=False 升序(默认)
适用对象:字符串,列表,元组,字典等
返回值:返回排序后的新list,原来的list不改变
list的sort函数,是对原list进行排序,无返回值
②map函数:
函数语法:map(function,iterable,···)
function 参数序列中每一个元素调用function函数函数,
iterable 序列
返回值:新的列表或迭代器,每个元素是调用function函数的返回值
直接输入两个整数,map函数:
m,n=map(int,input().split())
map()根据提供的函数(本题中的int)对指定序列(输入的字符串)做映射 (类似将输入的字符之间转换成数值)
③zip函数:
语法:zip([iterable,···])
iterable, 两个及以上序列
功能:将可迭代的对象作为参数,将对象中对应的元素打包成一个个的元组,然后返回由这些元组组成的列表或迭代器,如果各迭代器的元素个数不一致,则返回列表长度与最短的对象相同
返回值:元组列表
④eval函数和exec函数:
eval函数:计算表达式,返回表达式的值
exec函数:可运行Python的程序,返回程序运行结果
eval(),exec() 参数为string/bytes/code object型
⑤all和any函数:
all([iterable]):当所有参数都是True时,才返回True,否则False
any([iterable]):参数只要有一个为True,就返回True值,参数全False才返回False
17.模块
Python中的模块与C中的头文件以及Jave中的包相似(可以自定义模块)**
导入模块方式:
- import 模块名
通过import 模块名方式导入的模块,在使用其函数时要加上模块名
(eg:import math
math.sqrt(25) 25的平方根)
- from 模块名 import 函数名1,函数名2
通过from 模块名 import 函数名1,函数名2方式导入函数时,直接使用函数名调用,无需模块名
当两个模块中含有相同名称的函数时,后面一次引入会覆盖前面一次
- from 模块名 import
一次性导入模块中的所有东西,功能同import 模块名(不宜过多使用)
模块位置的搜索顺序
- 当前目录
- 不在当前目录,Python则搜索在PYTHON PATH环境变量下的每个目录
- 如果找不到,Python会查看由安装过程决定的默认目录
模块搜索路径存储在system模块的sys.path变量中。变量包含当前目录、PYTHON PATH、由安装过程决定的默认目录
常用模块
- time模块 时间相关
- calendar模块 日历相关
- datetime模块
- date类 对象表示一个日期(年、月、日)
- time类 时间(时、分、秒、微妙)
- datetime类
- random模块 随机数
- math模块 数学公式,数学运算
- cmath模块 功能同math,但运算的是复数