python的条件判断及异常处理的类型

  • Post author:
  • Post category:python


条件判断及组合:

操作符:

操作符 数学符号 描述
< < 小于
<= 小于等于
>= 大于等于
> > 大于
== = 等于
!= 不等于

用于条件组合的三个保留字:

操作符及使用 描述
x and y 两个都成立才成立,两个条件x和y的逻辑与
x or y 一个成立就成立,两个条件x和y的逻辑或
not x 条件x的逻辑非

and保留字代码示例如下:

guess=eval(input("请输入要猜测的数字:"))
if guess>99 and guess>180:
    print("猜对了")
else:
    print("猜错了")

运行界面如下所示:

img

img

如上所示,当我们输出100的时候,只满足前一个条件,不满足后一个条件,而and保留字要求两个条件同时满足才输出为猜对了,所以只满足一个的话输出为猜错了。

or保留字代码示例如下:

guess=eval(input("请输入要猜测的数字:"))
if guess>99 or guess>180:
    print("猜对了")
else:
    print("猜错了")

运行界面如下所示:

img

img

or保留字,只需要满足一个条件即可,所以输入为100时,只满足于前一个条件,所以即可输出,当输入为200时,两个条件都满足,也输出为猜对了。

not保留字示例代码如下:

guess=eval(input("请输入要猜测的数字:"))
if not guess>180:
    print("猜对了")
else:
    print("猜错了")

运行界面如下所示:

img

img

通过使用not关键字,及对条件的否定,及所猜数字不大于180即为猜对了,大于180即为猜错了。

格式如下:


if not True:

#即为False,这样子的代码表达假的逻辑,不会执行语句块2,只会执行语句块1.


print(“语句块2”)


else:


print(“语句块1”)


程序的异常处理:

代码示例如下:

num=eval(input("请输入一个整数:"))
print(num**2)

运行界面如下:

img

运行程序时,输入了字符串abc,经过eval函数处理,用户输入的abc的两侧的引号去掉,就变成了一个python语句中的变量,python语句中并没有曾经定义过变量abc,所以返回信息提示名字abc的变量是没有被定义的。

与此同时,在该运行界面中,产生异常的相关信息的第1行中的lin 1,提示了错误信息出现的行数。即:

img

第4行说明了异常的类型:
img

该类型为使用了未定义的变量时引发的异常。

同时还有异常类型提示:
img

该提升内容为abc没有被定义。

根据这些描述,我们可以得知。第一行代码没有定义abc,所以我们输入已经定义的整数即可。


异常的类型:

程序运行时出现的异常大多继承自Exception类,而Exception类又继承自异常类的基类BaseException。

BaseException类是所有异常类型的基类,它派生了4个子类:Exception、KeyboardInterrupt、GeneratorExit和SystemExit。

其中Exception是所有内置的、非系统退出的异常的基类;

KeyboardInterrupt是用户中断执行时会产生的异常

GeneratorExit表示生成器退出异常

SystemExit表示Python解释器退出异常


Exception类内置了众多常见的异常。其中经常出现的异常类型如下:


1.NameError:

是程序中使用了未定义的变量时引发的异常

如下所示:


代码示例1:


num=eval(input(“请输入一个整数:”))


print(num**2)

运行如下:



*
img





*

出现的异常类型即为NameError,面对此种异常,即输入为整数,即异常显示。

img

代码示例2:

print(test)

运行界面:

根据错误提示信息可知,错误代码在第一行,类型为NameError,即在程序中使用了没有被定义的变量test,即只要我们对该变量定义即可。

修改的代码示例如下:

test=666
print(test)

运行界面如下:

2

.IndexError

:是程序越界访问时引发的异常

代码示例如下:

num_list=[]
print(num_list[0])

运行界面如图:

img

根据异常信息提示:错误出现在代码的第二行,错误类型为程序越界。

通过程序我们可以得知,第一行代码定义了一个空列表,即里面什么也没有,而在输出的时候,却在索引列表里位置为0的数,即超越了所定义列表的界限。即出现程序越界的异常。

修改后的程序如下:

num_list=[0]
print(num_list[0])

运行程序如下:

img

通过运行我们可知,所定义的列表里面只有一个数,即0,当我们索引列表里面位置为0的数据的时候,运行后输出0

3.

AttributeError:

是使用对象访问不存在的属性引发的异常。

代码如下所示:

class Car(object):
    pass
car=Car()
car.color="黑色"
car.brand='五菱'
print(car.color)
print(car.brand)
print(car.name)

运行界面如下所示:

img

通过给出的异常信息,我们得知异常在第八行代码,即我们在前面没有定义name,而在输出界面进行输出,没有定义即输出,出现了AttributeError错误。

修改的代码如下:

class Car(object):
    pass
car=Car()
car.color="黑色"
car.brand='五菱'
car.name='大众'
print(car.color)
print(car.brand)
print(car.name)

运行界面如图:

img

4

.FileNotFoundError:

未找到指定文件或目录时引发的异常。

代码示例如下:file=open(“test.txt”)

运行界面如下:

根据错误提示信息,我们可以得知,错误代码在第一行,错误类型为FileNotFoundError,即没有找到test.txt文件。

在本地添加这个文件后,我们可以得到运行如下:

我们可以根据错误提示信息里面的地址找到后进行添加该文件即可,添加后,再次运行异常即可消除。



版权声明:本文为weixin_59448049原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。