实验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}')

 

posted @ 2023-05-23 17:42  puppygaga  阅读(18)  评论(0)    收藏  举报