SDUT-python实验八 函数题+编程题
函数题
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)
except Exception:
return False
# 判断质数
# 质数必须大于1
if n<=1:
return False
# 2是质数
if n==2:
return True
# 偶数除了2之外全不是质数
if n%2==0:
return False
# 检查n是否能整除从3到n-1的所有奇数(设置步长为2)
for i in range(3,n,2):
# 如果能整除,就不是质数
if n%i==0:
return False
# 如果都无法整除,则是质数
return True
编程题
7-1 try-except-else异常
分数 10
作者 曹记东
单位 陕西理工大学
本题目要求读入1个整数A,然后输出20/A的值,保留两位小数;如果输入不正确,则输出相应的异常信息。
输入格式:
输入在一行中给出1个整数A。
输出格式:
对每一组输入,在一行中输出20/A的值或相应的异常信息。
输入样例1:
3
输出样例1:
20除以3的结果是: 6.67
没有出现异常
输入样例2:
3.0
输出样例2:
值错误,您必须输入数值
输入样例3:
0
输出样例3:
算术错误,您不能输入0
答案:
A=input()
try:
A=int(A)
n=20/A
# 结果保留两位小数
print(f"20除以{A}的结果是: {n:.2f}")
print("没有出现异常")
# 记住这俩异常都叫啥名
except ValueError:
print("值错误,您必须输入数值")
except ZeroDivisionError:
print("算术错误,您不能输入0")
7-2 jmu-python-数据异常处理
分数 10
作者 linli
单位 集美大学
输入一组数据,求平均值。要求:
- 数据正确,正确计算。
- 数据有错误,能异常处理,输出错误信息,不进行计算。
输入格式:
- 行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:
n=int(input())
sum=0
for i in range(n):
num=float(input())
sum+=num
ave=float(sum/n)
print("正确")
print("avg=%.2f"%ave)
print("程序结束")
except ValueError:
print("数值错误")
print("程序结束")
except ZeroDivisionError:
print("除0错误,n不能等0")
print("程序结束")
7-3 jmu-python-字符串异常处理
分数 10
作者 linli
单位 集美大学
输入一行字符串及下标,能取出相应字符。程序能对不合法数据做相应异常处理。
输入格式:
- 行1:输入一字符串
- 行2:输入字符下标
输出格式:
- 下标非数值异常,输出
下标要整数 - 下标越界,输出
下标越界 - 数据正确,输出下标对应的字符
输入样例:
python
1
输出样例:
y
输入样例:
python
a
输出样例:
下标要整数
输入样例:
python
10
输出样例:
下标越界
答案:
# 先输出字符串
s=input()
try:
# 输入字符下标
n=int(input())
print(s[n])
except ValueError:
print("下标要整数")
# 记住这种异常叫啥
except IndexError:
print("下标越界")
7-4 jmu-python-简单计算器
分数 10
作者 linli
单位 集美大学
输入一个表达式字符串,计算其结果
输入格式:
- 行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())
# 如果try包裹整个for循环,那么一但某个输入触发异常,该异常就会被捕获,程序直接跳出try循环,即只会输出一种异常
for i in range(n):
try:
#eval()将字符串转换为python表达式
s=eval(input())
print("%.2f"%s)
except NameError:
print("NameError")
except ZeroDivisionError:
print("ZeroDivisionError")
except SyntaxError:
print("SyntaxError")
7-5 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())
sum=0
try:
for i in range(n):
x=input()
# 将x转化成整数形式再加入
sum+=int(x)
ave=sum/n
print("All OK")
print("avg grade = %.2f"%ave)
print("Process Completed")
except Exception:
print("Error for data \"%s\"! Break"%x)
print("Process Completed")
7-6 jmu-python-异常-学生成绩处理中级版
分数 15
作者 郑如滨
单位 集美大学
小明在帮老师处理数据,这些数据的第一行是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
答案:
# 设置一个旗子,一但出现错误就False,用来标志是否有过数据错误
flag=True
n=int(input())
# 转存n,防止后续求ave是n被减成了0
num=n
sum=0
# 不可以用for循环,n每循环一次就会自动-1,无法手动控制,无法正确判定输入次数
while n:
try:
x=input()
sum+=int(x)
n-=1
except ValueError:
print("Error for data %s! Reinput"%x)
# 出现错误!旗子False
flag=False
# 后面还要重新输入,所以要continue,并且把这次循环减掉的n加回来
continue
ave=sum/num
if flag:
print("All OK")
print("avg grade = %.2f"%ave)
更多推荐
所有评论(0)