变量,注释与数据类型

第一段 代码注释

在写代码时需要注意每段代码的注释,这是非常重要的,一段好的注释可以让你快速理解并修改或使用代码行

1. 单行注释

#这是条注释,单行注释用#号,注释使用于介绍代码用处

例如:

#打印输出 Hellow World
print("hellow world")

输出结果: hellow world

2. 多行注释,我们使用三个双引号开始和结束 或 使用三个单引号开始和结束

一般用于当一行解释不完的时候,可以分多段解释代码用处

(注意 这俩并没有什么不同 使用结果都是为了注释 只是个人习惯可以选择三单引号或三双引号)

例如:

'''
这里我写个三单引号开头
三单引号结尾的多行注释
'''"""
这里我写个三双引号开头
三双引号结尾的多行注释
"""

第二段: 运算符

简单来说就是一些用来算数或对比的符号啦

1.算术运算符

这是最简单的一般为数学的加减乘除一类

操作符 说明 示例
+ 普通的加法 1+1
- 普通的减法 1-1
* 普通的乘法 2*2
/ 普通的除法 4/2
// 整除 除法但是只会有整数 不会出现小点数 3//4
** 幂 (等会有个示例解释) 3**4
% 取余 就是先除两个数 然后剩下的数字拿出来 10%2

示例:

#+ 加法                                       #- 减法
#一个数字加上另一个数字                        #一个数字减去另一个数字
print(1 + 2) # 3                              print(2 - 1) # 1#* 乘法                                        #/ 除法
#数字乘数字                                    #数字除数字
print(2 * 2) #4                               print(3 / 4) #0.75#// 整除                                      #** 幂
#除法,但不会有小数点出现,整数是多少就是多少    #一个数字的乘方
print(3 // 4) # 0                             print(3 ** 4) # 81#% 取余
#进行除法 剩下的结果为取余的结果
print(10 % 8) # 2       

2. 比较运算符

就如名所言 就是比较数据之间的符号, 这类符号返回的结果 只有true和false,代表对与不对

符号 说明 示例
> 大于号 1 > 2
< 小于号 1 < 2
>= 大于等于号 1 >= 1
<= 小于等于号 1 <= 1
== 等于号 1 == 1
!= 不等于号 1 != 1

直接看有点绕 下面直接看示例:

#>
print(1 > 2)
#这里为false因为1不大于2
结果: False#<
print(1 < 2)
#这里为True因为1小于2
结果: True#>=
print(1 >= 1)
#这里为True,因为它是当1大于或等于1时就是对的
结果: True#<=
print(1 <= 1)
#这里为True,因为它是当1小于或等于1时就是对的
结果: True#==
print(1 == 1)
#这里为True,因为它是当1等于时1就是对的
结果: True#!=
print(1 != 1)
#这里为False,因为这里表示1不等于1
结果: False

3.逻辑运算符

或与非 这里还是示例里看 比较容易明白, 他们返回的也只有True和False

符号 说明 示例
and  (1 < 2) and (2 > 1)
or (1 < 2) or (2 > 1)
not not (1 > 2)

示例:

#and 与
#当两个判断都是正确时 才会返回True
print(2 > 1) and ( 1 < 2)结果为True,因为两个判断都是正确的#or 或
#当两个判断里有一个为正确时 就会返回True
print(1 < 2) or (1 > 2))结果为True,因为第一个判断时正确的#not 非
#它会返回给你不正确的回答,比如结果时True它就给你False
print(not 1 > 2)结果为True,因为它按正常来说会返回False,但是我们用了not结果就强制变成反的了

4.位运算符

这个运算符目前难理解 而且不被常用 有需要的自己查查看吧

5.三元运算符

就是用一行完成一个判断 现在只需有个理解 后面学if的时候 就可以玩玩看了

示例:

#不用三元运算符的判断
if 4 < 5:#small是个变量后面会有讲small = 4
else:small = 5print(small) 结果为4#用三元运算符的判断
#不怎么推荐常使用,用多了会把自己写蒙掉
#如果if后的判断为True的话 small就是4 不然small等于5
small = 4 if 4 < 5 else 5print(small) 结果为4

6.其他运算符

其他的还有是与不是和在于不在

符号 说明 示例
in 在内 1 in [1,2,3]
not in 不在内 1 not in [1,2,3]
is 1 is 1
is not 不是 1 is not 1

示例:

