实验四
#实验任务一
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,line11:全局
line7:局部
#实验任务2_2 list1 = [1, 9, 8, 4] print(sorted(list1)) print(sorted(list1, reverse=True)) print(sorted(list1, True))
答:必须使用关键字传递。
#实验任务2_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))
#实验任务三 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()
答:无法打印出来。
#实验任务四 def list_generator(begin,end,step=1): x = [] i = begin while i >= begin and i <= end: x.append(i) i += step return x list1 = list_generator(-5, 5) print(list1) list2 = list_generator(-5, 5, 2) print(list2) list3 = list_generator(1, 5, 0.5) print(list3)
#实验任务五 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 y=[i for i in range(21)] for x in y[::2]: for a in range(0,20): if is_prime(a) == True: if is_prime(x-a)==True: print(f'{x}={a}+{x-a}') break else: a+=1 else: a+=1
#实验任务六 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))}''')
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)