函数与异常数据编程
text1
1 print(sum) 2 sum = 42 3 print(sum) 4 5 def inc(n): 6 sum = n+1 7 print(sum) 8 return(sum) 9 10 sum = inc(7) + inc(7) 11 print(sum)
结果:

text2_1
1 def func1(a,b,c,d,e,f): 2 return[a,b,c,d,e,f] 3 4 def func2(a,b,c,*,d,e,f): 5 return[a,b,c,d,e,f] 6 #'*'后面只可以通过参数访问 7 def func3(a,b,c,/,d,e,f): 8 return[a,b,c,d,e,f] 9 #‘/’前面的只能通过位置访问 10 11 print(func1(1,9,2,0,5,3)) 12 print(func1(a=1, b=9, c=2, d=0, e=5, f=3)) 13 print(func1(1,9,2, d=0, e=5, f=3)) 14 15 print(func2(11,99,22, d=0, e=55, f=33)) 16 print(func2(a=11, b=99, c=22, d=0, e=55, f=33)) 17 18 print(func3(111,999,222,0,555,333)) 19 print(func3(111,999,222,d=0, e=555, f=333))
结果

text2_1_1
1 def func1(a,b,c,d,e,f): 2 return[a,b,c,d,e,f] 3 4 def func2(a,b,c,*,d,e,f): 5 return[a,b,c,d,e,f] 6 #'*'后面只可以通过参数访问 7 def func3(a,b,c,/,d,e,f): 8 return[a,b,c,d,e,f] 9 #‘/’前面的只能通过位置访问 10 11 print(func1(1,9,2,0,5,3)) 12 print(func1(a=1, b=9, c=2, d=0, e=5, f=3)) 13 print(func1(1,9,2, d=0, e=5, f=3)) 14 15 print(func2(11,99,22, d=0, e=55, f=33)) 16 print(func2(a=11, b=99, c=22, d=0, e=55, f=33)) 17 print(func2(11,99,22,0,55,33)) 18 19 print(func3(111,999,222,0,555,333)) 20 print(func3(111,999,222,d=0, e=555, f=333)) 21 print(func3(a=111,b=999,c=222,0,555,333))
结果

text2_2
1 list1 = [1,9,8,4] 2 3 print(sorted(list1)) 4 print(sorted(list1, reverse=True)) 5 print(sorted(list1, True))
结果

text2_3
1 def func(a,b,c,/,*,d,e,f):2 return([a,b,c,d,e,f]) 3 4 print(func(1,2,3,d=4,e=5,f=6))
结果

text3_1
1 def solve(a, b, c): 2 ''' 3 求解一元二次方程,返回方程的两个根 4 5 :para:a, b, c: float 方程系数 6 :return: tuple 7 ''' 8 delta = b**2 - 4*a*c 9 delta_sqrt = abs(delta)**0.5 10 p1 = -b/2/a 11 p2 = delta_sqrt/2/a 12 13 if delta > 0: 14 root1 = p1 + p2 15 root2 = p1 - p2 16 else: 17 root1 = complex(p1, p2) 18 root2 = complex(p1, -p2) 19 20 return root1, root2 21 22 while True: 23 try: 24 t = input('输入一元二次方程系数a, b, c, 或者,输入#结束:') 25 if t == '#': 26 print('结束计算,退出') 27 break 28 a, b, c = map(float, t.split()) 29 if a == 0: 30 raise ValueError('a = 0,不是一元二次方程') 31 except ValueError as e: 32 print(repr(e)) 33 print() 34 except: 35 print('有其他错误发生\n') 36 else: 37 root1, root2 = solve(a, b, c) 38 print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') 39 print()
结果

