实验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)

实验结果:

问题回答:不是。line1中是Python的内置函数,line3是指lin2的全局变量sum,line7中是inc函数中的局部变量,line11中是指line10的全局变量

 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):
    return [a,b,c,d,e,f]
def func3(a, b, c, /, d, e, f):
    return [a,b,c,d,e,f]
# func1调用:按位置传递、按参数传递都可以
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))
# func2调用:d,e,f必须按关键字传递
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))
# func3调用:a,b,c必须按位置传递
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):
    '''
    求解一元二次方程, 返回方程的两个根

    :para: a,b,c: float 方程系数
    :return: tuple
    '''
    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(x,y,s=1):
    l = []
    while x<=y:
        l.append(x)
        x = x+s
    return l

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(n):
    if n==2:
        return True
    else:
        for i in range(2,int(n**0.5)+1):
            if n%i==0:
                return False
        return True
for i in  range(4,21,2):
    for s in range(2,i):
        if is_prime(i-s):
            print(f'{i} = {s} +{i-s}')
            break

实验结果:

 task6:

实验源码:

 1 # 编码函数encoder()定义
 2 def encoder(a):
 3     c = ''
 4     for i in a:
 5         if i.isalpha():
 6             temp = ord(i)+5
 7             if chr(temp).isalpha():
 8                 c += chr(temp)
 9             else:
10                 c += chr(temp-26)
11         else:
12             c += i
13     return c
14 
15 # 解码函数decoder()定义
16 def decoder(x):
17     z = ''
18     for i in x:
19         if i.isalpha():
20             temp = ord(i)-5
21             if chr(temp).isalpha():
22                 z+=chr(temp)
23             else:
24                 z+=chr(temp+26)
25         else:
26             z += i
27     return z
28 
29 # 主体代码逻辑
30 text = input('输入英文文本: ')
31 
32 encoded_text = encoder(text)
33 print('编码后的文本: ', encoded_text)
34 
35 decoded_text = decoder(encoded_text)
36 print('对编码后的文本解码: ', decoded_text)

实验结果:

 task7:

实验源码:

 1 def collatz(n):
 2     l = [n]
 3     while l[-1] !=1:
 4         if l[-1]%2==0:
 5             l.append(l[-1]//2)
 6         else:
 7             l.append(l[-1]*3+1)
 8     return l
 9 
10 try:
11     x = int(input('Enter a positive integer:'))
12     if x <= 0:
13         raise
14 except:
15     print('Error:must be a positive integer')
16 else:
17     print(collatz(x))

实验结果:

 task8:

实验源码:

 1 # 函数func()定义
 2 def func(n):
 3     result = 1
 4     for i in range(n):
 5         result *= 2
 6     return result-1
 7 
 8 while True:
 9     x = input()
10     if x == '#':
11         print('计算结束')
12         break
13     n = int(x)
14     ans = func(n)
15     print(f'n = {n}, ans = {ans}')

实验结果:

 

posted @ 2023-05-22 19:14  showdownx  阅读(28)  评论(0)    收藏  举报