实验四
task 1
1 print(sum) 2 sum = 42 3 print(sum) 4 def inc(n): 5 sum = n+1 6 print(sum) 7 return sum 8 sum = inc(7) + inc(7) 9 print(sum)

不是同一对象的名称,line1为内置作用域 line3和line11为全局作用域,line7为局部作用域
task 2
2
1 list1 = [1, 9, 8, 4] 2 print( sorted(list1) ) 3 print( sorted(list1, reverse=True) ) 4 print( sorted(list1, True) )

reserve必须使用关键字传递
3
1 def func(a, b, c, /, *, d, e, f): 2 return( [a,b,c,d,e,f] ) 3 print(func(1,2,3,d=4,e=5,f=6))

task3
1 def solve(a, b, c): 2 ''' 3 求解一元二次方程, 返回方程的两个根 4 :para: a,b,c: float 方程系数 5 :return: tuple 6 ''' 7 delta = b*b - 4*a*c 8 delta_sqrt = abs(delta)**0.5 9 p1 = -b/2/a 10 p2 = delta_sqrt/2/a 11 if delta >= 0: 12 root1 = p1 + p2 13 root2 = p1 - p2 14 else: 15 root1 = complex(p1, p2) 16 root2 = complex(p1, -p2) 17 return root1, root2 18 print(solve.__doc__) 19 while True: 20 try: 21 t = input('输入一元二次方程系数a b c, 或者,输入#结束: ') 22 if t == '#': 23 print('结束计算,退出') 24 break 25 a, b, c = map(float, t.split()) 26 if a == 0: 27 raise ValueError('a = 0, 不是一元二次方程') 28 except ValueError as e: 29 print(repr(e)) 30 print() 31 except: 32 print('有其它错误发生\n') 33 else: 34 root1, root2 = solve(a, b, c) 35 print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') 36 print()

task4
1 def list_generator(a,b,c=1): 2 list=[a] 3 while a+c<=b: 4 a=a+c 5 list.append(a) 6 return list 7 list1 = list_generator(-5, 5) 8 print(list1) 9 list2 = list_generator(-5, 5, 2) 10 print(list2) 11 list3 = list_generator(1, 5, 0.5) 12 print(list3)

task5
1 def is_prime(x): 2 for i in range(2,int(x**0.5+2)): 3 a=x%i 4 if a==0: 5 break 6 if a==0 and x!=2: 7 return False 8 elif a!=0 or x==2: 9 return True 10 for i in range(4,21,2): 11 for x in range(2,i): 12 y = i - x 13 if is_prime(x) and is_prime(y): 14 print(f'{i}={x}+{y}') 15 break

task6
1 def encoder(text): 2 x='' 3 for i in text: 4 if 96<ord(i)<123: 5 i=chr((ord(i)+5-97)%26+97) 6 if 65<ord(i)<82: 7 i=chr((ord(i)+5-66)%26+66) 8 x+=i 9 return x 10 def decoder(text): 11 x='' 12 for i in text: 13 if 96<ord(i)<123: 14 i=chr((ord(i)-5-97)%26+97) 15 if 65<ord(i)<82: 16 i=chr((ord(i)-5-66)%26+66) 17 x+=i 18 return x 19 text = input('输入英文文本: ') 20 encoded_text = encoder(text) 21 print('编码后的文本: ', encoded_text) 22 decoded_text = decoder(encoded_text) 23 print('对编码后的文本解码: ', decoded_text)

task 7
1 def collatz(n): 2 if n%2==0: 3 n=n/2 4 elif n%2!=0: 5 n=n*3+1 6 n=int(n) 7 return n 8 try: 9 n=eval(input('Enter a positive integer:')) 10 s=[n] 11 if type(n)!=int: 12 raise ValueError('Error: must be a positive integer') 13 while n!=1: 14 n=collatz(n) 15 s.append(n) 16 print(s) 17 except ValueError as e: 18 print(e)

task8
1 def func(n): 2 if n==0: 3 fn=0 4 else: 5 fn=(func(n-1)+1)*2-1 6 return fn 7 while True: 8 x = input() 9 if x == '#': 10 print('计算结束') 11 break 12 n = int(x) 13 ans = func(n) 14 print(f'n = {n}, ans = {ans}')

浙公网安备 33010602011771号