defEval():#读取用户输入的公式参数,并输出计算结果# 请在此添加实现代码 ## ********** Begin *********#
g=9.81
t=int(input())
v0=int(input())print("t=?",end='')print("v0=?",end='')
yt=v0*t-g*(t**2)*1/2print(yt)
测试输入:
100
—— 预期输出 ——
t=?v0=?-490.5
第2关:异常处理 - 测试输入数据的有效性
defEval():#读取用户输入的公式参数,检查有效性,并输出计算结果# 请在此添加实现代码 ## ********** Begin *********#
g=9.81
t=int(input())
v0=int(input())print("t=?",end='')print("v0=?",end='')if0>t or t>2*v0/g:raise ValueError('t必须在0到2v0/g之间')
yt=v0*t-g*(t**2)*1/2print(yt)
测试输入:
-110
—— 预期输出 ——
t=?v0=?t必须在0到2v0/g之间
第3关:读取文件中的数据计算公式
defEval(path):
output ="step3/out.txt"
g =9.81#读取数据
ifile =open(path,'r')
ls = ifile.readlines()
v0 =float(ls[0].split()[-1])
t=[]for i inrange(2,len(ls)):for k in ls[i].split():
t.append(float(k))
ifile.close();#排序
t.sort()#计算
ofile =open(output,'w')
ofile.write('v0 = %.10f\n'% v0)
ofile.write('t\t\ty\n')for k in t:if(k <0or k >2*v0/g):
ofile.write('%.10f\tInvalid\n'%(k))else:
y = v0*k-0.5*9.81*k*k
ofile.write('%.10f\t%.10f\n'%(k,y))
ofile.close()# ********** End **********#
测试输入:
step3/data.txt
—— 预期输出 ——
v0 =3.0000000000
t y
0.04200000000.11734758000.05190850000.14250901490.15592000000.34851431740.21342619000.41685219730.27000000000.45242550000.28075000000.45563514090.35000000000.44913750000.36807889000.43969712030.50620017000.26175011760.52800000000.21656448000.57681501880.09847520570.7500000000 Invalid
1.0000000000 Invalid
第4关:根据测试函数写出原函数
#assert+空格+判断语句+','+“报错语句”defhalve(a):#针对test_halve测试函数# 请在此添加实现代码 ## ********** Begin *********##halve函数返回它的参数x的一半。#整除5.0/2 = 2.5 ;(//代表向下取整):5.0//2 = 2.0#判断a的类型ifisinstance(a,int):#isinstance() 函数来判断一个对象是否是一个已知的类型return a//2return a/2'''
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
'''# ********** End **********#defadd(a,b):#针对test_add测试函数# 请在此添加实现代码 ## ********** Begin *********#return a+b
# ********** End **********#defequal(a,b):#针对test_equal测试函数# 请在此添加实现代码 ## ********** Begin *********#if a==b:returnTrue,a
r=''
lens =max(len(a),len(b))for i inrange(lens):try:
x=a[i]except IndexError:
x='*'try:
y=b[i]except IndexError:
y='*'if x==y:
r = r+x
else:
r=r+x+'|'+y
returnFalse,r
#try,except函数# ********** End **********#
第5关:计算汽车停止所需的距离
defEval():#读取用户输入的公式参数,并输出计算结果# 请在此添加实现代码 ## ********** Begin *********#
g=9.81
u=int(input("u=?"))
v0=float(input("v0=?"))
v0=v0/3.6
d=v0**2/(2*u*g)print(d)#不要用format输出,测试集2会报错# ********** End **********#