#下面这是一个列表,后面会学到的现在只要看看就好
a = [1,2,3]#在内
#判断一个数据是否存在
print(1 in a)结果为True,1确实是存在与a的数据内的#不在内
#判断数据是否不在内
print(1 not in a)结果为False,因为1存在于a的数据内#是与不是
#判断数据是不是相同内存地址的,内存地址是数据在电脑内的存在位置
#当数据类型为不可变类型时 若内容一样返回为True,这时它们和==,!=号是一样的
a = 'Hellow'
b = 'Hellow'
#是
print(a is b) #True
#不是
print(a is not b) #False#当数据类型为可变类型时,就算内容一样返回为False,这时它们和==,!=返回的结果就不一样了
a = ['Hellow']
b = ['Hellow']
#是
print(a is b) #False
#不是
print(a is not b) #True

结尾:运算符间的优先级

运算符 描述
** 指数(最高优先级)
~+- 按位翻转,一元加号和减号
* / % // 乘,除,取模和取整除)
+ - 加法减法
>> << 右移,左移运算符
& 位‘AND’
^| 位运算符
<=<>>= 比较运算符
<>==!= 等于运算符
=%=/=//=-=+==*= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

第三段:变量与赋值

变量就好比如一个空的箱子,你得先放东西进去才能跟别人说这箱子里有东西

注意点:

  1. 使用变量前要对其进行赋值
  2. 变量名可以包括数字,字母,下划线但是不可以以数字开头
  3. python是区分大小写的,bin变量和Bin变量是不同的

示例:

#简单的变量赋值
#现在hellow里有你好这个数据
hellow = '你好'#我们打印hellow,就会输出你好这个数据
print(hellow)结果为你好#我们也可以多重打印变量
#例如 a 是 你好, b 是 陈总
a = '你好'
b = '陈总'
c = a + b#这样我们打印出的结果就是两个变量的结合了
print(c)结果为你好陈总#你也可以用加号在打印时增加空格或其他符号,但是必须是字符串类型 字符串就是在''内的数据
#例如
print(a + ',' + b)结果为你好,陈总

第四段:数据类型与转变

数据的类型

类型 名称 示例
int 整型 只要数据没有小数点就是整型    1,2,3,4,5 等等
float 浮点型 只要数据有小点数就是浮点型    1.2,2.2 等等

bool

布尔型 就是对与错类型        True,False

我们可以使用type方法来查看一个变量的类型,各类数据都有自己的不同的方法和属性,如果要使用的可以去查找对应的文档,就是网络上找找这类型支持什么方法和怎么使用

#设置3个不同类型的变量a = 1
b = 'hellow'
c = True#此时我们打印它们的type方法
print(type(a))
print(type(b))
print(type(c))#结果依次为
class int
class str
class bool#bool类型,在编程中其实就代表着1和0,True为1,False为0
#所以我们可以直接用它来进行算法,但并不会有人这么做
print(True + 1) # 2
print(False + 1) # 1
print(True + False) # 1#bool类型在各类类型的变量中也有不同的变化
#如果类型时基本类型,而且变量内容为0,0.0或False时
#只要内容为0那就是False
#返回结果就是False
a = 0
b = 0.0
c = False#结果依次为
False
False
False#在容器类型里那只要时空字符串或空内容就会返回False
a = ''
b = []
c = ()#结果依次为
False
False
False

如果你是要判断两个数据类型是否相同,推荐使用isinstance方法,这个方法是会考虑继承的

继承是什么后面会说到,但应该不是这一篇

#示例
a = 1
c = '3'
d = True#判断a是否时int类型
print(isinstance(a,int))
结果 True#判断a是否为str类型
print(isinstance(a,str))
结果 False#判断c是否为str类型
print(isinstance(c,str))
结果 True#判断d是否为bool类型
print(isinstance(d,bool))
结果 True

类型转换

顾名思义 就是将一个类型转变成另一个类型

直接上示例:

#转变Int类型到其他
#变成str类型
a = 1
b = str(a)print(b) #输出为1但是时str类型的#变成float类型
c = float(a)print(c) #输出为1.0 因为变成float浮点型了#转变str类型到其他
#需要注意内容得是数字类型的,不可以时字母类
a = 'a'
#这是不可以的 因为a不是数字
print(int(a))#可行用法
a = '1'print(int(a)) #输出为1 Int类型
print(float(a)) #输出为1.0 float类型#转float类型到其他
#与Int类型一致
#变成int类型
a = 1.0
print(int(a)) #输出为1 int类型
print(str(a)) #输出为1.0 str类型

