实验4
1.实验任务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)
运行程序截图:

关于问题回答:不是。line1中是Python的内置函数,line3是指lin2的全局变量sum,line7中是inc函数中的局部变量,line11中是指line10的全局变量
2.实验任务2
task2-2.py
程序源代码:
list1 = [1,9,8,4] print(sorted(list1)) print(sorted(list1,reverse = True)) print(sorted(list1,True))
运行程序截图:

关于问题的回答: task2_2所示情况中,必须使用关键字传递reversse
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.实验任务3
task3.py
程序源代码:
1 def solve(a,b,c): 2 delta = b*b -4*a*c 3 delta_sqrt = abs(delta)**0.5 4 p1 = -b/2/a 5 p2 = delta_sqrt/2/a 6 7 if delta >=0: 8 root1 = p1+p2 9 root2 = p1-p2 10 else: 11 root1 = complex(p1,p2) 12 root2 = complex(p1,-p2) 13 14 return root1,root2 15 16 print(solve.__doc__) 17 while True: 18 try: 19 t = input() 20 if t=='#': 21 print('结束计算,退出') 22 break 23 a,b,c = map(float,t.split()) 24 if a ==0: 25 raise ValueError('a = 0,不是一元二次方程') 26 except ValueError as e: 27 print(repr(e)) 28 print() 29 except: 30 print('有其它错误发生\n') 31 else: 32 root1,root2 = solve(a,b,c) 33 print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') 34 print()
运行程序截图:

4.实验任务4
task4.py
运行源代码:
1 def list_generator(*n): 2 if len(n)==2: 3 a = n[0] 4 b = n[1] 5 return (list(range(a,b+1))) 6 else: 7 a = n[0] 8 b = n[1] 9 c = n[2] 10 if c ==int(c): 11 return (list(range(a,b+1,c))) 12 else: 13 ls = [a] 14 while a<b: 15 a = a+c 16 ls.append(a) 17 return ls 18 19 list1 = list_generator(-5,5) 20 print(list1) 21 22 list2 = list_generator(-5,5,2) 23 print(list2) 24 25 list3 = list_generator(1,5,0.5) 26 print(list3)
程序运行截图:

5.实验任务5
task5.py
实验源代码:
def is_prime(n): if n ==1: return False elif n ==2: return True else: for i in range(2,n): if n%i==0: break return False else: if i ==n-1: return True for i in range(4,21,2): print('{} = '.format(i),end ='') t1 = 2 t2 = i-t1 while t2>=t1: if is_prime(t1) and is_prime(t2): print('{} + {}'.format(t1,t2)) break else: t1+=1 t2-=1
运行程序截图:

6.实验任务6
task6.py
程序源代码:
1 def encoder(n): 2 ans = '' 3 for i in n: 4 if ord(i)>117: 5 t = 97+5-123+ord(i) 6 ans = ans + chr(t) 7 elif ord(i)>=97 and ord(i)<=117: 8 t = ord(i) + 5 9 ans = ans + chr(t) 10 elif ord(i)<97 and ord(i)>85: 11 t = 65+5-123+ord(i) 12 ans = ans + chr(t) 13 elif ord(i)<=85 and ord(i)>=65: 14 t = ord(i) + 5 15 ans = ans + chr(t) 16 else: 17 ans = ans +i 18 return ans 19 20 21 def decoder(n): 22 ans = '' 23 for i in n: 24 if ord(i)<102 and ord(i)>=97: 25 t = 122-5+ord(i)-96 26 ans = ans + chr(t) 27 elif ord(i)>=102 and ord(i)<=122: 28 t = ord(i) - 5 29 ans = ans + chr(t) 30 elif ord(i)<70 and ord(i)>=65: 31 t = 90+5-ord(i)+65 32 ans = ans + chr(t) 33 elif ord(i)>=70 and ord(i)<=90: 34 t = ord(i) - 5 35 ans = ans + chr(t) 36 else: 37 ans = ans +i 38 return ans 39 40 text = input('输入英文文本: ') 41 encoded_text = encoder(text) 42 print('编码后的文本: ', encoded_text) 43 decoded_text = decoder(encoded_text) 44 print('对编码后的文本解码: ', decoded_text)
运行程序截图:

7.实验任务7
task7.py
程序源代码:
1 def collatz(n): 2 ans = [n] 3 while n !=1: 4 if n%2 == 0: 5 n = int(n/2) 6 ans.append(n) 7 else: 8 n = n*3+1 9 ans.append(n) 10 return ans 11 12 while True: 13 try: 14 t = input('Enter a positive integer:') 15 if t.isdigit(): 16 t = int(t) 17 print(collatz(t)) 18 break 19 else: 20 raise ValueError('Error: must be a positive integer') 21 except ValueError as f: 22 print(f) 23 break
运行程序截图:

8.实验任务8
task8.py
程序源代码:
1 def func(n): 2 if n ==1: 3 return 1 4 else: 5 return 2*func(n-1)+1 6 7 while True: 8 x = input() 9 if x == '#': 10 print('计算结束') 11 break 12 else: 13 n = int(x) 14 ans = func(n) 15 print(f'n = {n}, ans = {ans}')
运行程序截图:


浙公网安备 33010602011771号