实验4 函数与异常处理应用编程
实验1
print(sum) sum=42 print(sum) def inc(n): sum=n+1 print(sum) return sum sum=inc(7)+inc(7) print(sum)

Ans: 这里的sum不是一个变量名
line1:内置作用域 line2:全局作用域 line3:局部作用域 line4:全局作用域
实验2
task2_1
def func1(a, b, c, d, e, f): ''' 返回参数a,b,c,d,e,f构成的列表 默认,参数按位置传递; 也支持关键字传递 ''' return [a,b,c,d,e,f] def func2(a, b, c,*, d, e, f): ''' 返回参数a,b,c,d,e,f构成的列表 *后面的参数只能按关键字传递 ''' return [a,b,c,d,e,f] def func3(a, b, c, /, d, e, f): ''' 返回参数a,b,c,d,e,f构成的列表 /前面的参数只能按位置传递 ''' return [a,b,c,d,e,f] print( func1(1,9,2,0,5,3) ) print( func1(a=1, b=9, c=2, d=0, e=5, f=3) ) print( func1(1,9,2, f=3, d=0, e=5)) print( func2(11, 99, 22, d=0, e=55, f=33) ) print( func2(a=11, b=99, c=22, d=0, e=55, f=33) ) print( func3(111, 999, 222, 0, 555, 333)) print( func3(111, 999, 222, d=0, e=555, f=333) )

task2_2
list1=[1,9,8,4] print(sorted(list1)) print(sorted(list1,reverse=True)) print(sorted(list1,True))

是的,需要用关键字传递。
task2_3
def func(a,b,c,/,*,d,e,f): return([a,b,c,d,e,f]) print(func(1,2,3,d=4,e=5,f=6))

实验3
def solve(a, b, c): ''' 求解一元二次方程, 返回方程的两个根 :para: a,b,c: int 方程系数 :return: tuple ''' delta = b*b - 4*a*c delta_sqrt = abs(delta)**0.5 p1 = -b/2/a; p2 = delta_sqrt/2/a if delta>=0: root1 = p1 + p2 root2 = p1 - p2 else: root1 = complex(p1, p2) root2 = complex(p1, -p2) return root1, root2 print(solve.__doc__) while True: try: a,b,c = eval(input('Enter eqution coefficient: ')) if a == 0: raise except: print('invalid input, or, a is zero') break else: root1, root2 = solve(a, b, c) print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') print()

实验4
def list_generator(a,b,c=1): list1=[a] x=a while x+c<=b: x+=c list1.append(x) return list1 list1 = list_generator(-5, 5) print(list1) list2 = list_generator(-5, 5, 2) print(list2) list3 = list_generator(1, 5, 0.5) print(list3)

实验5
def is_prime(x): a=0 for i in range(2,x): if x%i==0: a+=1 else: a+=0 if a==0: return True else: return False list1=[] for i in range (2,21): if is_prime(i)==True: list1.append(i) for i in range(4,21,2): for j in list1: if is_prime(i-j)==True: print(f'{i}={j}+{i-j}') break

实验6
list_s=['a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] list_b=['A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] def encoder(x): re=[] for i in str(x): if i in list_s: a=list_s.index(i) if a<=20: i=list_s[a+5] re.append(i) else: i=list_s[a+5-26] re.append(i) elif i in list_b: a=list_b.index(i) if a<=20: i=list_b[a+5] re.append(i) else: i=list_b[a+5-26] re.append(i) else: re.append(i) re=''.join(re) return re def decoder(x): re=[] for i in str(x): if i in list_s: a=list_s.index(i) if a>=5: i=list_s[a-5] re.append(i) else: i=list_s[a+26-5] re.append(i) elif i in list_b: a=list_b.index(i) if a>=5: i=list_b[a-5] re.append(i) else: i=list_b[a+26-5] re.append(i) else: re.append(i) re=''.join(re) return re x=input('输入英文文本:') print(f'编码后的文本:{encoder(x)}') y=encoder(x) print(f'对编码后的文本解码:{decoder(y)}')

实验7
def collatz(n): re=[n] while True: if n==1: break if n%2==0: n=int(n/2) re.append(n) else: n=3*n+1 re.append(n) return re n=input('Enter a positive intefer:') try: n=int(n) if n<=0 : raise except: print('Error: must be a positive integer') else: print(collatz(n))

浙公网安备 33010602011771号