异常
一、我们一般使用try-except代码块处理异常,try-except代码块让 Python 程序在遇到错误时执行指定的操作
例如,我们编写如下程序:
try:
print(2/0)
except:
print("We can't divide by zero!")
程序运行结果:
We can't divide by zero!
我们将 print(2/0)语句放在了try代码块中,很显然这是一个错误语句,因为 0 不能当除数。try-except代码块的作用就是当try代码块中的程序代码运行没有错误,则跳过except代码块;反之如果try代码块中的程序代码运行出现错误,则运行except代码块中的内容,一般except代码块中的内容都是输出错误信息。
如果except代码块后面还有其他代码,程序将继续运行,因为 Python 已经在程序报错后执行了except代码块中的内容,告诉了错误信息,所以可以继续运行程序。
二、除了系统自动抛出异常外,程序员也可以通过 Python 的raise显式抛出自己的包含特定信息的异常。一旦执行了raise语句,raise之后的语句将不能执行。
def read_C():
try:
C = float(sys.argv[1])
except ValueError:
raise ValueError('Degrees must be number, not "%s"' % sys.argv[1])
if C < -273.15:
raise ValueError('C=%g is a non-physical value!' % C)
return C
编程要求
在上一关的基础上,增加对用户输入的数据的有效性进行检查。
参数v0
的范围不限,但是参数t的范围必须是
0≤t≤ g2v0
当参数t不满足范围时,请引发一个ValueError异常,异常信息为:t必须在 0 到 2v0/g 之间。如果满足,则打印出计算的结果。
评测代码会捕捉这个异常,并将异常信息打印出来,打印的内容将会与规定的内容进行比较,详细要求请见测试说明。
def Eval():
#读取用户输入的公式参数,检查有效性,并输出计算结果
# 请在此添加实现代码 #
# ********** Begin *********#
g=9.81
t=int(input())
v0=int(input())
print("t=?",end='')
print("v0=?",end='')
if 0>t or t>2*v0/g:
raise ValueError('t必须在0到2v0/g之间')
yt=v0*t-g*(t**2)*1/2
print(yt)