实验4
实验Task1
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:全局作用域
line3:全局作用域
line7:局部作用域
line11:全局作用域
实验task2-1
1 def func1(a,b,c,d,e,f): 2 return[a,b,c,d,e,f] 3 def func2(a,b,c,*,d,e,f): 4 return[a,b,c,d,e,f] 5 def func3(a,b,c,/,d,e,f): 6 return[a,b,c,d,e,f] 7 print(func1(1,9,2,0,5,3)) 8 print(func1(a=1,b=9,c=2,d=0,e=5,f=3)) 9 print(func1(1,9,2,f=3,d=0,e=5)) 10 11 print(func2(11,99,22,d=0,e=55,f=33)) 12 print(func2(a=11,b=99,c=22,d=0,e=55,f=33)) 13 14 print(func2(111,999,222,0,555,333)) 15 print(func3(111,999,222,d=0,e=555,f=333))

实验task2-2
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
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:int 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 12 if delta>=0: 13 root1=p1+p2 14 root2=p1-p2 15 else: 16 root1=complex(p1,p2) 17 root2=complex(p1,-p2) 18 return root1,root2 19 print(solve.__doc__)
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()

加入一行代码后 重新运算,函数solve()的说明信息(line3-5)被打印出来了,如图。
task4
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 list1=list_generator(-5,5) 9 print(list1) 10 list2=list_generator(-5,5,2) 11 print(list2) 12 list3=list_generator(1,5,0.5) 13 print(list3)

实验task5
1 def is_prime(x): 2 a=0 3 for i in range(2,x): 4 if x%i==0: 5 a+=1 6 else: 7 a+=0 8 if a==0: 9 return True 10 else: 11 return False 12 13 list1=[] 14 for i in range(2,21): 15 if is_prime(i)== True: 16 list1.append(i) 17 for i in range(4,21,2): 18 for j in list1: 19 if is_prime(i-j)==True: 20 print("{}={}+{}".format(i,j,i-j)) 21 break

实验task6
1 list_s=['a','b','c','d','e','f','g','h','i','j','k', 2 'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] 3 list_b=['A','B','C','D','E','F','G','H','I','J','K', 4 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] 5 def encoder(x): 6 re=[] 7 for i in str(x): 8 if i in list_s: 9 a=list_s.index(i) 10 if a<=20: 11 i=list_s[a+5] 12 re.append(i) 13 else: 14 i=list_s[a+5-26] 15 re.append(i) 16 elif i in list_b: 17 a=list_b.index(i) 18 if a<=20: 19 i=list_b[a+5] 20 re.append(i) 21 else: 22 i=list_b[a+5-26] 23 re.append(i) 24 else: 25 re.append(i) 26 re=''.join(re) 27 return re 28 def decoder(x): 29 re=[] 30 for i in str(x): 31 if i in list_s: 32 a=list_s.index(i) 33 if a>=5: 34 i=list_s[a-5] 35 re.append(i) 36 else: 37 i=list_s[a+26-5] 38 re.append(i) 39 elif i in list_b: 40 a=list_b.index(i) 41 if a>=5: 42 i=list_b[a-5] 43 re.append(i) 44 else: 45 i=list_b[a+26-5] 46 re.append(i) 47 else: 48 re.append(i) 49 re=''.join(re) 50 return re 51 52 x=input('输入英文文本:') 53 print(f'编码后的文本:{encoder(x)}') 54 y=encoder(x) 55 print(f'对编码后的文本解码:{decoder(y)}')

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

Task8
1 def func(n): 2 result = 1 3 for i in range(n): 4 result *= 2 5 return result-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}')


浙公网安备 33010602011771号