text3_2
1 def solve(a, b, c): 2 ''' 3 求解一元二次方程,返回方程的两个根 4 5 :para:a, b, c: float 方程系数 6 :return: tuple 7 ''' 8 delta = b**2 - 4*a*c 9 delta_sqrt = abs(delta)**0.5 10 p1 = -b/2/a 11 p2 = delta_sqrt/2/a 12 13 if delta > 0: 14 root1 = p1 + p2 15 root2 = p1 - p2 16 else: 17 root1 = complex(p1, p2) 18 root2 = complex(p1, -p2) 19 20 return root1, root2 21 22 print(solve.__doc__) 23 while True: 24 try: 25 t = input('输入一元二次方程系数a, b, c, 或者,输入#结束:') 26 if t == '#': 27 print('结束计算,退出') 28 break 29 a, b, c = map(float, t.split()) 30 if a == 0: 31 raise ValueError('a = 0,不是一元二次方程') 32 except ValueError as e: 33 print(repr(e)) 34 print() 35 except: 36 print('有其他错误发生\n') 37 else: 38 root1, root2 = solve(a, b, c) 39 print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') 40 print()
结果

text4
1 def list_generator(*,a, b, c = 1): 2 ''' 3 list_generator(), 生成指定范围区间、指定步长的列表。要求,范围区间起始值、终止值、步长 4 ,通过参数传递。调用时,如果没有指定步长,默认步长为1 5 ''' 6 if type(c) == 1: 7 lista = list(range(a, b+1)) 8 else: 9 lista = [] 10 for i in range(0, int((b-a+2)/c)): 11 n = a 12 n += i*c 13 if a <= n <= b: 14 lista.append(n) 15 return lista 16 print(list_generator.__doc__) 17 list1 = list_generator(a = -5, b = 5) 18 print(list1) 19 list2 = list_generator(a = -5, b = 5, c = 2) 20 print(list2) 21 list3 = list_generator(a = 1, b = 5, c = 0.5) 22 print(list3)
结果

text5
1 def is_prime(n): 2 l = [] 3 for i in range(2,n): 4 if n%i == 0: 5 l.append(i) 6 else: 7 continue 8 if len(l) == 0 or n == 2: 9 return True 10 else: 11 return False 12 13 14 15 prime = [] 16 for i in range(2,21): 17 if is_prime(i): 18 prime.append(i) 19 else: 20 continue 21 22 23 for j in range(2,21,2): 24 for a in prime: 25 if (j-a) in prime and a <= (j-a): 26 print(f'{j} = {a} + {j-a}') 27 else: 28 continue
结果

text6
1 #编码函数encoder()定义 2 def encoder(text): 3 text_1 = list(text) 4 text_2 = [] 5 for i in text_1: 6 a = ord(i) 7 if 97 <= a <= 117 or 65 <= a <= 85: 8 b = a + 5 9 elif 86 <= a <= 90: 10 b = 64 + (a-85) 11 elif 118 <= a <= 122: 12 b = 96 + (a-117) 13 else: 14 b = a 15 text_2.append(chr(b)) 16 return (''.join(text_2)) 17 18 #解码函数decoder()定义 19 def decoder(text): 20 text_1 = list(text) 21 text_2 = [] 22 for i in text_1: 23 a = ord(i) 24 if 102 <= a <= 122 or 70 <= a <= 90: 25 b = a - 5 26 elif 97 <= a <= 101: 27 b = 122 - (103 - a) 28 elif 65 <= a <= 69: 29 b = 90 - (70 - a) 30 else: 31 b = a 32 text_2.append(chr(b)) 33 return(''.join(text_2)) 34 35 36 text = input('输入英文文本: ') 37 encoded_text = encoder(text) 38 print('编码后的文本: ', encoded_text) 39 decoded_text = decoder(encoded_text) 40 print('对编码后的文本解码: ', dcoded_text)
结果

text7
1 def collatz(n): 2 lst = [n] 3 while lst[-1] != 1: 4 if lst[-1]%2 == 1: 5 lst.append(lst[-1]*3 + 1) 6 else: 7 lst.append(lst[-1]//2) 8 print(lst) 9 return lst 10 11 try: 12 n = int(input('输入一个正整数')) 13 if n <= 0: 14 raise 15 except : 16 print('Error:must be a positive integer') 17 else: 18 collatz(n)
结果

text8
1 def func(n): 2 if n == 1: 3 return 1 4 else: 5 return 2*func(n-1) + 1 6 7 8 while True: 9 x = input() 10 if x == '#': 11 print('计算结束') 12 break 13 n = int(x) 14 ans = func(n) 15 print(f'n = {n}, ans = {ans}')
结果

浙公网安备 33010602011771号