Bootstrap

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文件。

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

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

;