实验4 函数与异常处理编程

task1

print(sum)
sum = 42
print(sum)
def inc(n):
    sum = n+1
    print(sum)
    return sum
sum = inc(7) + inc(7)
print(sum)

运行结果:

 

task2.1

def func1(a, b, c, d, e, f):
    return [a,b,c,d,e,f]
def func2(a, b, c,*, d, e, f):#返回参数a,b,c,d,e,f构成的列表 *后面的参数只能按关键字传递
    return [a, b, c, d, e, f]
def func3(a, b, c, /, d, e, f):#返回参数a,b,c,d,e,f构成的列表 /前面的参数只能按位置传递
    return [a, b, c, d, e, f]

print( func1(1,9,2,0,5,3) )
print( func1(a=1, b=9, c=2, d=0, e=5, f=3) )
print( func1(1,9,2, f=3, d=0, e=5))

print( func2(11, 99, 22, d=0, e=55, f=33) )
print( func2(a=11, b=99, c=22, d=0, e=55, f=33) )

print( func3(111, 999, 222, 0, 555, 333))
print( func3(111, 999, 222, d=0, e=555, f=333) )

运行结果:

错误:

task2.2

list1 = [1, 9, 8, 4]
print( sorted(list1) )
print( sorted(list1, reverse=True) )
print( sorted(list1,True) )

运行结果:

task2.3

def func(a, b, c, /, *, d, e, f):
    return( [a,b,c,d,e,f] )
print(func(1,2,3,d=4,e=5,f=6))

运行结果:

task3

def solve(a, b, c):
    delta = b*b - 4*a*c
    delta_sqrt = abs(delta)**0.5
    p1 = -b/2/a
    p2 = delta_sqrt/2/a
    if delta >= 0:
        root1 = p1 + p2
        root2 = p1 - p2
    else:
        root1 = complex(p1, p2)
        root2 = complex(p1, -p2)
    return root1, root2
while True:
        try:
            t = input('输入一元二次方程系数a b c, 或者,输入#结束: ')
            if t == '#':
                print('结束计算,退出')
                break
            a, b, c = map(float, t.split())
            if a == 0:
                raise ValueError('a = 0, 不是一元二次方程')
        except ValueError as e:
            print(repr(e))
            print()
        except:
            print('有其它错误发生\n')
        else:
            root1, root2 = solve(a, b, c)
            print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
            print()

运行结果:

task4

def list_generator(a,b,c=1):
    lst=[]
    while a<=b:
        lst.append(a)
        a+=c
    return lst

list1 = list_generator(-5, 5)
print(list1)
list2 = list_generator(-5, 5, 2)
print(list2)
list3 = list_generator(1, 5, 0.5)
print(list3)

运行结果:

task5

def is_prime(s):
    sum=0
    for i in range(2,s):
        if s%i==0:
            sum+=i
    ans=sum==0
    return ans

for i in range(2,21,2):
    s=[]
    for j in range(2,i):
        if is_prime(j)==True:
            s.append(j)
    for m in s:
        if (i-m)in s:
            print(f'{i}={m}+{i-m}')
            break

 运行结果:

task6

list_s=['a','b','c','d','e','f','g','h','i','j','k',
        'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
list_b=['A','B','C','D','E','F','G','H','I','J','K',
        'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
def encoder(x):
    re=[]
    for i in str(x):
        if i in list_s:
            a=list_s.index(i)
            if a<=20:
                i=list_s[a+5]
                re.append(i)
            else:
                i=list_s[a+5-26]
                re.append(i)
        elif i in list_b:
            a=list_b.index(i)
            if a<=20:
                i=list_b[a+5]
                re.append(i)
            else:
                i=list_b[a+5-26]
                re.append(i)
        else:
            re.append(i)
    re=''.join(re)
    return re
def decoder(x):
    re=[]
    for i in str(x):
        if i in list_s:
            a=list_s.index(i)
            if a>=5:
                i=list_s[a-5]
                re.append(i)
            else:
                i=list_s[a+26-5]
                re.append(i)
        elif i in list_b:
            a=list_b.index(i)
            if a>=5:
                i=list_b[a-5]
                re.append(i)
            else:
                i=list_b[a+26-5]
                re.append(i)
        else:
            re.append(i)
    re=''.join(re)
    return re

x=input('输入英文文本:')
print(f'编码后的文本:{encoder(x)}')
y=encoder(x)
print(f'对编码后的文本解码:{decoder(y)}')

运行结果:

task7:

def collatz(n):
    re=[n]
    while True:
        if n==1:
            break
        if n%2==0:
            n=int(n/2)
            re.append(n)
        else:
            n=3*n+1
            re.append(n)
    return re
n=input('Enter a positive intefer:')
try:
    n=int(n)
    if n<=0 :
        raise
except:
    print('Error: must be a positive integer')
else:
    print(collatz(n))

运行结果:

task8:

def func(n):
    if n==0:
        return 0
    else:
        return 2*(func(n-1)+1)-1

while True:
    x=input()
    if x=='#':
        print('计算结束')
        break
    n=int(x)
    ans=func(n)
    print(f'n={n},ans={ans}')

运行结果:

 

posted @ 2023-05-23 21:15  吃花椒de猫  阅读(37)  评论(0)    收藏  举报