Python文件操作与异常处理:PTA作业7

目录

判断题

单选题

函数题

6-1 jmu-python-判断质数

编程题

7-1 下标异常

7-2 try-except-else异常

7-3 综合题:学生成绩输入及输出

判断题

1-1Python内置的open函数,打开文件的时候可能会产生异常。(T)

1-2二进制文件不能使用记事本程序打开。(F)

1-3Python对文件的操作中,close函数用于文件关闭。(T)

1-4文件打开的默认方式是只读。(T)

1-5以'w'模式打开一个可写的文件,如果文件存在会被覆盖。(T)

1-6read方法只能一次性读取文件中的所有数据。(F)

1-7在try…except…else结构中,如果try块的语句引发了异常则会执行else块中的代码。(F)

1-8在Python异常处理中,只能有一个try,但可以有多个except。(T)

1-9在Python中,如果try语句块发生了一个异常,与该异常匹配的所有except子句均会执行。(F)

1-10在Python异常处理中,在try块发生异常后,会执行第一个该异常匹配的except子句,其他except子句则不再执行。(T)

单选题

2-1打开一个已有文件,然后在文件末尾添加信息,正确的打开方式为( )。

A.'r'

B.'w'

C.'a'

D.'w+'

2-2下列方法中,用于获取当前目录的是( )。

A.open

B.write

C.getcwd

D.read

2-3若fp1 = open("test.txt","r")
以下哪个读取文件的方式line返回的不是字符串?()

A.for line in fp1

B.line = fp1.read()

C.line = fp1.readline(

D.line = fp1.readlines()

2-4关于 python 读取文件,下列描述错误的是:

A.关键字 with 会在程序不再需要访问文件或出现异常的情况下,关闭文件 。

B.Python 对数据量没有大小限制,需要读取的文件多大都可以。

C.函数 open()中如果输入参数只有文件名,那么 Python 会在当前执行的 .py 文件的所在目录中查找文件 。

D.读取文本文件时,Python 会将文件中的所有文本都解释为字符串 。

2-5下面语句解释器将抛出什么错误信息?

s=[1,2,3]
y=s[3]

A.NameError

B.IndexError

C.SyntaxError

D.TypeError

2-6下列选项中,( )是唯一不在运行时发生的异常。

A.NameError

B.ZeroDivisionError

C.SyntaxError

D.KeyError

2-7Python异常处理中不会用到的关键字是()。

A.if

B.finally

C.else

D.try

2-8关于try-except,哪个选项的描述是正确的?

A.try-except可以捕获所有类型的程序错误

B.编写程序时应尽可能多的使用try-except,以提供更好的用户体验

C.try-except在程序中不可替代

D.try-except通常用于检查用户输入的合法性、文件打开或网络获取的成功性等

2-9当try语句中没有任何错误信息时,一定不会执行( )语句。

A.try

B.else

C.finally

D.except

2-10下列选项中,用于触发异常的是( )。

A.try

B.raise

C.catch

D.except

函数题

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 = 0
    try:
        int(num)
    except:
        return False
    else:
        for i in range(2,int(num)):
            if int(num)%i==0:
                flag+=1
                break
        if flag==0:
            return True
        else:
            return False

编程题

7-1 下标异常

作者 马杨珲

单位 浙江科技学院

输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”

输入格式:

输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。

输出格式:

输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”

输入样例:

在这里给出一组输入。例如:

Hello World
-4

输出样例:

在这里给出相应的输出。例如:

o

输入样例:

在这里给出一组输入。例如:

abcd
4

输出样例:

在这里给出相应的输出。例如:

输入下标有误

输入样例:

在这里给出一组输入。例如:

Good
?

输出样例:

在这里给出相应的输出。例如:

输入下标有误
s = str(input())
try:
    n = input()
    n = int(n)
    print(s[n])
except:
    print("输入下标有误")

7-2 try-except-else异常

作者 曹记东

单位 陕西理工大学

本题目要求读入1个整数A,然后输出20/A的值,保留两位小数;如果输入不正确,则输出相应的异常信息。

输入格式:

输入在一行中给出1个整数A。

输出格式:

对每一组输入,在一行中输出20/A的值或相应的异常信息。

输入样例1:

3

输出样例1:

20除以3的结果是: 6.67
没有出现异常

输入样例2:

3.0

输出样例2:

值错误,您必须输入数值

输入样例3:

0

输出样例3:

算术错误,您不能输入0
try:
    a = int(input())
    result = 20/a
    print("20除以{}的结果是: {:.3}".format(a,result))
    print("没有出现异常")
except ValueError:
    print("值错误,您必须输入数值")
except ZeroDivisionError:
    print("算术错误,您不能输入0")

7-3 综合题:学生成绩输入及输出

作者 于富强

单位 河北师范大学

输入n(1<n<=100)个学生的信息,包括学号、姓名、语文、数学和英语。学号为4位数字组成,成绩为整数,如果不满足此条件,出现异常,如果输入的n不是数字或者 n<=1或n>100,出现异常,输出“输入的人数必须是数字,大于0并且小于等于100”。要求根据3门功课的平均成绩从高分到低分输出每个学生的学号、姓名、3门功课成绩及平均成绩,若平均成绩相同则按语文成绩从高到低排序。

输入格式:

每组测试数据首先输入一个正整数n(1<n<=100),表示学生人数;然后是n行信息,分别表示学生的学号、姓名(长度不超过10且由英文字母构成的字符串)和3门课成绩(正整数)。

输出格式:

如果n出现错误,出现异常。如果n输入正确,输出排序后的学生信息,每行一个学生信息:学号、姓名、语文、数学、英语、平均成绩(保留2位小数),上面每个数据之间留一个空格。

输入样例:

在这里给出多组。例如:

3
0001 zhangsan 80 95 65
0002 lisi 65 52 56
0003 wangwu 87 86 95

输出样例:

在这里给出相应的输出,文件中与输出一样。例如:

0003 wangwu 87 86 95 89.33
0001 zhangsan 80 95 65 80.00
0002 lisi 65 52 56 57.
try:
    n = int(input())
    if n<=1 or n>100:
        raise ValueError
    students = []
    for i in range(n):
        info = input().split()
        if len(info[0]) != 4 or not info[0].isdigit():
            raise ValueError
        if not info[2].isdigit():
            raise ValueError
        if not info[3].isdigit():
            raise ValueError
        if not info[4].isdigit():
            raise ValueError
        students.append([info[0], info[1], int(info[2]), int(info[3]), int(info[4])])
    for student in students:
        student.append(round(sum(student[2:])/3, 2))
    students.sort(key=lambda x: (-x[5], -x[2]))
    for student in students:
        print(student[0], student[1], student[2], student[3], student[4], student[5])
except ValueError:
    print("输入的人数必须是数字,大于0并且小于等于100")

物联沃分享整理
物联沃-IOTWORD物联网 » Python文件操作与异常处理:PTA作业7

发表评论