异常
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。
每当发生让Python不知所措的错误时,它都会创建一个异常对象。
如果你编写了处理该异常的代码,程序将继续运行;
如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常是使用try-except代码块实现的。出现异常
要么运行你编写的异常如何解决的代码,要么运行系统自带的错误提示,traceback
处理ZeroDivisionError 异常
# 代码所有:cxw
# 开发时间:2021/11/11 18:46
'''print(5/0)'''
#ZeroDivisionError: division by zero ZeroDivisionError是一个异常对象
#python无法按照你的要求做时,将会创建这种对象,python会停止运行
#使用try-expect 解决异常
try:
print(5/0)
except ZeroDivisionError:
print("无法运算,错误")
#这是解决异常给出的代码块,能让程序正常运行,不会报错
'''如果try中的代码块运行无错误,python将会运行try中的代码,
如果try中异常,将会运行except中的代码,不会显示异常'''
使用异常避免崩溃
异常捕获一般用于需要用户输入数据时,因为用户输入的数据还有可能并不能够正确的被程序处理
提示用户提供有效输入,不至于崩溃
# 代码所有:cxw
# 开发时间:2021/11/11 18:58
#只执行除法运算的简单计算器
'''print("请输入两个数,将会将他们两个相除,quit结束\n")
while True:
first_num=input("请输入第一个数:\n")
if first_num=="q":
break
secend_num=input("请输入第二个数:\n")
if secend_num=="q":
break
answer=int(first_num)/int(secend_num)
print(answer)'''
#正常大于零的数将会正常运行,但是如果5/0将会报错,崩溃,这个时候就需要使用try-except异常处理
#解决异常
try:
print("请输入两个数,将会将他们两个相除,quit结束\n")
while True:
first_num = input("请输入第一个数:\n")
if first_num == "q":
break
secend_num = input("请输入第二个数:\n")
if secend_num == "q":
break
answer = int(first_num) / int(secend_num)
print(answer)
except ZeroDivisionError:
print("请输入正确的除数和被除数,警告!")
else 代码块
将可能引发错误的代码放在try-except中
# 代码所有:cxw
# 开发时间:2021/11/11 18:58
#只执行除法运算的简单计算器
'''print("请输入两个数,将会将他们两个相除,quit结束\n")
while True:
first_num=input("请输入第一个数:\n")
if first_num=="q":
break
secend_num=input("请输入第二个数:\n")
if secend_num=="q":
break
answer=int(first_num)/int(secend_num)
print(answer)'''
#正常大于零的数将会正常运行,但是如果5/0将会报错,崩溃,这个时候就需要使用try-except异常处理
#解决异常
print("请输入两个数,将会将他们两个相除,quit结束\n")
while True:
first_num=input("请输入第一个数:\n")
if first_num=="q":
break
secend_num=input("请输入第二个数:\n")
if secend_num=="q":
break
try:
answer = int(first_num) / int(secend_num)
except ZeroDivisionError:
print("错误,请输入正确的除数和被除数,警告!\n")
else:
print(answer)
'''假如try中的代码出错,执行except中的代码,没有问题时,执行else语句'''
#try-except-else
'''
try:
工程
except:
错误时的方法
else:
正确时的方法
'''
处理FileNotFoundError异常
# 代码所有:cxw
# 开发时间:2021/11/11 19:22
#FileNotFoundError 异常,找不文件,不存在的文件,解决异常时需要将try语句放在open()语句之前
'''filename="alice.txt"
with open(filename) as files:
contests=files.read()
print(contests)
'''
#解决FileNotFoundError异常
filename="alice.txt"
try:
with open(filename) as files:
contests = files.read()
except FileNotFoundError:
print("文件找不到")
else:
print(contests)
分析文本
# 代码所有:cxw
# 开发时间:2021/11/11 20:29
#分析文本
title="Alice in WonderLand"
A=title.split()
#split()以空格为分隔符将字符串串分拆为对各部分,字符串的劈分,并将这些部分储存在一个列表中。
#str.split(str="",num=string.count(str))[n]
#str= 表示分隔符,默认为空格,但是不能为空,num表示分割次数
print(title)
print(A)
'''如果要分析文本单词的个数,可以调用split(),让文本中的字符串分拆为多个部分,储存到列表中'''
使用多个文件
# 代码所有:cxw
# 开发时间:2021/11/11 20:41
#编写函数使用多个文件
def count_name(filenme): #形参,filename
try:
with open(filename) as files:
counts=files.read()
except FileExistsError:
print("文件找不到,警告")
else:
s=counts.split()
num_words=len(s)
print("the ",filenme," have ",num_words)
filename="alin.txt"
count_name(filename)
#outcome
'''the alin.txt have 3'''
在不知道写啥时可以pass语句
面对异常时也可以这样,遇见异常就可以pass,这样程序就可以跳过异常,正常运行
不知道写啥时也可pass
可以用来构建程序的框架
实例1
# 代码所有:cxw
# 开发时间:2021/11/11 21:15
#加法运算
'''
10-6 加法运算:提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数字。
在这种情况下,当你尝试将输入转换为整数时,将引发ValueError异常。
编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。
在用户输入的任何一个值不是数字时都捕获ValueError异常,并打印一条友好的错误消息。
对你编写的程序进行测试:先输入两个数字,再输入一些文本而不是数字。
'''
#如果输入的不是数字,会出现ValueError
# try:
# while True:
# n1=int(input("n1\n"))
# if n1==6:
# break
# n2=int(input("n2]\n"))
# answer=n1+n2
# except ValueError:
# print("输入数字,谢谢")
# else:
# print(answer)
# try:
# x = input("Give me a number: ")
# x = int(x)
#
# y = input("Give me another number: ")
# y = int(y)
#
# except ValueError:
# print("Sorry, I really needed a number.")
#
# else:
# sum = x + y
# print("The sum of " + str(x) + " and " + str(y) + " is " + str(sum) + ".")
print("请输入两个数相加")
while True:
try:
first_num=input("请输入第一个数:")
if first_num=="q":
break
first_num=int(first_num)
second_num=input("请输入第二个数:")
if second_num=="q":
break
second_num=int(second_num)
except ValueError:
print("请输入数字,谢谢!")
else:
answer=first_num+second_num
print(answer)
实例2
# 代码所有:cxw
# 开发时间:2021/11/11 21:50
def read_openfile(filename):
try:
with open(filename) as files:
contens=files.read()
except FileNotFoundError:
print("文件未找到,请核实文件正确位置")
#
else:
print(contens)
filename="test_file/cat.txt"
read_openfile(filename)
filename="nam.txt" #文件不存在,使用except后的代码
read_openfile(filename)
#outcome
'''
miaomiao heihei tuitui jiejie
文件未找到,请核实文件正确位置
'''