第五段:print()函数,也称打印函数

我们一直都在使用,但是没有使用它的方法,例如换行,结尾参数等等

示例:

#当我们使用循环时 如果没有end或sep参数的话 每次打印都会经常换行
#现在不需要理解 循环待会会讲 目前使用就是为了将一个列表里的数据依次打印而已
a = ['ali','yun','hao']
for daying in a:print(daying)结果为:
ali
yun
hao#但我们使用加入end后 就不会进行换行而是在每个数据后加入指定符号
for daying in a:print(daying,end='>')结果为:
ali>yun>hao#sep参数是为了隔开数据与数据直接而使用的,所以没有end参数的话 它就会默认跳行
for daying in a:print(daying,'niubi',sep='=')结果为:
ali=niubi
yun=niubi
hao=niubi

还有些例如file定义输出的文件或者flush立即把内容输入进文件而不做缓存等等,自己有空可以自行理解理解

位运算

先不做 基本不会使用的东西 只要看看就好

条件语句

这是变成中最重要也是最长出现的,需要点逻辑能力

1. 单if语句 格式:

if 判断语句:

        执行代码块

判断语句就是我们说的真与假,True或False,示例会详解

执行代码块就是当判断语句为真时,才会执行的代码

示例:

#这里1大于2是错误的 是False所以不会打印
if 1 > 2:print('对的')结果为: 空#这里2是大于1的所以会打印
if 2 > 1:print('对的')结果为: 对的

2.if-else 语句 格式:

if 判断语句:

        执行代码块

else:

        执行代码块

else这个语句一般都是和if语句一起出现的,表示的是当if的代码块不执行的时候,必定执行else里的代码块

示例:

#这里是执行if的代码块的时候
if 1 < 2:print('对的')
elseprint('错的')结果为: 对的#这里是当if判断为错,也就是False时,就会打印else里的代码块
if 1 > 2:print('对的')
elseprint('错的')结果为: 错的

if语句它是支持嵌套的,就是可以在if语句里再次使用if语句

示例:

#嵌套if语句的话 永远时先判断外if语句再判断内if语句的
#而且python很注重缩进,所以得注意各个语句的位置,缩进就是tab键给的空间
#这里写个买东西的案例#这个a东西价值100快钱
a = 49#如果小于100的话
if a < 100:#小于100我就考虑print('考虑考虑')#小于或等于50的话if a <= 50:#我就买了print('狠心,我买了')#小于100但大于50的话else:#我就继续考虑print('还是考虑考虑')
#大于100的话
else:#我直接就不买print('贵的吓死鬼啊')#我们考虑的是小于50的情况输出就会是
#先判断是否小于100
结果为:True#在判断是否小于50
结果为: True#这样的话,输出结果就是
考虑考虑
狠心,我买了

3.IF-ELIF-ELSE 语句: 格式:

if 判断语句:

       执行代码块

elif 判断语句:

        执行代码块

else:

        执行代码块

这里这种就是个多重选择结构,不再是单一的如果不是1就是0的概念,它现在也可以是3或4或更多的判断了

这里为了方便,我们也学习下新的方法,INPUT输入方法。

INPUT方法是运行用户输入数据的方法,它将用户的数据保存在一个变量里进行使用

我们可以用它进行不同的判断使用

示例:

#这里我们用付钱为判断条件
#我们先使用input来对包进行一个估价
bao = input('大概多少钱');#现在他开始运行时 会先问用户大概多少钱
#然后用户输入的价格会变成bao这个变量里的数据
大概多少钱 100#这个时候bao就是等于100了#现在我们判断第一个,包是否在50之内
if bao < 50:print('我买了')#现在第二个判断,是否在50之上且小于100时,这时在我们有个if而且同级,可以用elif做第二或之后的判断
elif bao > 50 and bao < 100:print('我考虑考虑')#现在当第一第二都为错误时,就打印个数据
else:print('我不买了')

同样if elif这个也是可以进行嵌套的

4.assert关键词

这个关键词被称为断言,就是当它的判断为False的时候 就是强制终止运行然后打印出AssertionError这个错误信息

一般被使用为检查点,用来检测一段代码是否运行正确或结果是否为自己想要的

下面我会用循环语句进行演示,循环在下个阶段会讲

示例:

#数学题 1+1+1+1+1+1... 10次后等于多少
#然后我现在就当是个逗逼不会算数 不会1*10只能111这样加上去
#我要怎么知道它有没有超过10呢
#assert关键词你值得拥有n = 1for n in range(10):n = n + 1assert n <= 10#这里是只有n大于10时 就是打印出错误信息
#而且当它打印出错误信息时就会终止循环

