python程序设计08-异常
emmmm,我也算不清哪套题是哪套题了
fn函数题
6-1 jmu-python-判断质数 (10 分)
本题要求实现一个函数,判断参数是否是质数,是的话返回True,否则返回False
注意:函数中要有异常处理,如果参数不是整数,返回False
函数接口定义:
def isPrime(num)
裁判测试程序样例:
/* 请在这里填写答案 */
num=input()
if isPrime(num):
print(‘yes’)
else:
print(‘no’)
输入样例1:
ab
输出样例1:
no
输入样例2:
1.1
输出样例2:
no
输入样例3:
11
输出样例3:
yes
#不好意思,以前的答案复制错误,现已改正
def isPrime(num):
try:
n = int(num)
for i in range(2, n):
if n % i == 0:
return False
else:
return True
except:
return False
编程题
7-1 jmu-python-输入输出-处理不定行输入
处理一段文字(可能有很多行,行数不确定),输出每行包含的单词数(单词之间以空格或多个空格分隔)。
注意:处理的时候要忽略掉空行或者空格行。
提示: 使用如下代码来处理不定行输入
while True:
try:
your code
except:
break
输入样例:
1 2
bcd efg hij
x
输出样例:
2
3
1
while True:
try:
lonst = (input())
some = lonst.split()
except:
break
else:
if len(some) != 0:
print(len(some))
7-2 jmu-python-异常-学生成绩处理中级版
小明在帮老师处理数据,这些数据的第一行是n,代表有n行整数成绩需要统计。
接着连续输入n个成绩,如果中途输入错误(非整数)提示’Error! Reinput’,
并输出错误的数据。然后重新输入,直到输入n个正确的成绩才退出。如果整个
输入过程中没有错误数据,提示’All OK’。最后输出所有学生的平均值,保留两
位小 数。
注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
空格再行处理。
输入格式:
第一行为n,代表接下来要输入的正确行数。
然后输入成绩,输入错误则提示重输,直到输入n行正确的数据为止。
输出格式:
如果输入过程中无异常,需输出All OK。
输入样例1:
3
1
2
3
输出样例1:
All OK
avg grade = 2.00
输入样例2:
3
1
b
2
3
输出样例2:
Error for data #! Reinput
Error for data b! Reinput
avg grade = 2.00
num = int(input())
grade_list = []
avg = 0
s = 0
n = num
flag = True
while num:
try:
grade = input()
number = int(grade)
s = s + number
num = num - 1
except:
flag = False
grade_list.append(grade)
if flag:
print("All OK")
else:
for i in grade_list:
print("Error for data %s! Reinput" % i)
avg = s / n
print("avg grade = {:.2f}".format(avg))
7-3 jmu-python-异常-学生成绩处理基本版
小明在帮老师处理数据,这些数据的第一行是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
num = int(input())
grade_list = []
avg = 0
s = 0
n = num
flag = True
while num:
try:
grade = input()
number = int(grade)
s = s + number
num = num - 1
except:
flag = False
grade_list.append(grade)
break
if flag:
print("All OK")
avg = s / n
print("avg grade = {:.2f}".format(avg))
else:
for i in grade_list:
print("Error for data \"%s\"! Break" % i)
print("Process Completed")
7-4 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
程序结束
try:
num=int(input())
su = 0
for i in range(num):
grade = eval(input())
su += grade
avg = su / num
except ZeroDivisionError:
print("除0错误,n不能等0")
except:
print("数值错误")
else:
print("正确")
print("avg={:.2f}".format(su / num))
finally:
print("程序结束")
7-5 jmu-python-字符串异常处理
输入一行字符串及下标,能取出相应字符。程序能对不合法数据做相应异常处理。
输入格式:
行1:输入一字符串
行2:输入字符下标
输出格式:
下标非数值异常,输出下标要整数
下标越界,输出下标越界
数据正确,输出下标对应的字符
输入样例:
python
1
输出样例:
y
输入样例:
python
a
输出样例:
下标要整数
输入样例:
python
10
输出样例:
下标越界
lonst = str(input())
try:
num = int(input())
print(lonst[num])
except IndexError:
print("下标越界")
except:
print("下标要整数")
7-6 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 = float(input())
if x > 0:
print("f({:.2f}) = {:.2f}".format(x, math.log(x) + math.sqrt(x)))
else:
print("f({:.2f}) = 0.00".format(x))
except:
print("Input Error")
7-7 下标异常 (10 分)
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”
输入格式:
输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。
输出格式:
输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”
输入样例:
在这里给出一组输入。例如:
Hello World
-4
输出样例:
在这里给出相应的输出。例如:
o
输入样例:
在这里给出一组输入。例如:
abcd
4
输出样例:
在这里给出相应的输出。例如:
输入下标有误
输入样例:
在这里给出一组输入。例如:
Good
?
输出样例:
在这里给出相应的输出。例如:
输入下标有误
lonst = str(input())
try:
num = int(input())
print(lonst[num])
except:
print("输入下标有误")
7-8 有关堆栈操作 (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:
def __init__(self, size = 10):
#使用列表存放栈的元素
self._content = []
#初始栈大小
self._size = size
#栈中元素个数初始化为0
self._current = 0
def push(self, v):
if self._current < self._size:
for i in v:
self._content.append(i)
self._current = self._current+1
else:
print('Stack Full!')
def pop(self):
if self._content:
self._current = self._current-1
return self._content.pop(-1)
else:
print('Stack is empty!')
def empty(self):
self._content = []
self._current = 0
def isEmpty(self):
return not self._content
def maxlen(self):
if sta.Size() < 10:
self._size = 10
else:
self._size = sta.Size()
return self._size
def Size(self):
return len(self._content)
def show(self):
for i in range(len(self._content)):
if i != len(self._content) - 1:
print(self._content[i], end=' ')
else:
print(self._content[i])
if __name__ == '__main__':
flag = 0
while flag == 0:
num = input()
if ' ' in str(num):
lostr = num.split()
if lostr[0] == '1':
sta = Stack()
sta.push(lostr[1:])
flag = 1
elif lostr[0] == '2':
print("data error")
else:
break
else:
num = int(num)
if num == 1:
Stack.empty()
flag = 1
elif num == 3:
print("stack is not exist")
elif num == 2:
print("data error")
elif num == 4:
print("stack is not exist")
elif num == 5:
print("stack is not exist")
else:
break
while flag == 1:
num = input()
if ' ' in num:
lostr = num.split()
if lostr[0] == '2':
if sta.Size() < sta.maxlen():
sta.push(lostr[1:])
else:
print("The stack is full")
else:
break
else:
if num == '2':
print("data error")
elif num == '3':
print(sta.pop())
elif num == '4':
if sta.isEmpty():
print("The stack is Empty")
else:
sta.show()
elif num == '5':
print(sta.Size())
else:
break
#不好意思7-6 JMU-Python-分段函数 (20 分)这题复制了错误的答案,现已改正