python学习笔记第二天

程序结构

程序分为三种执行结构 :

a. 顺序结构 -> 从上至小,顺序执行

b. 分支结构 -> 根据条件是否成立,选择不同的代码执行

c. 循环结构 -> 一段代码会重复执行多次

一、顺序结构

通常,程序默认为顺序结构

顺序结构的程序按语句的先后顺序依次执行各条语句。

二、分支结构

Python使用if语句实现程序的分支结构,包括单分支结构、双分之结构和多分支结构。

单分支if语句的基本结构:

if条件表达式:

语句块

双分支if语句的基本结构:

if条件表达式:

语句块1

else:

语句块2

多分支if语句的基本结构:

if条件表达式1:

语句块1

elif 条件表达式2:

语句块2

……

elif 条件表达式n:

语句块n

else:

语句块n+1

if…else三元表达式是简化版的if…else语句,其基本格式:

表达式1 if 条件表达式 else 表达式2

列表三元表达式基本格式:[ 表达式1 , 表达式2 ] [条件表达式]

三、循环结构

for语句实现遍历循环,其基本格式:

for var in object :

循环体

else:

语句块2

for循环特点:

else部分可以省略。object是一个可迭代对象。

for语句执行时,依次将object中的数据赋值给变量var——该操作称为迭代。

var每赋值一次,则执行一次循环体。

循环执行结束时,如果有else部分,则执行对应的语句块。

else部分只在正常结束循环时执行。

如果用break跳出循环,则不会执行else部分。

使用range()函数

可以使用range()函数来生成包含连续多个整数的range对象,其基本格式为:

range(end)

range(start,end[,step])

range()函数的特点:

只指定一个参数(end)时,生成整数范围为0~end-1。

指定两个参数(start和end)时,生成整数范围为start~end-1。

整数之间的差值为step,step默认为1。

while循环

while语句基本结构:

while条件表达式:

循环体

else:

语句块2

while循环的特点:

else部分语句可以省略。

如果条件表达式始终为True,则构造无限循环——也称“死循环”。

循环控制:continue、break

在for循环和while循环中可以使用break和continue语句。

break语句用于跳出当前循环,即提前结束循环(包括跳过else)。

continue则用于跳过循环体剩余语句,回到循环开头开始下一次循环。

数据类型

一、数字类型

整数类型:

整数类型可细分为整型(int)和布尔型(bool)。

整数常量是不带小数点的数。

Python 3不再区别整数和长整数,只要计算机内存空间足够,整数理论上可以是无穷大。

一般的整数常量都是十进制的。

Python还允许将整数常量表示为二进制、八进制和十六进制。

布尔型(bool)常量也称逻辑常量,只有True和False两个值。

将布尔型常量转换为整数时,True转换为1,False转换为0。

将布尔常量转换为字符串时,True转换为“True”,False转换为“False”。

在Python中,因为布尔型是整数的子类型,所以逻辑运算和比较运算均可归入数字运算。

浮点数类型:float

与整数不同,浮点数存在取值范围,超过取值范围会产生溢出错误(OverflowError)。

浮点数取值范围为-10308~10308。

复数类型:complex

复数常量表示为“实部+虚部”形式,虚部以j或J结尾。

基本格式:complex(实部,虚部)

小数:decimal

使用decimal模块中的Decimal()函数创建

小数的全局精度:全局精度指作用于当前程序的小数的有效位数设置,默认全局精度为28位有效数字。

可使用decimal模块中的上下文对象来设置小数的全局精度。

小数的临时精度:临时精度在with模块中使用。

分数:Fraction

分数是Python 2.6和3.0版本引入的新类型。

基本语法格式:x = Fraction(a,b)

a为分子,b为分母,python自动计算为最简分数

二、数字运算

操作符 说明

** 幂运算

~ 按位取反

- 负号

*、%、/、// 乘法、求余数、真除法、floor除法

+、- 加法、减法

<<、>> 向左移位、向右移位

& 按位与

^ 按位异或

| 按位或

<、<=、>、>=、==、!= 小于、小于等于、大于、大于等于、相等、不等

not 逻辑非

and 逻辑与

or 逻辑或

自运算:将运算符与自身赋值相结合的赋值语句

如:a+=10 等价于 a=a+10

自运算符号:+=、-=、*=、**=、//=、&=、|=、^=、>>=、<<=、/=、%=

操作符的运算优先级是按表中从上到下的顺序依次降低

