实验4 函数与异常处理应用编程
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是指python内置求和函数sum,line3的sum是指line2的变量sum,line7的sum是指函数inc里面的临时变量,line11的sum也是指一个变量。
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 print(func(1,2,3,d=4,e=5,f=6))
运行测试截图
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 if delta>=0: 7 root1=p1+p2 8 root2=p1-p2 9 else: 10 root1=complex(p1,p2) 11 root2=complex(p1,-p2) 12 return root1,root2 13 print(solve.__doc__) 14 while True: 15 try: 16 a,b,c=eval(input('Enter eqution coefficient:')) 17 if a==0: 18 raise 19 except: 20 print('invalid input,or,a is zero') 21 break 22 else: 23 root1,root2=solve(a,b,c) 24 print(f'root1={root1:.2f},root2={root2:.2f}') 25 print()
运行测试截图
task4.py
1 def list_generator(a,b,c=1): 2 x=[] 3 while(a<=b): 4 x.append(a) 5 a+=c 6 return x 7 8 list1=list_generator(-5,5) 9 print(list1) 10 11 list2=list_generator(-5,5,2) 12 print(list2) 13 14 list3=list_generator(1,5,0.5) 15 print(list3)
运行测试截图
task5.py
1 def is_prime(a): 2 sum=0 3 for i in range(2,a): 4 if a%i==0: 5 sum+=1 6 if sum!=0: 7 return False 8 elif sum==0: 9 return True 10 def ou(b): 11 if b%2==0: 12 return True 13 else: 14 return False 15 for i in range(3,21): 16 if ou(i)==True: 17 for j in range(2,i): 18 if is_prime(j)==True: 19 if is_prime(i-j)==True: 20 print("{}={}+{}".format(i,j,i-j)) 21 break
运行测试截图
task6.py
1 def encoder(a): 2 if 'V'<=a<='Z': 3 x=chr(ord('A')+4-(ord('Z')-ord(a))) 4 elif 'v'<=a<='z': 5 x=chr(ord("a")+4-(ord('z')-ord(a))) 6 else: 7 x=chr(ord(a)+5) 8 return x 9 def decoder(a): 10 if 'A'<=a<='E': 11 x=chr(ord('Z')-(4-(ord(a)-ord('A')))) 12 elif 'a'<=a<='e': 13 x=chr(ord("z")-(4-(ord(a)-ord('a')))) 14 else: 15 x=chr(ord(a)-5) 16 return x 17 x=input("输入英语文本:") 18 f=[] 19 for i in x: 20 f.append(i) 21 k=0 22 for j in f: 23 if 'A'<=j.upper()<='Z': 24 f[k]=encoder(j) 25 k+=1 26 k=0 27 f1="".join(f) 28 print("编码后的文本:{}".format(f1)) 29 f2=[] 30 for i1 in f1: 31 f2.append(i1) 32 for j1 in f2: 33 if 'A'<=j1.upper()<='Z': 34 f2[k]=decoder(j1) 35 k+=1 36 f3="".join(f2) 37 print("对编码后的文本解码:{}".format(f3))
运行测试截图
task7.py
1 def collatz(a): 2 if a%2!=0: 3 return a*3+1 4 else: 5 return int(a/2) 6 try: 7 n = int(input("Enter a positive integer:")) 8 x=[n] 9 f=0 10 f1=collatz(n) 11 while(f==0): 12 if f1==1: 13 f=1 14 else: 15 x.append(f1) 16 f1=collatz(f1) 17 print(x) 18 except ValueError: 19 print("Error:must be a positive integer")
运行测试截图