实验任务1
task1.py
1 print(sum) 2 sum = 42 3 print(sum) 4 5 def inc(n): 6 sum = n+1 7 print(sum) 8 return sum 9 10 sum = inc(7) + inc(7) 11 print(sum)

sum: line1:内置函数sum函数名称
line3:赋值一个新变量的名称
line7:局部变量
line11:全局变量
实验任务2
task2_2.py
1 list1 = [1, 9, 8, 4] 2 3 print( sorted(list1) ) 4 print( sorted(list1, reverse=True) ) 5 print( sorted(list1, True) )

在Python内置函数sorted()中,参数reverse的传递方式必须使用关键字传递。
task2_3.py
1 def func(a, b, c, /, *, d, e, f): 2 return( [a,b,c,d,e,f] ) 3 4 print(func(1,2,3,d=4,e=5,f=6))

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

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

实验任务5
task5.py
1 def is_prime(n): 2 if n==2: 3 return True 4 else: 5 for i in range(2,n): 6 if n%i==0: 7 return False 8 break 9 else: 10 return True 11 12 for i in range(4,21,2): 13 for x in range(2,i): 14 if is_prime(x): 15 if (i-x)>1 and is_prime(i-x): 16 print(f'{i} = {x} + {i-x}') 17 break

实验任务6
task6.py
1 def encoder(text): 2 new_text='' 3 for i in text: 4 if i.isalpha(): 5 i=chr(ord(i)+5) 6 if i.isalpha(): 7 new_text+=i 8 else: 9 i=chr(ord(i)-26) 10 new_text+=i 11 else: 12 new_text+=i 13 return new_text 14 15 def decoder(text): 16 old_text='' 17 for i in text: 18 if i.isalpha(): 19 i=chr(ord(i)-5) 20 if i.isalpha(): 21 old_text+=i 22 else: 23 i=chr(ord(i)+26) 24 old_text+=i 25 else: 26 old_text+=i 27 return old_text 28 29 text = input('输入英文文本: ') 30 31 encoded_text = encoder(text) 32 print('编码后的文本: ', encoded_text) 33 34 decoded_text = decoder(encoded_text) 35 print('对编码后的文本解码: ', decoded_text)

实验任务7
task7.py
1 def collatz(n): 2 x=[n] 3 while x[-1]!=1: 4 if n%2==0: 5 n=n//2 6 x.append(n) 7 else: 8 n=n*3+1 9 x.append(n) 10 return x 11 12 try: 13 n=int(input('Enter a positive integer:')) 14 if n<=0: 15 raise 16 except: 17 print('Error: must be a positive integer') 18 else: 19 print(collatz(n))

实验任务8
task8.py
1 def func(n): 2 if n==0: 3 return 0 4 else: 5 return func(n-1)*2+1 6 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}')
