函数与异常处理应用编程
task1
print(sum) sum = 42 print(sum) def inc(n): sum = n+1 print(sum) return sum sum = inc(7) + inc(7) print(sum)
不是一个变量名
line1 内置
line3 全局作用域
line7 局部作用域
line11 全局作用域
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))
task3
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 ZeroDivisionError 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()
def list_generator(a,b,c=1): l=[a] while True: if c==None: a+=1 l.append(a) if a==b: break else: a+=c l.append(a) if a==b: break return l list1 = list_generator(-5,5) print(list1) list2 = list_generator(-5,5,2) print(list2) list3 = list_generator(1,5,0.5) print(list3)
from math import sqrt def is_prime(n): if n==1 or n==0: return False for i in range(2,int(sqrt(n)+1)): if n%i==0: return False return True def gd(x): for i in range(2,x): if is_prime(i): if is_prime(x-i): print(x,'=',i,'+',x-i) return True return False i=4 while(gd(i) and i<20): i+=2
def encoder(s): s=list(s) for i in range(len(s)): if s[i].isalpha(): if 'a'<=s[i].lower()<'v': s[i]=chr(ord(s[i])+5) else: s[i]=chr(ord(s[i])-21) else: s[i]=s[i] s=''.join(s) return s def decoder(s): s=list(s) for i in range(len(s)): if s[i].isalpha(): if 'a'<=s[i].lower()<='e': s[i]=chr(ord(s[i])+21) elif 'e'<s[i].lower()<='z': s[i]=chr(ord(s[i])-5) else: s[i]=s[i] s=''.join(s) return s s=input('输入英文文本: ') print(f'编码后的文本:{encoder(s)}') print(f'对编码后的文本解码:{decoder(encoder(s))}')
def collatz(n): if n%2==0: return int(n/2) else: return int(n*3+1) try: l=[] x=int(input('Enter a positive integer: ')) l.append(x) if x<=0: raise while True: c=collatz(x) l.append(c) x=c if x==1: break print(l) except: print('Error: must be a positive integer')