循环语句

循环语句就是用来重复执行一段代码的语句,可以根据指定次数来执行代码

1.While循环

while循环语句跟if语句的写法格式很像,就是里面的代码在判断为false之前 不会停止

格式:

while 判断语句:

         执行代码块

记住一件事,while判断语句可以是一个str字符串或list列表,而如果返回值为0的话 就会结束循环

示例:

#记得我们1+1+1+1的数学题吗
#我们再来用一次#while循环在判断语句不变成false之前会一直执行代码块
a = 1while a <= 10:print(a)a = a + 1#这个状态下的a直到变成10为止,这个循环都不会停
#打印结果
1
2
3
4
5
6
7
8
9
10#这里就停止循环了#字符串也可以用来当循环的判断语句
#当是字符串为判断类型时,得记得设置个出口,也就是有个能停止它的变量,不然会进死循环
string = 'abcd'
while string:print(string)#这个写法是每次进行一次循环就会把前面一个字母去掉再把后面的字母赋值给string变量string = string[1:]#输出结果
abcd
bcd
cd
d#输出完d后string里就没数据了,就停止循环了

2.While-Else循环

其实跟if-else语句很类似,就是结束循环后再执行else里的代码块,但是需要注意如果我们使用break强制结束循环运行的话 那么else里的代码就不会被执行

格式:

while 判断语句:

        执行代码块

else:

        执行代码块

示例:

#我们拿上面的第二个例子来做这一个的例子
string = 'abcd'
while string:print(string)#这个写法是每次进行一次循环就会把前面一个字母去掉再把后面的字母赋值给string变量string = string[1:]
else:print('ok')#运行结果还是和上面一样但是会在结束后打印ok
abcd
bcd
cd
d
ok#如果我们使用break打断就不会执行else的代码
string = 'abcd'
while string:print(string)#这个写法是每次进行一次循环就会把前面一个字母去掉再把后面的字母赋值给string变量string = string[1:]#这里我们使用if语句来使用break,当string里的值为空时强制终止循环if string == '':break
else:print('ok')#运行结果就会失去ok这个输出
abcd
bcd
cd
d

3.For循环

这也是我们再代码中会经常看到的语句,它与while很小但是它是一种迭代循环。就是它是将每个数值当一个独立个体打印使用的。

示例:

#for循环打印
a = 'abcde'#这个i是个迭代变量,它每循环一种就会变化一次,我们a里的五个字母这个i会一个一个变化过去
for i in a:#比如第一次循环i就是a,然后下一次循环就是b,这样理解的,当没数据是结束循环print(i)#输出结果就是:
a
b
c
d
e#如果想不跳行 可以使用end方法
for i in a:print(i,end=' ')#打印结果就是:
a b c d e

这个for循环可以使用在字符串里 也可使用range语句来转换成数字

range语句就是一定范围的判断语句

格式:

for i in range(范围):

        执行代码块

#range有个限制就是包头不包尾
#就是它结束的时候永远是结束范围的前一个数
#比如我要0,100的范围 他就只会打印到99
#这个打印范围你是可以自定义的但是不可以是负数,因为负数里的-会被判断为字符串,就会报错
for i in range(0,6):#打印i因为现在它会随着range的改变而改变 我们没循环一次就打印一次就可以看出它循环了几次print(i)#打印结果为:
0
1
2
3
4
5

这里我们来写个稍微复杂点的逻辑问题

确定一段距离,且输出的数字不是质数,然后打印出他的乘法

示例:

#质数就是除了1和它自己以外不可以被整除的数字
#第一步选取范围
for num in range(10,20):#第二步因为不能是质素我们不能从1开始,所以我们从2开始计算for i in range(2,num):#现在我们先确认它是个不是个质数if num % i == 0:#现在来得到它的乘法段,也就是这个i乘多少才是num的数字j = num/i#输出结果print(num,'等于',i ,'*', j)#打断循环break#如果是个质数就打印出来else:#是质数的打印结果print(num, '是个质数')#打印结果就为10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数

4.range() 函数

range函数就是我们之前使用的一段范围内进行循环的函数。但是我们使用的只是基础版,它还具有其他参数。

格式:

range([start, ] stop[, step=1])

在[]里的参数是可写可不写的,不写的话默认为最低,start最低为0,step最低为1