Python中的类型复杂度为:布尔型比整型简单、整型比浮点数简单、浮点数比复数简单。

“x % y”计算x除以y的余数,余数符号与y一致;若存在一个操作数为浮点数,则结果为浮点数,否则为整数

在Python 3中,“/”运算执行真除法,即无论操作数是否为整数,计算结果都是浮点数,保留小数部分。

“//”运算称为floor除法。

“x // y”计算结果为不大于x除以y的最大整数。

当两个操作数都是整数时,结果为int类型,否则为float类型

按位取反“~”:操作数的二进制位中,1取反为0,0取反为1,符号位也取反

按位与“&”:将两个操作数按其相同位置的数执行“与”操作,两个位上都是1时,与的结果为1,否则为0

按位异或“^”:在相同位上的数相同时结果为0,否则为1

按位或“|”:在相同位上的数有一个为1时结果为1,否则为0

向左移位“<<”:“x << y”表示将x按二进制形式向左移动y位,末尾补0,符号位保持不变

向右移位“>>”:“x >> y”表示将x按二进制形式向右移动y位,符号位保持不变

比较运算的值为逻辑值(True或False)

逻辑运算(也称布尔运算)指逻辑值(True或False)执行not、and或or操作。

在判断True或False之外的数据是否为逻辑值时,Python将属于下列情况的值都视为False。

1.None。

2.各种数字类型的0,如0、0.0、(0+0j)等。

3.空的序列,如''、()、[]等。

4.空的映射,如{}。

5.如果自定义类包含__bool__()方法或__len__()方法,当类的实例对象的__bool__()方法返回False或__len__()方法返回0时,实例对象视为False。

上述情况之外的值则视为True。

逻辑非not:not True为False,not False为True

逻辑与and:“x and y”在两个操作数都为True时,结果才为True,否则为False。

逻辑或or:“x or y”在两个操作数都为False时,结果才为False,否则为True

数字处理函数

1.内置的常用数学函数:abs( )、max( )、min( )、round( )、sum( )等。

2.math模块提供了常用的数学常量和函数

三、字符串类型

字符串常量:单引号、双引号、三个单引号或双引号、带“r”或“R”前缀的Raw字符串、带“u”或“U”前缀的Unicode字符串

字符串不允许通过下标来修改字符串中的内容

字符串是不允许修改的,因为字符串是一个不可变对象

转义字符 说明

\\ 反斜线

\' 单引号

\" 双引号

\a 响铃符

\b 退格符

\f 换页符

\n 换行符

\r 回车符

\t 水平制表符

\v 垂直制表符

\0 Null,空字符

\ooo 3位八进制数表示的Unicode码对应字符

\xhh 2位十进制数表示的Unicode码对应字符

Raw字符串:抑制转义

Raw字符串的典型应用是表示Windows系统中的文件路径。

in:字符串是字符的有序集合,可用in操作符判断字符串包含关系

空格:以空格分隔(或者没有分隔符号)的多个字符串可自动合并

加号:加法运算将多个字符串合并

星号:用于将字符串复制多次以构成新的字符串

逗号:在使用逗号分隔字符时,会创建用字符串组成的元组

字符串是一个有序的集合,其中的每个字符可通过偏移量进行索引或分片。

字符串中的字符按从左到右的顺序,其偏移量依次为:0、1、2……len-1(最后一个字符偏移量为字符串长度减1);

按从右到左的顺序,偏移量取负值,依次为:-len……-2、-1。

索引指通过偏移量来定位字符串中的单个字符

索引可获得指定位置的单个字符,但不能通过索引来修改字符串。因为字符串对象不允许被修改

字符串的切片也称分片,它利用索引范围从字符串中获得连续的多个字符(即子字符串)。

字符串切片的基本格式:x[ start : end : step ]

字符串是有序的字符集合,可用for循环迭代处理字符串

字符串处理函数:

1.len() 求字符串长度

2.str() 将非字符串数据转换为字符串

3.repr() 将非字符串数据转换为字符串

4.ord() 返回字符的Unicode码

5.chr() 返回Unicode码对应的字符

字符串处理方法:

1.capitalize() 将字符串第一个字母大写,其余字母小写,返回新的字符串。

2.count() 返回字符串sub在当前字符串的[start, end]范围内出现的次数,省略范围时会查找整个字符串。

3.endswith() 判断当前字符串的[start, end]范围内的子字符串是否以sub字符串结尾

4.startswith() 判断当前字符串的[start, end]范围内的子字符串是否以sub字符串开头

