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