实验4

 实验任务1:

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,line11:全局

line7:局部

 

 实验任务2:

1
def func1(a,b,c,d,e,f): 2 ''' 3 返回参数a,b,c,d,e,f构成的列表 4 默认,参数按位置传递;也支持关键字传递 5 ''' 6 return[a,b,c,d,e,f] 7 8 9 def func2(a,b,c,d,e,f): 10 ''' 11 返回参数a,b,c,d,e,f构成的列表 12 *后面的参数只能按关键字传递 13 ''' 14 return[a,b,c,d,e,f] 15 16 17 def func3(a,b,c,/,d,e,f): 18 ''' 19 返回参数a,b,c,d,e,f构成的列表 20 /签名档参数只能按位置传递 21 ''' 22 return[a,b,c,d,e,f] 23 24 25 print(func1(1,9,2,0,5,3)) 26 print(func1(a=1,b=9,c=2,d=0,e=5,f=3)) 27 print(func1(1,9,2,f=3,d=0,e=5)) 28 29 30 print(func2(11,99,22,d=0,e=55, f=33)) 31 print(func2(a=11, b=99, c=22, d=0, e=55, f=33)) 32 33 34 print( func3(111, 999, 222, 0, 555, 333)) 35 print( func3(111, 999, 222, d=0, e=555, f=333) )
1 list1= [1, 9, 8, 4]
2 
3 print(sorted(list1))
4 print(sorted(list1, reverse=True))
5 print(sorted(list1, True))

答:必须使用关键字进行传递

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:

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 19 return root1,root2 20 21 22 while True: 23 try: 24 a,b,c=eval(input('Enter eqution coefficient: ')) 25 if a == 0: 26 raise 27 except: 28 print('invalid input,or,a is zero') 29 break 30 else: 31 root1,root2 = solve(a,b,c) 32 print(f'root1 = {root1:.2f},root2 = {root2:.2f}') 33 print()

 

 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 
19     return root1,root2
20 
21 
22 print(solve.__doc__)
23 while True:
24     try:
25         a,b,c=eval(input('Enter eqution coefficient: '))
26         if a == 0:
27             raise
28     except:
29         print('invalid input,or,a is zero')
30         break
31     else:
32         root1,root2 = solve(a,b,c)
33         print(f'root1 = {root1:.2f},root2 = {root2:.2f}')
34         print()

答:无法打印

 

 

 实验任务4:

1
# list_generator()函数定义 2 def list_generator(begin,end,step=1): 3 x = [] 4 i = begin 5 while i >= begin and i<= end: 6 x.append(i) 7 i += step 8 return x 9 10 11 list1=list_generator(-5,5) 12 print(list1) 13 14 list2=list_generator(-5,5,2) 15 print(list2) 16 17 list3=list_generator(1,5,0.5) 18 print(list3)

 

实验任务5:

1
def is_prime(n): 2 if n < 2: 3 return False 4 for i in range(2,int(n**0.5)+1): 5 if n % i == 0: 6 return False 7 return True 8 9 10 y=[i for i in range(21)] 11 for x in y[::2]: 12 for a in range(0,20): 13 if is_prime(a) == True: 14 if is_prime(x-a)==True: 15 print(f'{x}={a}+{x-a}') 16 break 17 else: 18 a+=1 19 else: 20 a+=1

 

实验任务6: 

1
def encoder(z): 2 a = list(z) 3 i = 0 4 while i < len(z): 5 x = ord(a[i]) 6 if 65 <= x <= 85 or 97 <= x <= 117: 7 y = chr(x + 5) 8 elif 85 < x <= 90 or 117 < x <= 122: 9 y = chr(x - 21) 10 else: 11 y = chr(x) 12 a[i]=y 13 i += 1 14 return ''.join(a) 15 16 17 def decoder(z): 18 a = list(z) 19 i = 0 20 while i < len(z): 21 x = ord(a[i]) 22 if 70 <= x <= 90 or 102 <= x <= 122: 23 y = chr(x - 5) 24 elif 65 <= x < 70 or 97 <= x < 102: 25 y = chr(x + 21) 26 else: 27 y = chr(x) 28 a[i]=y 29 i += 1 30 return ''.join(a) 31 32 33 z = input('输入英文文本:') 34 print(f'''编码后的文本:{encoder(z)} 35 对编码后的文本解码:{decoder(encoder(z))}''')

 

实验任务7:

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

 

 

posted on 2022-05-10 18:08  张玮珊  阅读(29)  评论(2编辑  收藏  举报