5.expandtabs() 将字符串中的Tab字符替换为空格,参数默认为8,

6.find() 在当前字符串的[start, end]范围内查找子字符串sub,返回sub第一次出现的位置,没有找到时返回-1

7.index() 与find()方法相同,只是在未找到子字符串时产生ValueError异常

8.rfind() 在当前字符串的[start, end]范围内查找子字符串sub,返回sub最后一次出现的位置,没有找到时返回-1

9.rindex() 与rfind()方法相同,只是在未找到子字符串时产生ValueError异常

10.format() 字符串格式化,将字符串中用“{}”定义的替换域依次用参数args中的数据替换

11.format_map() 使用字典完成字符串格式化

12.isalnum() 当字符串不为空且不包含任何非数字或字母(包括各国文字)的字符时返回True,否则返回False。

13.isalpha() 字符串不为空且其中的全部字符都是字母(包括各国文字)时返回True,否则返回False

14.isdecimal() 字符串不为空且其中的字符全部是数字时返回True,否则返回False。

15.islower() 字符串中的字母全部是小写字母时返回True,否则返回False

16.isupper() 字符串中的字母全部是大写字母时返回True,否则返回False

17.isspace() 字符串中的字符全部是空格时返回True,否则返回False

18.ljust() 当字符串长度小于width时,在字符串末尾填充fillchar,使其长度等于width。默认填充字符为空格

19.rjust() 与ljust()方法类似,只是在字符串开头填充字符

20.lower() 将字符串中的字母全部转换成小写

21.upper() 将字符串中的字母全部转换成大写

22.lstrip() 未指定参数chars时,删除字符串开头的空格、回车符以及换行符,否则删除字符串开头包含在chars中的字符

23.rstrip() 未指定参数chars时,删除字符串末尾的空格、回车符以及换行符,否则删除字符串末尾包含在chars中的字符

24.strip() 未指定参数chars时,删除字符串首尾的空格、回车符以及换行符,否则删除字符串首尾包含在chars中的字符

25.partition() 将当前字符串从sep第一次出现的位置分隔成3部分:sep之前、sep和sep之后,返回一个三元组。

26.rpartition() 与partition()类似,只是从当前字符串末尾开始查找第一个sep

27.replace() 将当前字符串包含的old字符串替换为new字符串,省略count时会替换全部old字符串。

28.split() 将字符串按照sep指定的分隔字符串分解,返回包含分解结构的列表。

29.swapcase() 将字符串中的字母大小写互换

30.zfill() 如果字符串长度小于width,则在字符串开头填充0,使其长度等于width

字符串的格式化:用“%”表示

基本格式:格式字符串 % (参数1,参数2……)

格式控制符 说明

s 将非str类型的对象用str()函数转换为字符串

r 将非str类型的对象用repr()函数转换为字符串

c 参数为单个字符(包括各国文字)或字符的Unicode码,将Unicode码转化为对应的字符

d、i 参数为数字,转换为带符号的十进制整数

o 参数为数字,转换为带符号的八进制整数

x 参数为数字,转换为带符号的十六进制整数,字母小写

X 参数为数字,转换为带符号的十六进制整数,字母大写

e 将数字转换为科学计数法格式(小写)

E 将数字转换为科学计数法格式(大写)

f、F 将数字转换为十进制浮点数

g 浮点格式。如果指数小于-4或不小于精度(默认为6)则使用小写指数格式,否则使用十进制格式。

G 浮点格式。如果指数小于-4或不小于精度(默认为6)则使用大写指数格式,否则使用十进制格式。

格式控制符的基本格式:%[name][flags][width[.precision]]格式控制符

name为圆括号括起来的字典对象的键

width指定数字的宽度

precision指定数字的小数位数

flags为标识符:

“+”:在数值前面添加正数(+)或负数(-)符号。

“-”:在指定数字宽度时,当数字位数小于宽度时,将数字左对齐,末尾填充空格。

“0”:在指定数字宽度时,当数字位数小于宽度时,在数字前面填充0。和“+”“-”同时使用时,“0”标识不起作用。

“ ”:空格,在正数前面添加一个空格表示符号位。

bytes字符串:一个不可变的字节对象序列,是一种特殊的字符串

bytes字符串用前缀“b”表示

在bytes字符串中只能包含ASCII码字符

bytes字符串支持各种字符串操作。

不同之处在于,当使用索引时,bytes字符串返回对应字符的ASCII码

