python input可以指定范围么 python的input语句怎么用_变量名

异常Exception

什么是异常?

错误是指由于逻辑或语法等导致一个程序无法正常执行的问题

python input可以指定范围么 python的input语句怎么用_python语句大全input_02

错误的特点:

有些错误是无法预知的

什么时是异常:

异常是程序出错是标识的一种状态

当异常发生时,程序不会再下向执行,而转去调有此函数的地方待处理此错误并恢复为正常状态

异常的作用:

用作用信号,通知上层调用者有错误产生需要处理

try 语句的两种语法:

try_except语句

try_finally语句

try_except语句的语法:

try:

可能出发异常的语句

except 错误类型1 [as 变量名1]:

异常处理语句1

except 错误类型2 [as 变量名2]:

异常处理语句2

except 错误类型3 [as 变量名3]:

异常处理语句3

except (错误类型3,错误类型4,....) [as 变量名3, 变量名4]

异常处理语句

...

except:

异常处理语法

else:

未发生异常的语句

finally:

最终语句

作用:

尝试捕获异常,得到异常通知,将程序由异常流程转为正常流程并继续执行

说明:

as 子句是用于绑定错误对象的变量,可以省略

except子句可以有一个或多个,但至少要有一个

except:子句必须放在所有except之后

else 子句最多只能有一个,也可以省略不写

finally 子句最多只能有一个,也可以省略不写

说明2:

else 子句里的语句会在当前try中发生任何异常是被执行

finally 子句里的语句无论在异常状态还是正常状态都一定会被执行

示例

# try_except.py

def div_apple(n):#分苹果

print("现在有%d个苹果,你想分给几个人" % n)

s = input("请输入人数:")

cnt = int(s) #<<-可能触发ValueError类型的错误

result = n / cnt #<<-可能触发ZeroDivisi错误

print("每个人分了", result, '个苹果')

try:

print("开始分苹果")

div_apple(10)

print("分苹果完成")

# 第一种方法

except ValueError as valer:

print("数字输入不正确,苹果被收回")

print("错误类型是", valer)

except ZeroDivisi as err1:

print("没有人来分苹果")

print("错误类型是", err1)

#第二种方法

# except(ValueError, ZeroDivisi) as erro:

# print("数字错误不分了")

# print("错误类型是", err0)

else:

print("我是else子句里的语句当前的try语句里没有发生任何异常,

我会被调用")

finally:

print("我是finally子句里的语句,无论正常/异常都会执行")

print("程序结束")

运行结果如下:

python input可以指定范围么 python的input语句怎么用_python语句大全input_03

练习

# 练习:

# 写一个函数get_score()来获取学生输入的成绩(0~100的整数)

# 如果输入出现异常,则此函数返回0,否则返回用户胡输入的成绩

def get_score():

s = input("请输入成绩(0~100):")

try:

score = int(s)

except ValueError:

print("输入不对啊 ")

return 0

if 0 <= score <= 100:

return score

return 0 #如果这个数不再0~100之间

try:

score = get_score()

except ValueError:

print("输入有错误")

score = 0

print("学生成绩的是", score )

运行结果如下:

python input可以指定范围么 python的input语句怎么用_python input可以指定范围么_04

try_finally语句

语法:

try:

可能触发异常的语句

finally:

最终语句

说明:

finally子句不可以省略

一定不存在except 子句

作用:

通常用try_finally语句来做触发异常时必要处理的事情,无论异常是否发生,finally子句都被执行。

注意:try_finally语句不会改变程序的正常/异常状态

示例:

# try_finally.py

#此示例以控制天然气为例,执行比如要关闭的动作

def try_egg():

print("打开天然气,点燃...")

try:

count = int(input("请输入鸡蛋的个数:"))

print("完全煎鸡蛋,共煎好", count, '个鸡蛋')

finally:

print("关闭天然气")

try:

try_egg()

except ValueError:

print("煎蛋过程中发生错误,程序已转为正常状态")

print("程序结束")

运行结果如下:

python input可以指定范围么 python的input语句怎么用_变量名_05

try语句的嵌套

示例见

# try_finally_embed.py

#try语句的嵌套

#此示例以控制天然气为例,执行比如要关闭的动作

def try_egg():

try:

print("打开天然气,点燃...")

try:

count = int(input("请输入鸡蛋的个数:"))

print("完全煎鸡蛋,共煎好", count, '个鸡蛋')

finally:

print("关闭天然气")

except ValueError:

print("煎蛋过程中发生错误,程序已转为正常状态")

try_egg()

print("程序结束")