range就象之前说的它是包头不不包尾的

step这个参数是用来跳段的,我们在示例里在做介绍

示例:

#简单的range函数
#这样写的花它默认是从2开始计算的
for i in range(2,9):print(i)#输出结果
#包头不包尾,所以2输出了,9没了
2
3
4
5
6
7
8#使用了stp参数的range
#就是每隔指定数就跳过执行
for i in range(0,10,2):print(i)#我们可以想象成每数2下就跳过下个数字
#0是1,接下来1是2,我们就跳过,2是1,接下来3是2,我们就跳过
#step为其他数字时同理
0
2
4
6
8

6.enumerate()函数

它是可以给返回结果添加一个下标值的函数,下标就是一个数据在列表中的位置

列表我们后面再学

格式:

enumerate(sequence,[start=0])

[]内的都是可有可不有的参数

sequence可以是一个序列,一个迭代器或者一个函数支持的迭代对象

一般sequence里就是我们所说的列表,元组啊这些东西了

示例:

#简单的enumerate函数的运用
#这是个列表,每个数据都有它的下标位置,但是平常我们看不到
#下标开始值为0,这里大皇子就是0这个下标的位置
content = ['大皇子','二皇子','三皇子','四皇子']
content = list(enumerate(content))print(enumerate(lst))#输出结果为
[(0,'大皇子'),(1,'二皇子'),(2,'三皇子'),(3,'四皇子')]#这里我们让下标从1开始,注意它不会改变下标真实的位置,只是打印的时候从1开始而已
content = list(enumerate(content, 1))#输出结果为
[(1,'大皇子'),(2,'二皇子'),(3,'三皇子'),(4,'四皇子')]

我们还可以把enumerate和for函数结合使用,在每次打印时,顺便打印出个下标给结果

格式:

for i, a in enumerate(A):

do something with a

示例:

#简单的for打印
languages = ['python','c','c++']for i in languages:print(languages)#输出结果
python
c
c++#使用了enumerate函数的for函数
#这里的i就是enumerate里开始的下标位置
#这里的a就是languages里的数据
for i, a in enumerate(languages,1):#我们打印出每次i的数字和a的数据print(i,' 我爱 ',a)#输出结果为
#当languages里的数据全部打印出来后就会结束循环了
1 我爱 python
2 我爱 c
3 我爱 c++

7. break语句

我们之前也使用过,它是用来强制结束当前层的循环的

示例:

#使用for来看break如何运作的
#我们让它循环10次
for i in range(10):print(i)#当数字等于5的时候,我们强制结束循环if i == 5:break#输出结果为
0
1
2
3
4
5
#5后面的就不输出了,为什么会输出5呢 因为我的print在break之前,如果在之后5就不会打印了

8.continue语句

这个语句和break的区别就是 它会选择跳过循环而不是中止循环

示例:

#还是之前的for写法
for i in range(10):#当i为5的时候跳过此次循环if i == 5:continue#这次我们把print放后面,不然这个5会先打印,那么这个continue就没有意义了print(i)#输出结果为
0
1
2
3
4
6
7
8
9
#这样子5就被跳过了,后续还是会被执行的

9.pass语句

这个语句是占位语句,就是一个函数内需要语句而你不给的话就会报错,而pass就是为了让它不报错而存在的

示例:

#还是之前的for写法
for i in range(10):#如果我现在if里面不写执行代码块的话,它就会报错#但是我现在添加了个pass语句,就相当于它在这,但是不会被使用#是不是很像你咸鱼偷懒的样子 嘿嘿if i == 5:pass#输出结果为
0
1
2
3
4
5
6
7
8
9
#由于if里是个pass里面并没有要执行的代码块,那么这时他就是普通打印for了

10.推导式

推导式可以让我们从一个数据序列构建出另一个不同的数据序列

列表推导式:

格式:

[执行代码 for 值 in 序列 [if 判断语句]]

[]内的时可有可不有的

示例:

#普通列表推导式
#先定义个列表
ls = [1,2,3,4,5,6]
#现在写推导式,它会将列表里的内容重新赋值给另一个列表里
ls2 = [a * 2 for a in ls]
#先在每个数都会乘于2,然后以列表的方式放进ls2里
print(ls2)#输出结果为
[2,3,6,8,10,12]#可能有点难理解,但是记住python时从右到左赋值的
#也就是说可以理解为,它把ls的内容放到了a里,然后做了个循环每次把a的内容乘2然后放进ls2里#使用range()函数
ls3 = [a * 2 for i in range(10)]#输出结果
[0,2,4,6,8,10,12,14,16,18]#加入了if判断的推导式
ls4 = [i for i in range(10) if (i%2) == 0]#输出结果
[0,2,4,6,8]#多重数据的列表
#下面我们是在将a和b都进行了循环赋值
#注意一点,多重循环时,循环方式是外层循环一次内层循环完整,外层再继续下个循环,再内层循环完整
ls5 = [(a,b) for a in range (3) for b in range(3)]
print(ls5)#看下面是不是a显示三个0,然后b是0,1,2,然后a才变成了1,b还是0,1,2
#这就是外层和内层的循环顺序
[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

元组推导式:

和列表推导式是一样的道理,就是从列表变成了元组。

示例:

#列表用的是[],元组是()
ls = (a*2 for a in range(10)print(ls)#结果为
0
2
4
6
8

字典推导式

字典这个写法是作为键值对出现的,就是有个类似列表和元组,但是有个键让我们可以查询这个键所拥有的值

格式:

{键:值 for 迭代变量 in 序列 [if 判断语句]}

示例 :

#字典推导式其实就是列表或元组推导式加个键和用{}
#下面这个理解是,0到9的数字,i为0到9的变化
#先判断数字取余2是否为零,是的话值的数据就是True或False
#然后这些数字里取余3是否为0
#都符合的或就输出
dict = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}print(dict)#输出结果
{0: True, 3: False, 6: True, 9:False}

集合推导式

集合是一种去重的类型,就是在它的数据里不存在重复的数据

示例:

#很直接的示例
#这里有很多重复的数字,我们可以用推导式去重
ls = [1,2,3,4,5,6,7,7,6,5,4,3,2,1]list2 = {i for i in ls}#输出结果
{1,2,3,4,5,6,7}

其他推导式:

还有些类似于迭代推导式或者算法推导式的

next(迭代对象)

示例:

#迭代next就是当我们使用它进行列表的数据打印后
#之后如果我们用for或while之类查询的话,被next打印过的结果不会再被执行
#就好像这个值被取出了,不会再被取出
ls = (i for i range(10))
print(ls)(0,1,2,3,4,5,6,7,8,9)#这个时候0和1就被取出了,后面再次循环时就不会出现这些数据了
print(next(a)) #0
print(next(a)) #1#现在我们对ls执行个for的循环
for i in ls:print(i, end=' ')#打印结果为
2 3 4 5 6 7 8 9#算法推导式
ls2 = sum([i for i in range(101)])#这个结果就是ls2里每次循环的数加起来的结果
print(s) #5050

异常结果

异常就是运行时出错时输出的错误信息,在计算机语言里我们可以定义当出错时执行的代码块

1.Python 标准异常总结

以下是我们平时可能会出现的常见异常

  • BaseException:所有异常的 基类
  • Exception:常规异常的 基类
  • StandardError:所有的内建标准异常的基类
  • ArithmeticError:所有数值计算异常的基类
  • FloatingPointError:浮点计算异常
  • OverflowError:数值运算超出最大限制
  • ZeroDivisionError:除数为零
  • AssertionError:断言语句(assert)失败
  • AttributeError:尝试访问未知的对象属性
  • EOFError:没有内建输入,到达EOF标记
  • EnvironmentError:操作系统异常的基类
  • IOError:输入/输出操作失败
  • OSError:操作系统产生的异常(例如打开一个不存在的文件)
  • WindowsError:系统调用失败
  • ImportError:导入模块失败的时候
  • KeyboardInterrupt:用户中断执行
  • LookupError:无效数据查询的基类
  • IndexError:索引超出序列的范围
  • KeyError:字典中查找一个不存在的关键字
  • MemoryError:内存溢出(可通过删除对象释放内存)
  • NameError:尝试访问一个不存在的变量
  • UnboundLocalError:访问未初始化的本地变量
  • ReferenceError:弱引用试图访问已经垃圾回收了的对象
  • RuntimeError:一般的运行时异常
  • NotImplementedError:尚未实现的方法
  • SyntaxError:语法错误导致的异常
  • IndentationError:缩进错误导致的异常
  • TabError:Tab和空格混用
  • SystemError:一般的解释器系统异常
  • TypeError:不同类型间的无效操作
  • ValueError:传入无效的参数
  • UnicodeError:Unicode相关的异常
  • UnicodeDecodeError:Unicode解码时的异常
  • UnicodeEncodeError:Unicode编码错误导致的异常
  • UnicodeTranslateError:Unicode转换错误导致的异常

2.Python标准警告总结 

这是警告类型的异常报告输出

  • Warning:警告的基类
  • DeprecationWarning:关于被弃用的特征的警告
  • FutureWarning:关于构造将来语义会有改变的警告
  • UserWarning:用户代码生成的警告
  • PendingDeprecationWarning:关于特性将会被废弃的警告
  • RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
  • SyntaxWarning:可疑语法的警告
  • ImportWarning:用于在导入模块过程中触发的警告
  • UnicodeWarning:与Unicode相关的警告
  • BytesWarning:与字节或字节码相关的警告
  • ResourceWarning:与资源使用相关的警告

 3.try - except语句

这就是我们使用自定义异常报告输出的方式

格式:

try:

         检测代码块

except 异常类型[as 别名]:

        出现异常后的处理代码

执行顺序:

1.执行try语句内的代码块,如果可以正常运行就忽略except的语句

2.如果发现异常,终止try的运行并执行except的代码块

3.如果这个异常不和任何except异常类型对应的话,就把异常传给上层的try语句中

示例:

#尝试执行try内的代码块
try:f = open('out.txt')print(f.read())f.close
#如果try代码块出现对于异常就执行except代码块,这次的类型得是文件出错类型
except OSError:print('Error Open')#执行except并且抛出异常的默认报错信息
#尝试执行try内的代码块
try:f = open('out.txt')print(f.read())f.close
#如果try代码块出现对于异常就执行except代码块,这次的类型得是文件出错类型
except OSError as error:print('Error Open',error)#输出结果为
Error Open
原因是: [Error 2] No such file or directory: 'test.txt'

一个try语句也是和if差不多的,可以是多分支的,也就是他跟if-elif差不多

但是它只会执行第一个发现的异常的错误

示例:

#现在执行try里的代码块
try:int("abc")s = 1 + '1'f = open('test.txt')print(f.read())f.close()
except OSError as error:print('打开文件出错\n原因是:',str(error))
except TypeError as error:print('类型出错\n原因是:',str(error))
except ValueError as error:print('数值出错\n原因是:',str(error))# 数值出错
# 原因是:invalid literal for int() with base 10: 'abc'

我们也可以使用try-except-else来使用

示例:

#这里我们创建个字典
dict1 = {'a': 1, 'b': 2, 'v': 22}
#执行try内代码块
try:#尝试给x赋值字典里a键的数据x = dict1['a']
except KeyError:print('键错误')
except LookupError:print('查询错误')
else:print(x)#如果没有发生异常的话它会执行else里的代码块
#输出结果为
1

一个except里可以同时处理多个异常,可以被放在一个括号里变成个元组

示例:

#执行try内代码块
try:s = 1 + '1'int("abc")f = open('test.txt')print(f.read())f.close()
#当出现任何一个对应的异常时,打印代码块加上异常的默认报错信息
except (OSError, TypeError, ValueError) as error:print('出错了!\n原因是:' + str(error))# 出错了!
# 原因是:unsupported operand type(s) for +: 'int' and 'str'

4.try - except - finally 语句

try:检测范围 except Exception[as reason]:出现异常后的处理代码 finally:不管怎么样都要执行的代码

如果一个try语句被抛出,而且没有except把它截住,那么这个异常就会被finally语句执行

示例:

#执行try语句内的代码块
#这个代码块执行并不会报错,因为它的代码都是正确运行的
try:result = 2 / 1print("result is", result)except ZeroDivisionError:print("division by zero!")finally:print("executing finally clause")#输出结果为
#这代表着它输出了try里的代码块,也输出了finally里的代码块
result is 2.0
executing finally clause

5.try - except - else语句

和上面的4同理,但是,不是和finally一样必须执行的,如果正确就会执行else里的代码

但是如果报错异常的话,这个else就不会被执行,finally的话就会被执行

注意else语句存在的前提是,必须有except语句在内,如果没有就会发生语法错误

6.raise语句

这个语句使用于抛出指定语句

没什么用就是让你用try抛个错误异常

示例:

#执行try内代码
try:#直接抛NameError这个异常raise NameError('HiThere')
#定义NameError的异常
except NameError:print('An exception flew by!')# An exception flew by!

Python 入门 第一到第三天相关推荐

  1. Python入门——第一章 python编程基础

    Python入门 文章目录 Python入门 第一章 python编程基础 1.1 基本输入输出 1.1.1使用print()函数进行简单输出 chr()函数 print()输出到指定文件 print ...

  2. python入门第一课_入门第一课 Python入门涉及的问题及简单示例

    很多初学者都在问:我想自学Python,该怎样入门?入门选择哪些书籍? 下面,我以自己的理解作出解答. 1.先说明大体的学习进度. Python确实入门较为容易,语法清晰易懂.一旦入了门再想提高就和其 ...

  3. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧

    学习目标 完成显示魔法的使用--输出print 完成传入魔法的使用--输入input 使魔法生效--运行python文件 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 &g ...

  4. Python入门100例(三)

    点击领取粉丝福利 文章目录 前言 1. 题目描述 2. 程序分析 3. 程序源代码 4. 运行结果 5. 难度分析 6. 涉及知识点 结语 前言 本专栏从「基础」的编程知识开始,带你了解「基础算法」以 ...

  5. 蘑菇云【行空板Python入门教程】第三课:多功能提醒器

    多功能提醒器 生活中,我们对于声音并不陌生,美妙动听的音乐令人陶醉,节奏感十足的鸣笛声令人警醒,然而,当音量达到一定的强度,妨碍到人们正常休息.学习和工作,声音就会成为噪音. 与此同时,闹钟在许多小伙 ...

  6. 斯坦福大学教授,推荐Python入门必看的三本书,非常适合零基础

    前言 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有 ...

  7. python入门基础篇(三)序列切片,列表、元组推导式

    前面介绍了列表与元组,在这里补充一下关于列表.元组推导式,以及序列的切片.切片不仅仅用于列表元组,还可以用于字符串等等 文章目录 一.序列切片 二.列表推导式 1.根据列表生成指定需求的列表 2.生成 ...

  8. python入门--第一天

    python初了解 python的火爆程度 数据来源:link 从数据不难看出近几年python的火爆程度在逐年上升,那么学好python这样一个好的工具不仅可以给我们带来升职加薪,同时也意味着pyt ...

  9. python入门第一课练习题_老男孩教育Python 9期第一课练习题答案

    1.使用while循环输入 1 2 3 4 5 6     8 9 10i = 0 while i i += 1 if i == 7: continue else: print(i) 2.求1-100 ...

  10. python入门学习的第三天

    step 1 时间 Python有两个模块,time和calendar,它们可以用于处理时间和日期 首先 import time 导入时间模块 然后 print time.time() 这个叫时间戳, ...

最新文章

  1. python自动翻译小工具_Python实现翻译小工具
  2. python 使用 redis expire属性设置访问时间间隔
  3. Python 根据地址获取经纬度及求距离
  4. 第一阶段:Java基础之异常和处理
  5. 1/4美国理工博士生中途离学 | Science:原因何在?
  6. Linux下Vim工具常用命令
  7. 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2
  8. Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2”
  9. 通过寄生组合式继承创建js的异常类
  10. HTML5期末大作业:学校网站设计——初级中学网站(16页)HTML+CSS+JavaScript 学校网页设计作业 网页设计作业 学生个人设计成品,网页设计作业
  11. Stata资源:一些不错的Stata-Blogs
  12. 手把手教你制作手机离线地图
  13. 项目管理之项目章程和三个重要说明书
  14. 方差分析 球形检验_方差分析的前提,与检验,以及球形检验
  15. java实战我爱自学网,白银java教程我要自学网
  16. win7系统opc服务器配置,win7 设置opc服务器
  17. EMC、EMI、ESD、EMS区别 最清晰的解释送给你
  18. C#:BackgroundWorker的简单使用
  19. 51 nod 1024 矩阵中不重复的元素
  20. 格林深瞳一面、二面、hr

热门文章

  1. pytorch log
  2. STM32的Flash地址是0x08000000,从0x00000000不可以?
  3. 深度研报:回顾「NFT」和「元宇宙」冰火两重天的11月
  4. Python编程定义函数参数的小tips
  5. POI Invalid column index (-5).Allowable column range for EXCEL2007 is (0..16383) or (‘A‘..‘XFD‘)问题解决
  6. 【数据结构:树】——搜索二叉树-K模型(非递归和递归)
  7. 【调度】调度问题的描述分类及特性
  8. 强网杯S6初赛 部分题解
  9. python日常应用——pdf拆分和合并 python PyPDF2
  10. EclipseMaven导入Maven项目后在pom.xml出现Missing artifact org.springframework:spring-jdbc:jar:3.2.4.RELEAS