实验四
task.1
print(sum) sum = 42 print(sum) def inc(n): sum = n+1 print(sum) return sum sum = inc(7) + inc(7) print(sum)
task.2
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))
task.3
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 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()
task.4
def list_generator(begin, end, step=1): ls = [] a = begin b = end while a <= b: ls.append(a) a += step return ls list1 = list_generator(-5, 5) print(list1) list2 = list_generator(-5, 5, 2) print(list2) list3 = list_generator(1, 5, 0.5) print(list3)
task.5
def is_prime(n): if n<2: return False else: for i in range(2,n): if n%i==0: return False break else: return True num=[] for i in range(20): if is_prime(i): num.append(i) def summary(x): i = 0 while True: for j in range(i, len(num)): s = num[i]+num[j] if x == s: s = f"{s} = {num[i]} + {num[j]}" return s i += 1 for i in range(4, 21, 2): print(summary(i))
task.6
def encoder(a): """对文本加密""" result = '' for i in range(len(a)): if ord(a[i]) in range(65, 91): result+=chr((ord(a[i])-65+5)%26+65) elif ord(a[i]) in range(97, 123): result+=chr((ord(a[i])-97+5)%26+97) else: result += a[i] return result def decoder(a): """解码加密文本""" result = '' for i in range(len(a)): if ord(a[i]) in range(65, 91): result+=chr((ord(a[i])-65+26-5)%26+65) elif ord(a[i]) in range(97, 123): result+=chr((ord(a[i])-97+26-5)%26+97) else: result += a[i] return result text = input("输入英文文本: ") print(f"编码后的文本: {encoder(text)}") print(f"对编码后的文本解码: {decoder(encoder(text))}")
task.7
def collatz(n): if n%2==0: n=int(n/2) return n else: n=n*3+1 return n try: n=eval(input('输入一个正整数:')) if n<=0 or type(n) is not int: raise except: print('Error:must be a positive inreger') else: list=[] while n!=1: list.append(n) n=collatz(n) list.append(1) print(list)