实验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")

运行测试截图

 

posted @ 2022-05-07 19:16  昏汐  阅读(24)  评论(2编辑  收藏  举报