可将bytes字符串转换为十六进制表示的ASCII码字符串。

四、数据类型操作

类型判断:用type()函数查看数据类型

类型转换:转换整数int()、转换浮点数float()、转换字符串str()和repr()

组合数据类型

一、集合(set):Python 2.4引入的一种类型

集合的特点:

集合常量用大括号表示。

集合中的元素具有唯一、无序和不可改变等特点。

集合对象支持求长度、判断包含、求差集、求并集、求交集、求对称差和比较等集合运算

集合对象元素的值不支持修改,但可以复制集合、为集合添加或删除元素

冻结集合(frozenset)

冻结集合是一个不可改变的集合,可将其作为其他集合的元素。

冻结集合的输出格式与普通集合不同

二、列表(list)

列表的特点:

列表常量用方括号表示

列表可以包含任意类型的对象:数字、字符串、列表、元组或其他对象。

列表是一个有序序列。与字符串类似,可通过位置偏移量执行索引和分片操作。

列表是可变的。列表的长度可变,即可添加或删除列表成员。列表元素的值也可改变。

每个列表元素存储的是对象的引用,而不是对象本身,类似于C/C++的指针数组。

基本操作:

创建列表、求长度len()、合并+、重复、迭代for in、关系判断(in操作符)、索引、分片

列表的常用方法:

添加单个数据append()、添加多个数据extend()、插入数据insert()、按值删除数据remove()、按位置删除pop()、

用del语句删除、删除全部数据clear()、复制列表copy()、列表排序sort()、反转顺序reverse()

三、元组(tuple)

元组的特点:

元组常量用圆括号表示

元组可包含任意类型的对象。

元组是有序的。元组中的对象可通过位置进行索引和分片。

元组的大小不能改变,即不能为元组添加对象,也不能删除元组中的对象。

元组中的对象也不能改变。

元组中存储的是对象的引用,而不是对象本身。

基本操作:

创建元组、求长度len()、合并+、重复、迭代for in、关系判断(in操作符)、索引、分片

元组的常用方法:

count() 用于返回指定值在元组中出现的次数

index() 未用start和end指定范围时,返回指定值在元组中第一次出现的位置

四、字典(dict):无序的映射集合,包含一系列的“键:值”对

字典的特点:

字典常量用大括号表示

字典的键名称通常采用字符串,也可以用数字、元组等不可变的类型。

字典的值可以是任意类型。

字典也可称为关联数组或散列表,它通过键映射到值。字典是无序的,它通过键来访问映射的值,而不是通过位置来索引。

字典属于可变映射,可修改键映射的值。

字典长度可变,可为字典添加或删除“键:值”对。

字典可以任意嵌套,即键映射的值可以是一个字典。

字典存储的是对象的引用,而不是对象本身。

基本操作:

创建字典、求长度len()、关系判断(in操作符)、索引

字典的常用方法:

clear() 删除全部字典对象

copy() 复制字典对象

get() 返回键key映射的值。如果键key不存在,返回空值

pop() 从字典中删除“键:值”对,并返回映射值

popitem() 从字典删除最后一个“键:值”对,同时返回“键:值”对元组

setdefault()返回映射值或者为字典添加“键:值”对

update() 为字典添加“键:值”对,已存在同名的键,则映射值被覆盖

字典的视图:

items() 返回“键:值”对视图

keys() 返回字典中所有键的视图

values() 返回字典中全部值的视图

五、迭代和列表解析

迭代

字符串、列表、元组和字典等对象均支持迭代操作,可调用iter()函数生成迭代器。

对迭代器调用next()函数,可依次返回可迭代对象的元素,无数据返回时,会产生StopIteration异常

文件对象支持迭代操作

列表解析

基本结构:表达式 for 变量 in 可迭代对象 if 表达式

1.带条件的列表解析

2.多重解析嵌套

3.列表解析用于生成元组

4.列表解析用于生成集合

5.列表解析用于生成字典

6.列表解析用于文件

7.其他的列表解析应用

六、组包和拆包

        

# 拆包
# 注意:拆包时,容器中的元素个数要和变量个数相同
# a1,a2,a3,a4,a5 = a
# a1,a2,a3,a4,a5 = [1,2,3,4,5]
# a1,a2,a3,a4,a5 = 'abcde'
a1,a2,a3,a4,a5 = {'a':1,'b':2,'c':3,'d':4,'e':5}
print(a1,a2,a3,a4,a5)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值