实验四
1
1 print(sum) 2 sum = 42 3 print(sum) 4 def inc(n): 5 sum = n+1 6 print(sum) 7 return sum 8 sum = inc(7) + inc(7) 9 print(sum)
不是,依次为内置作用域,作用于闭包函数外的函数中的作用域(Enclosing,简写为 E),局部作用域,全局作用域
2—1
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 def func2(a, b, c,*, d, e, f): 8 ''' 9 返回参数a,b,c,d,e,f构成的列表 10 *后面的参数只能按关键字传递 11 ''' 12 return [a,b,c,d,e,f] 13 def func3(a, b, c, /, d, e, f): 14 ''' 15 返回参数a,b,c,d,e,f构成的列表 16 /前面的参数只能按位置传递 17 ''' 18 return [a,b,c,d,e,f] 19 20 # func1调用:按位置传递、按参数传递都可以 21 print( func1(1,9,2,0,5,3) ) 22 print( func1(a=1, b=9, c=2, d=0, e=5, f=3) ) 23 print( func1(1,9,2, f=3, d=0, e=5)) 24 # func2调用:d,e,f必须按关键字传递 25 print( func2(11, 99, 22, d=0, e=55, f=33) ) 26 print( func2(a=11, b=99, c=22, d=0, e=55, f=33) ) 27 28 print( func2(11, 99, 22, 0, 55, 33) ) 29 30 # func3调用:a,b,c必须按位置传递 31 print( func3(111, 999, 222, 0, 555, 333)) 32 print( func3(111, 999, 222, d=0, e=555, f=333) )
reserve以key判断
1 list1 = [1, 9, 8, 4] 2 print( sorted(list1) ) 3 print( sorted(list1, reverse=True) ) 4 print( sorted(list1, True) )
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))
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 7 if delta >= 0: 8 root1 = p1 + p2 9 root2 = p1 - p2 10 else: 11 root1 = complex(p1, p2) 12 root2 = complex(p1, -p2) 13 14 return root1, root2 15 16 print(solve.__doc__) 17 while True: 18 try: 19 a,b,c = eval(input('Enter eqution coefficient: ')) 20 if a == 0: 21 raise 22 except: 23 print('invalid input, or, a is zero') 24 break 25 else: 26 root1, root2 = solve(a, b, c) 27 print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') 28 print()
1 def list_generator(a,b,c=1): 2 l=[a] 3 while True: 4 if c==None: 5 a+=1 6 l.append(a) 7 if a==b: 8 break 9 else: 10 a+=c 11 l.append(a) 12 if a==b: 13 break 14 return l 15 list1 = list_generator(-5,5) 16 print(list1) 17 18 list2 = list_generator(-5,5,2) 19 print(list2) 20 21 list3 = list_generator(1,5,0.5) 22 print(list3)
1 from math import sqrt 2 3 def is_prime(n): 4 if n==1 or n==0: 5 return False 6 for i in range(2,int(sqrt(n)+1)): 7 if n%i==0: 8 return False 9 return True 10 def gd(x): 11 for i in range(2,x): 12 if is_prime(i): 13 if is_prime(x-i): 14 print(x,'=',i,'+',x-i) 15 return True 16 return False 17 i=4 18 while(gd(i) and i<20): 19 i+=2
1 def encoder(s): 2 s=list(s) 3 for i in range(len(s)): 4 if s[i].isalpha(): 5 if 'a'<=s[i].lower()<'v': 6 s[i]=chr(ord(s[i])+5) 7 else: 8 s[i]=chr(ord(s[i])-21) 9 else: 10 s[i]=s[i] 11 s=''.join(s) 12 return s 13 def decoder(s): 14 s=list(s) 15 for i in range(len(s)): 16 if s[i].isalpha(): 17 if 'a'<=s[i].lower()<='e': 18 s[i]=chr(ord(s[i])+21) 19 elif 'e'<s[i].lower()<='z': 20 s[i]=chr(ord(s[i])-5) 21 else: 22 s[i]=s[i] 23 s=''.join(s) 24 return s 25 s=input('输入英文文本: ') 26 print(f'编码后的文本:{encoder(s)}') 27 print(f'对编码后的文本解码:{decoder(encoder(s))}')
1 def collatz(n): 2 if n%2==0: 3 return int(n/2) 4 else: 5 return int(n*3+1) 6 try: 7 l=[] 8 x=int(input('Enter a positive integer: ')) 9 l.append(x) 10 if x<=0: 11 raise 12 while True: 13 c=collatz(x) 14 l.append(c) 15 x=c 16 if x==1: 17 break 18 print(l) 19 except: 20 print('Error: must be a positive integer')