实验任务4
任务一
代码:
print(sum) sum = 42 print(sum) def inc(n): sum = n+1 print(sum) return sum sum = inc(7) + inc(7) print(sum)
运行结果:

问题:
不是,line1sum的作用域为line1到line2,line3的sum等同于line1的;line7的为line5至line7,line11的为line5至line11
任务二
代码:
list1 = [1, 9, 8, 4] print( sorted(list1) ) print( sorted(list1, reverse=True) ) print( sorted(list1, True) )
运行结果:

问题:
是
任务三
代码:
def solve(a, b, c): ''' 求解 一元二次方程, 返回方程的两个根 :para: a,b,c: float 方程系数 :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: 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()
运行截图:
实验四
代码:
def list_genetator(q,z,b = 1): lst = [] while q <= z: if q <= z+1: lst.append(q) q = q+b else: break return lst list1 = list_genetator(-5,5) print(list1) list2 = list_genetator(-5,5,2) print(list2) list3 = list_genetator(1,5,0.5) print(list3)
运行截图:

任务五
代码:
def is_prime(n): if n > 1: if n%2 > 0: return True elif n == 2: return True else: return False else: return False s = [i for i in range(1,21)] s_1 = [] s_2 = [] s_3 = {} for j in s: if is_prime(j) == True: s_1.append(j) for y in s: if y > 2 and y%2 == 0: s_2.append(y) for i in range(len(s_2)): for z in s_1: for q in s_1: if z + q == s_2[i]: s_3.setdefault(s_2[i],(z,q)) for key,value in s_3.items(): a = value[0] b = value[1] print(f'{key} = {a}+{b}')
运行截图:

实验六
代码:
list_s=['a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] list_b=['A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] def encoder(x): re=[] for i in str(x): if i in list_s: a=list_s.index(i) if a<=20: i=list_s[a+5] re.append(i) else: i=list_s[a+5-26] re.append(i) elif i in list_b: a=list_b.index(i) if a<=20: i=list_b[a+5] re.append(i) else: i=list_b[a+5-26] re.append(i) else: re.append(i) re=''.join(re) return re def decoder(x): re=[] for i in str(x): if i in list_s: a=list_s.index(i) if a>=5: i=list_s[a-5] re.append(i) else: i=list_s[a+26-5] re.append(i) elif i in list_b: a=list_b.index(i) if a>=5: i=list_b[a-5] re.append(i) else: i=list_b[a+26-5] re.append(i) else: re.append(i) re=''.join(re) return re x=input('输入英文文本:') print(f'编码后的文本:{encoder(x)}') y=encoder(x) print(f'对编码后的文本解码:{decoder(y)}')
截图:
实验七
代码:
def collatz(n): re=[n] while True: if n==1: break if n%2==0: n=int(n/2) re.append(n) else: n=3*n+1 re.append(n) return re n=input('Enter a positive intefer:') try: n=int(n) if n<=0 : raise except: print('Error: must be a positive integer') else: print(collatz(n))
截图:
实验八
代码:
def func(n): if n==0: return 0 else: return 2*(func(n-1)+1)-1 while True: x=input() if x=='#': print('计算结束') break n=int(x) ans=func(n) print(f'n={n},ans={ans}')

浙公网安备 33010602011771号