PTA8(异常)python


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 分)这题复制了错误的答案,现已改正

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用:PTA题目集python单选答案全文共4页,当前为第1页。PTA题目集python单选答案全文共4页,当前为第1页。2-1 PTA题目集python单选答案全文共4页,当前为第1页。 PTA题目集python单选答案全文共4页,当前为第1页。 1-1.... 引用:假设张家界景区的游客抵达检票口的速度是恒定的。某国庆长假日清晨景区开门时检票口已积聚了一定数量的游客,且随时间流逝,不断有新的游客抵达。如果打开8个检票口,m分钟刚好可以完成全部游客的检票放行;如果使用6个检票口,则需要n (n>m)分钟才能完成。请编程计算:如果使用10个检票口,需要多少时间才能将景区入口的待检票人数清零? 引用:答案: m=int(input()) n=int(input()) x=2*m/(1-m/n) y=(6*n-x)/n z=x/(10-y) print('原有排队游客份数:%.1f, 每分钟新到游客份数:%.1f, 10口同开需%.1f分钟清零待检票游客.'%(x,y,z))。 PTA游客检票的问题,给出了一个具体的场景和条件。假设张家界景区的游客抵达检票口的速度是恒定的,根据不同的检票口数量,计算所需的时间来完成全部游客的检票放行。如果使用6个检票口,需要n分钟;如果使用8个检票口,需要m分钟。现在的问题是,如果使用10个检票口,需要多少时间才能将景区入口的待检票人数清零? 根据引用的代码,我们可以计算出答案。假设原有排队游客份数为x,每分钟新到游客份数为y,10个检票口同时开放所需的时间为z。那么我们可以使用下面的计算公式来得到答案: z = x / (10 - y) 请注意,上述计算公式是根据引用的代码给出的。具体的游客数量和新到游客的速度需要根据实际情况进行输入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值