7-1 jmu-python-异常-学生成绩处理基本版 (15 分)
小明在帮老师处理数据,这些数据的第一行是n,代表有n行整数成绩需要统计。
数据没有错误,则计算平均值(保留2位小数)并输出。
数据有错误,直接停止处理,并且不进行计算。
注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
空格再行处理。
输入格式:
第一行为n,代表接下来要输入的行数。
然后输入n行成绩(整数)。
输出格式:
如果输入过程中均未出现异常,则输出All OK。 否则输出样例2、3所示格式的错误信息。
如果未出现异常则输出:avg grade = 平均值。平均值(保留2位小数)
不管输入过程中有无出现异常,最后都要输出Process Completed
输入样例1:
3
1
2
3
输出样例1:
All OK
avg grade = 2.00
Process Completed
输入样例2:
3
a b
输出样例2:
Error for data " a b"! Break
Process Completed
输入样例3:
3
1
a
输出样例3:
Error for data “a”! Break
Process Completed
n = int(input())
n1=n
sum=0
while n:
grade = input()
g=grade.strip()
if g.isdigit():
sum+=int(g)
else:
print('Error for data"%s"! Break'%(grade))
break
n-=1
if n==0:
print("All OK")
print("avg grade = %.2f"%(sum/n1))
print("Process Completed")
7-2 jmu-分段函数l (20 分)
本题目要求计算以下分段函数的值(x为从键盘输入的一个任意实数):
1.png
如果输入非数字,则输出“Input Error!”
输入格式:
在一行中输入一个实数x。
输出格式:
在一行中按”y=result”的格式输出,其中result保留两位小数。
输入样例:
-2
输出样例:
在这里给出相应的输出。例如:
y=3.00
try:
x = eval(input())
if x<=-2:
y=-2*x-1
print("y=%.2f"%y)
elif x>1:
y=2*x+1
print("y=%.2f"%y)
else:
y=3
print("y=%.2f"%y)
except:
print("Input Error!")
7-3 jmu-python-数据异常处理 (20 分)
输入一组数据,求平均值。要求:
数据正确,正确计算。
数据有错误,能异常处理,输出错误信息,不进行计算。
输入格式:
行1:n代表输入的数据个数
接下来n行表示输入的数据
输出格式:
输入数据合法正确,则输出正确,并输出平均值。
输入数据不正确,如果数值错误,输出数值错误
除0错误,输出除0错误,n不能等0
不管有没有异常,都输出程序结束
输入样例1:
3
2
a
输出样例1:
数值错误
程序结束
输入样例2:
0
输出样例2:
除0错误,n不能等0
程序结束
输入样例3:
3
5.6
6.8
9.4
输出样例3:
正确
avg=7.27
程序结束
n = int(input())
m=n
sum =0
if n==0:
print("除0错误,n不能等0\n")
print("程序结束")
else:
try:
while n:
s= eval(input())
sum+=s
n=n-1
print("正确\n")
print("avg=%.2f\n"%(sum/m))
except:
print("数值错误\n")
print("程序结束")
7-4 jmu-python-字符串异常处理 (20 分)
输入一行字符串及下标,能取出相应字符。程序能对不合法数据做相应异常处理。
输入格式:
行1:输入一字符串
行2:输入字符下标
输出格式:
下标非数值异常,输出下标要整数
下标越界,输出下标越界
数据正确,输出下标对应的字符
输入样例:
python
1
输出样例:
y
输入样例:
python
a
输出样例:
下标要整数
输入样例:
python
10
输出样例:
下标越界
try:
s=input()
n=int(input())
print(s[n])
except ValueError:
print("下标要整数")
except IndexError:
print("下标越界")
7-5 jmu-python-简单计算器 (20 分)
输入一个表达式字符串,计算其结果
输入格式:
行1:输入字符串数目
下面分别输入要计算的表达式
输出格式:
输出计算结果,结果保留2位小数。对于异常数据能输出相应异常信息。
输入样例1:
4
1+1
56-23
5/3
5*3.5
输出样例1:
2.00
33.00
1.67
17.50
输入样例2:
3
ab+23
2/0
23+36f
输出样例2:
NameError
ZeroDivisionError
SyntaxError
n=int(input())
while n:
try:
string=input()
print("%.2lf"%eval(string))
except NameError:
print("NameError")
except ZeroDivisionError:
print("ZeroDivisionError")
except SyntaxError:
print("SyntaxError")
n=n-1
7-6 JMU-Python-分段函数 (20 分)
本题目要求根据以下分段函数的定义,计算输入的x对应的y值,输出结果保留两位小数;如果输入的x是非数值型数据,输出’Input Error’。注意:使用math库
Snap5.bmp
输入格式:
在一行中输入x的值。
输出格式:
按“f(x) = result”的格式输出,其中x与result都保留两位小数,注意’='两边有空格。
如果输入的x是非数值型数据,输出:Input Error
输入样例1:
1.5
输出样例1:
f(1.50) = 4.55
输入样例2:
-4
输出样例2:
f(-4.00) = 0.00
输入样例3:
abc
输出样例3:
Input Error
import math
try:
x=eval(input())
if x>0:
print("f(%.2f) = %.2f"%(x,math.cos(x)+math.e**x))
else:
print("f(%.2lf) = 0.00"%x)
except NameError:
print("Input Error")
7-7 JMU-Python-分段函数 (20 分)
本题目要求根据以下分段函数的定义,计算输入的x对应的y值,输出结果保留两位小数;如果输入的x是非数值型数据,输出’Input Error’。注意:使用math库
Snap6.bmp
输入格式:
在一行中输入x的值。
输出格式:
按“f(x) = result”的格式输出,其中x与result都保留两位小数,注意’='两边有空格。
如果输入的x是非数值型数据,输出:Input Error
输入样例1:
4
输出样例1:
f(4.00) = 3.39
输入样例2:
-6
输出样例2:
f(-6.00) = 0.00
输入样例3:
x
输出样例3:
Input Error
import math
try:
x=eval(input())
if x>0:
print("f(%.2f) = %.2f"%(x,math.log(x)+x**0.5))
else:
print("f(%.2lf) = 0.00"%x)
except NameError:
print("Input Error")
7-8 jmu-python-查成绩 (10 分)
从键盘输入一个学生所有课程的成绩,输入格式为”课程名:成绩“,每门课占一行,以空行结束。随后提示”请输入要查询的课程:“,用户从键盘输入课程名,查询并输出该课程的成绩,要求进行异常处理,对不存在的课程进行捕捉处理。
输入格式:
输入学生所有课程的成绩,每门课占一行,格式为”课程名:成绩“,以空行结束 在提示后输入课程名
输出格式:
如果课程存在,直接输出成绩,否则提示”没有该门课程“
输入样例1:
数学:96
英语:82
计算机:76
思政:90
计算机
输出样例1:
请输入要查询的课程:
76
输入样例2:
数学:96
英语:82
计算机:76
思政:90
数学a
输出样例2:
请输入要查询的课程:
没有该门课程
l=[]
while True:
data=input()
if data=="":
break
l.append(data.split(":"))
s=input()
d=dict(l)
print("请输入要查询的课程:")
try:
print(d[s])
except:
print("没有该门课程")
7-9 下标异常 (10 分)
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”
输入格式:
输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。
输出格式:
输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”
输入样例:
在这里给出一组输入。例如:
Hello World
-4
输出样例:
在这里给出相应的输出。例如:
o
输入样例:
在这里给出一组输入。例如:
abcd
4
输出样例:
在这里给出相应的输出。例如:
输入下标有误
输入样例:
在这里给出一组输入。例如:
Good
?
try:
s=input()
n=eval(input())
print(s[n])
except:
print("输入下标有误")
7-10 有关堆栈操作 (20 分)
请实现一个Stack类,实现堆栈初始化,进栈,出栈,显示堆栈数据,堆栈长度等. 实现进栈方法 push(int x); 实现出栈方法 pop(); 实现求堆栈长度方法 size();实现显示堆栈数据方法:show()。
输入格式:
输入包含多个测试用例,每个测试用例均为数字,第一个数 表示对应的操作。
是1 时,表示初始化一个堆栈对象,最大长度为10,1后面可带上用空格分隔的0-n个数,这些数据为初始化堆栈的数据(如果数据个数n大于10 ,则最大长度为n),其后 也可不带数据,表示初始化的是一个空堆栈。
是2,表示进栈操作,即从堆栈顶部(尾部)将数据添加到堆栈,所以2 后面还要带一个数,两数之间用空格分隔,当没有第2个数时,显示 “data error”,当进栈操作没有建立堆栈对象时显示 “stack is not exist”.当进堆栈操作时,堆栈数据达到最大长度时,则显示“The stack is full”
是3 : 表示出栈操作,即从堆栈顶部(尾部)将数据弹出并显示。当出栈操作没有建立堆栈对象时显示 “stack is not exist”.当出堆栈操作时,堆栈没有数据,则显示“The stack is Empty”
是4:表示显示堆栈中所有元素,元素之间用空格分隔,最后元素后面没有空格。同样 当显示操作没有建立堆栈对象时显示 “stack is not exist”。
是5 :表示显示堆栈的长度。同样 当显示长度操作没有建立堆栈对象时显示 “stack is not exist”。 是其它数字,则退出
输出格式:
参考输入格式中说明。对应不同的功能输出不同。
输入样例:
在这里给出一组输入。例如:
3
2
1 2 3 4 5
5
4
3
3
2 56
4
0
输出样例:
在这里给出相应的输出。例如:
stack is not exist
data error
4
2 3 4 5
5
4
2 3 56
class Stack:
stack=[]
maxSize=10
notInit=True
def init(self,lst):
self.notInit=False
notInit=False
if len(lst)-1>10:
s.maxSize=len(lst)-1
for i in range(len(lst)):
if i!=0:
x=lst[i]
s.push(x)
def push(self,x):
self.stack.append(x)
def pop(self):
last=self.stack[-1]
print(last)
del self.stack[-1]
def size(self):
return len(self.stack)
def show(self):
first=1
for i in self.stack:
if first==1:
print(i,end='')
first=0
else:
print(" ",end='')
print(i,end='')
print()
s=Stack()
notOver=True
while(notOver):
ls=list(input().split())
lst=[]
for i in ls:
e=int(i)
lst.append(e)
if lst[0]==1:
s.init(lst)
elif lst[0]==2:
if len(lst)==1:
print("data error")
else:
if s.notInit==True:
print("stack is not exist")
if s.maxSize==len(s.stack):
print("The stack is full")
else:
s.push(lst[1])
elif lst[0]==3:
if s.notInit==True:
print("stack is not exist")
else:
if 0==len(s.stack):
print("The stack is Empty")
else:
s.pop()
elif lst[0]==4:
if s.notInit==True:
print("stack is not exist")
else:
s.show()
elif lst[0]==5:
if s.notInit==True:
print("stack is not exist")
else:
print(len(s.stack))
else:
notOver=False