函数题

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)

更多推荐