函数与异常数据编程

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}')

结果

 

posted @ 2023-05-22 21:52  柠七拧巴  阅读(39)  评论(0)    收藏  举报