python pta实验七 异常文件及其处理

目录

一、判断题

二、选择题

三、函数题fn

6-1 jmu-python-判断质数

四、编程题

 7-1 下标异常

 7-2 try-except-else异常

7-3 jmu-python-异常-学生成绩处理基本版 


一、判断题

  1. Python内置的open函数,打开文件的时候可能会产生异常。        T
  2. 二进制文件不能使用记事本程序打开。        F
  3. Python对文件的操作中,close函数用于文件关闭        T
  4. 文件打开的默认方式是只读。        T
  5. 以'w'模式打开一个可写的文件,如果文件存在会被覆盖。        T
  6. read方法只能一次性读取文件中的所有数据。        F
  7. 在try...except...else结构中,如果try块的语句引发了异常则会执行else块中的代码。        F
  8. 在Python异常处理中,只能有一个try,但可以有多个except。        T
  9. 在Python中,如果try语句块发生了一个异常,与该异常匹配的所有except子句均会执行。        F
  10. 在Python异常处理中,在try块发生异常后,会执行第一个该异常匹配的except子句,其他except子句则不再执行。        T

二、选择题

  1. 打开一个已有文件,然后在文件末尾添加信息,正确的打开方式为( 'a' )。
  2. 下列方法中,用于获取当前目录的是( getcwd )。
  3. 若fp1 = open("test.txt","r"),以下哪个读取文件的方式line返回的不是字符串?(D)        A.for line in fp1        B.line = fp1.read()        C.line = fp1.readline()        D.line = fp1.readlines()
  4. 关于 python 读取文件,下列描述错误的是:B                A.关键字 with 会在程序不再需要访问文件或出现异常的情况下,关闭文件 。        B.Python 对数据量没有大小限制,需要读取的文件多大都可以。        C.函数 open()中如果输入参数只有文件名,那么 Python 会在当前执行的 .py 文件的所在目录中查找文件 。        D.读取文本文件时,Python 会将文件中的所有文本都解释为字符串 。
  5. 下面语句解释器将抛出什么错误信息?s=[1,2,3]        y=s[3]                IndexError
  6. 下列选项中,( C)是唯一不在运行时发生的异常。               A.NameError        B.ZeroDivisionError        C.SyntaxError        D.KeyError
  7. Python异常处理中不会用到的关键字是(A)。        A.if        B.finally        C.else        D.try
  8. 关于try-except,哪个选项的描述是正确的?       A.try-except可以捕获所有类型的程序错误        B.编写程序时应尽可能多的使用try-except,以提供更好的用户体验        C.try-except在程序中不可替代        D.try-except通常用于检查用户输入的合法性、文件打开或网络获取的成功性等
  9. 当try语句中没有任何错误信息时,一定不会执行( except )语句。
  10. 下列选项中,用于触发异常的是( 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')

你可能感兴趣的:(python,python,开发语言)