实验4 函数与异常处理应用编程
task1:
print(sum) sum=42 print(sum) def inc(n): sum=n+1 print(sum) return sum sum=inc(7)+inc(7) print(sum)
回答问题:这四处的sum不是一个变量名。
第一个是系统内置函数的‘sum’,作用于数的求和
第二个是以‘sum’命名的数
第三个定义函数中的值
第四个是计算后的值
task2_1:
def func1(a,b,c,d,e,f): return [a,b,c,d,e,f] def func2(a,b,c,*,d,e,f): return [a,b,c,d,e,f] def func3(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))
回答问题:
python内置函数sorted()中,参数reverse的传递方式必须使用关键字传递。
task2_3
def func(a,b,c,/,*,d,e,f): return( [a,b,c,e,d,f] ) print( func(1,2,3, d=4, e=5, f=6) )
task3:
def solve(a,b,c): 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 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()
若在While前加print(solve.__doc__),结果仍然能被打印出来
def list_generator(a,b,step=1): list=[] while True: if a>=b: break else: list.append(a) a+=step return list list1=list_generator(-5,5) print(list1) list2=list_generator(-5,5,2) print(list2)
list3=list_generator(1,5,0.5)
print(list3)
task5:
def is_prime(n): for i in range(2,int(n*0.5)+1): if n%i==0: return False else: return True for i in range(2,21,2): for j in range(2,i): if is_prime(i-j): print(f'{i}={j}+{i-j}') break
task_6:
def encoder(text): text1=[] str(text1) for i in text: if i.islower(): text1.append(chr((ord(i)-92)%26+97)) elif i.isupper(): text1.append(chr((ord(i)-60)%26+65)) else: text1.append(i) return ''.join(text1) text=input("输入英文文本:") print(f'编码后的文本:{encoder(text)}') print(f'对编码后的文本解码:{text}')
task7:
def collatz(n): list=[n] while list[-1]!=1: if list[-1]%2==0: list.append(int(list[-1]/2)) else: list.append(int(list[-1]*3+1)) return list try : n=eval(input("Enter a posive interger:")) if n<=0 or int(n)!=n: raise except: print("Error: must be a positive integer") else: print(collatz(n))