实验四

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 内置

line3 全局作用域

line7 局部作用域

line11 全局作用域

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: int 方程系数
    :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

print(solve.__doc__)
while True:
    try:
        a,b,c = eval(input('Enter eqution coefficient: '))
        if a == 0:
            raise ZeroDivisionError
    except:
        print('invalid input, or, a is zero')
        break
    else:
        root1, root2 = solve(a, b, c)
        print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
        print()

添加print(solve.__doc__)到line22前,注释被输出了

 

 

 task4

def list_generator(m, n, step=1):
    lst = []
    i = m
    while m <= i <= n:
        lst.append(i)
        i += step
    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(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True


for p in range(0, 21, 2):
    for q in range(20):
        if is_prime(q) is True:
            if is_prime(p-q) is True:
                print(f'{p}={q}+{p-q}')
                break

 

 task6

 

def encoder(z):
    a = list(z)
    i = 0
    while i < len(z):
        x = ord(a[i])
        if 65 <= x <= 85 or 97 <= x <= 117:
            y = chr(x + 5)
        elif 85 < x <= 90 or 117 < x <= 122:
            y = chr(x - 21)
        else:
            y = chr(x)
        a[i]=y
        i += 1
    return ''.join(a)


def decoder(z):
    a = list(z)
    i = 0
    while i < len(z):
        x = ord(a[i])
        if 70 <= x <= 90 or 102 <= x <= 122:
            y = chr(x - 5)
        elif 65 <= x < 70 or 97 <= x < 102:
            y = chr(x + 21)
        else:
            y = chr(x)
        a[i]=y
        i += 1
    return ''.join(a)


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

 

 task7

def Collatz(n):
    if n % 2 == 0 and n > 0:
        return int(n / 2)
    if n % 2 != 0 and n > 0:
        return int(3 * n + 1)


x = []
a = int(input('Enter a positive integer: '))
while True:
    try:
        if a != 1:
            x.append(a)
            a = Collatz(a)
        else:
            x.append(a)
            break
    except:
        print('Error : must be a positive integer')
        break
print(x)

 

 

 

 

 

 

 

 

posted @ 2022-05-09 22:27  东揚  阅读(26)  评论(2编辑  收藏  举报