函数与异常处理应用编程
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')


浙公网安备 33010602011771号