目录
一、判断题
- Python内置的open函数,打开文件的时候可能会产生异常。 T
- 二进制文件不能使用记事本程序打开。 F
- Python对文件的操作中,close函数用于文件关闭 T
- 文件打开的默认方式是只读。 T
- 以'w'模式打开一个可写的文件,如果文件存在会被覆盖。 T
- read方法只能一次性读取文件中的所有数据。 F
- 在try...except...else结构中,如果try块的语句引发了异常则会执行else块中的代码。 F
- 在Python异常处理中,只能有一个try,但可以有多个except。 T
- 在Python中,如果try语句块发生了一个异常,与该异常匹配的所有except子句均会执行。 F
- 在Python异常处理中,在try块发生异常后,会执行第一个该异常匹配的except子句,其他except子句则不再执行。 T
二、选择题
- 打开一个已有文件,然后在文件末尾添加信息,正确的打开方式为( 'a' )。
- 下列方法中,用于获取当前目录的是( getcwd )。
- 若fp1 = open("test.txt","r"),以下哪个读取文件的方式line返回的不是字符串?(D) A.for line in fp1 B.line = fp1.read() C.line = fp1.readline() D.line = fp1.readlines()
- 关于 python 读取文件,下列描述错误的是:B A.关键字 with 会在程序不再需要访问文件或出现异常的情况下,关闭文件 。 B.Python 对数据量没有大小限制,需要读取的文件多大都可以。 C.函数 open()中如果输入参数只有文件名,那么 Python 会在当前执行的 .py 文件的所在目录中查找文件 。 D.读取文本文件时,Python 会将文件中的所有文本都解释为字符串 。
- 下面语句解释器将抛出什么错误信息?s=[1,2,3] y=s[3] IndexError
- 下列选项中,( C)是唯一不在运行时发生的异常。 A.NameError B.ZeroDivisionError C.SyntaxError D.KeyError
- Python异常处理中不会用到的关键字是(A)。 A.if B.finally C.else D.try
- 关于try-except,哪个选项的描述是正确的?D A.try-except可以捕获所有类型的程序错误 B.编写程序时应尽可能多的使用try-except,以提供更好的用户体验 C.try-except在程序中不可替代 D.try-except通常用于检查用户输入的合法性、文件打开或网络获取的成功性等
- 当try语句中没有任何错误信息时,一定不会执行( except )语句。
- 下列选项中,用于触发异常的是( raise)。A.try B.raise C.catch D.except
三、函数题fn
6-1 jmu-python-判断质数
本题要求实现一个函数,判断参数是否是质数,是的话返回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):
flag=1
try:
int(num)
except:
return False
for i in range(2,int(num)):
if int(num)%i==0:
flag=0
break
if flag==1:
return True
elif flag==0:
return False
四、编程题
7-1 下标异常
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”
- 输入格式:输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。
- 输出格式:输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”
- 输入样例1:Hello World -4 输出样例1:o
- 输入样例2:abcd 4 输出样例2:输入下标有误
- 输入样例3:Good ? 输出样例3:输入下标有误:
lonst=str(input())
try:
num=int(input())
print(lonst[num])
except:
print("输入下标有误")
7-2 try-except-else异常
本题目要求读入1个整数A,然后输出20/A的值,保留两位小数;如果输入不正确,则输出相应的异常信息。
- 输入格式:输入在一行中给出1个整数A。
- 输出格式:对每一组输入,在一行中输出20/A的值或相应的异常信息。
- 输入样例1:3 输出样例20除以3的结果是: 6.67 没有出现异常
- 输入样例2:3.0 输出样例2:值错误,您必须输入数值
- 输入样例3:0 输出样例3:算术错误,您不能输入0
try:
num=int(input())
result=20/num
print(f'20除以{num}的结果是: {result:.2f}')
print('没有出现异常')
except ValueError:
print('值错误,您必须输入数值')
except ArithmeticError:
print('算术错误,您不能输入0')
7-3 jmu-python-异常-学生成绩处理基本版
小明在帮老师处理数据,这些数据的第一行是n,代表有n行整数成绩需要统计。数据没有错误,则计算平均值(保留2位小数)并输出。数据有错误,直接停止处理,并且不进行计算。注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉空格再行处理。
- 输入格式:第一行为n,代表接下来要输入的行数。然后输入n行成绩(整数)。
- 输出格式:如果输入过程中均未出现异常,则输出
All OK
。 否则输出样例2、3所示格式的错误信息。如果未出现异常则输出:avg grade = 平均值
。平均值(保留2位小数)。不管输入过程中有无出现异常,最后都要输出Process Completed
- 输入输出样例1
3
1
2
3
- 输入输出样例2
3
a b
Error for data " a b"! Break
Process Completed
- 输入输出样例3
3
1
a
Error for data "a"! Break
Process Completed
n=int(input())
s=0
cnt=0
for i in range(n):
try:
x=input()
x=int(x)
s+=x
cnt+=1
pass
except:
print('Error for data "{}"! Break'.format(x))
break
if cnt==n:
print('All OK')
print('avg grade = %.2f'%(s/n))
print('Process Completed')