实验4

1.实验任务1

task1.py

实验代码:

print(sum)
sum = 42
print(sum)

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

sum = inc(7) + inc(7)
print(sum)

 

实验结果截图:

 

实验总结:

不是同一个对象的名称,line1 是建立一个sum函数, line3 对象是line2, line7作用域是line5到line8, line11作用对象是line10

 

2.实验任务2

task2_1.py

实验代码:

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]

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

实验结果截图:

 

line33后增加  print( func2(11, 99, 22, 0, 55, 33) )  后实验结果截图:

 line38后增加  print( func3(a=111, b=999, c=222, 0, 555, 333) )  后实验结果截图:

 

task2_2.py

实验代码:

list1 = [1, 9, 8, 4]

print( sorted(list1) )
print( sorted(list1, reverse=True) )
print( sorted(list1, True) )

 

实验结果截图:

 

实验结论:

python内置函数sorted()中,参数reverse的传递方式必须使用关键字传递

 

task2_3.py

实验代码:

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

 

实验结果截图:

 

3.实验任务3

task3.py

实验代码:

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()

 

实验结果截图:

 

在line23前增加 print(solve.__doc__) 后实验结果截图:

 

实验结果:

未被打印出

4.实验任务4

task4.py

实验代码:

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)

 

 实验结果截图:

 

5.实验任务5

task5.py

实验代码:

def is_prime(x):
    if x < 2:
        return False

    else:
        for i in range(2, x):
            if x % i == 0:
                return False
                break
        else:
            return True

x = []
for i in range(2, 21):
    if is_prime(i):
        x.append(i)
    else:
        continue

for j in range(2, 21, 2):
    for a in x:
        if (j-a) in x and a <= (j-a):
            print(f'{j} = {a} + {j-a}')
        else:
            continue

实验结果截图:

 

6.实验任务6

task6.py

实验代码:

def encoder(n):
    ls = list(n)
    for i in range(len(ls)):
        if 'a' <= ls[i].lower() <= 'u':
            ls[i] = chr(ord(ls[i]) + 5)
        elif 'v'<=ls[i].lower()<='z':
              ls[i] = chr(ord(ls[i]) - 21)
        else:
            pass
    return ''.join(ls)

def decoder(n):
    ls = list(n)
    for i in range(len(ls)):
        if 'f' <= ls[i].lower() <= 'z':
            ls[i] = chr(ord(ls[i]) - 5)
        elif 'a'<=ls[i].lower()<='e':
              ls[i] = chr(ord(ls[i]) + 21)
        else:
            pass
    return ''.join(ls)


text = input('输入英文文本: ')
encoded_text = encoder(text)
print('编码后的文本: ', encoded_text)
decoded_text = decoder(encoded_text)
print('对编码后的文本解码: ', decoded_text)

 

实验结果截图:

 

7.实验任务7

task7.py

实验代码:

# collatz函数定义
def collatz(n):
    n_list.append(n)
    while True:
        if n % 2 == 0 and n != 0:
            collatz(n // 2)
        elif (n + 1) % 2 == 0 and n != 1:
            collatz(n * 3 + 1)
        elif n == 1:
            print(n_list)
        break

# 自定义异常
class Error(Exception):
    def __init__(self,n):
        self.n = n

    def __str__(self):
        print('Error: must be a positive integer')

# 主题代码逻辑
try:
    n_list = []
    n = input('输入一个正整数:')
    if n.isdigit() == False:
        raise Error(n)
    elif int(n) <= 0:
        raise Error(n)
    else:
        collatz(int(n))
except Error:
    print('Error: must be a positive integer')

 

实验结果截图:

 

8.实验任务8

task8.py

实验代码:

# 函数func()定义
def func(n):
    if n == 1:
        ans = 2  - 1
    else:
        ans = 2 * func(n-1) +1
        n -= 1
    return ans
#
while True:
    x = input()
    if x == '#':
        print('计算结束')
        break
    n = int(x)
    ans = func(n)
    print(f'n = {n}, ans = {ans}')

 

实验结果截图:

 

posted @ 2023-05-21 20:11  小熊tot  阅读(16)  评论(0)    收藏  举报