task1
源代码
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)
运行截图

四处sum作用域不同。第一个是内置函数名称,第二个是赋值名称,第三个是局部变量,第四个是全局变量。
task2_1
源代码
1 def func1(a,b,c,d,e,f): 2 ''' 3 返回参数a,b,c,d,e,f构成的列表 4 默认,参数按位置传递;也支持关键字传递 5 ''' 6 return [a,b,c,d,e,f] 7 8 def func2(a,b,c,*,d,e,f): 9 ''' 10 返回参数a,b,c,d,e,f构成的列表 11 *后面的参数只能按关键字传递 12 ''' 13 return [a,b,c,d,e,f] 14 15 def func3(a,b,c,/,d,e,f): 16 ''' 17 返回参数a,b,c,d,e,f构成的列表 18 /前面的参数只能按位置传递 19 ''' 20 return [a,b,c,d,e,f] 21 22 #func1调用:按位置传递、按参数传递都可以 23 print(func1(1,9,2,0,5,3)) 24 print(func1(a=1,b=9,c=2,d=0,e=5,f=3)) 25 print(func1(1,9,2,f=3,d=0,e=5)) 26 27 #func2调用:d,e,f必须按关键字传递 28 print(func2(11,99,22,d=0,e=55,f=33)) 29 print(func2(a=11,b=99,c=22,d=0,e=55,f=33)) 30 31 #func3调用:a,b,c必须按位置传递 32 print(func3(111,999,222,0,555,333)) 33 print(func3(111,999,222,d=0,e=555,f=333))
运行截图

line33后增加一行函数调用
1 print(func2(11,99,22,0,55,33))
出现错误提示信息

在line38行后,增加一行函数调用
1 print(func3(a=111,b=999,c=222,0,555,333))
出现错误提示信息

task2_2
源代码
1 list1 = [1,9,8,4] 2 3 print(sorted(list1)) 4 print(sorted(list1,reverse=True)) 5 print(sorted(list1,True))
运行截图

python内置函数sorted()中,参数reverse的传递方式必须使用关键字传递
task2_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))
运行截图

task3
源代码
1 def solve(a,b,c): 2 ''' 3 求解一元二次方程,返回方程的两个根 4 5 :para:a,b,c:float 方程系数 6 :return:tuple 7 ''' 8 delta = b*b -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()
运行截图

在line23前面增加一行代码
1 print(solve.__doc__)
运行截图

由图可知,solve()的说明信息能被打印出来
task4
源代码:
1 def list_genarator(a,b,c=1): 2 if c % 1 == 0: 3 return list(range(a,b+1,c)) 4 else: 5 list0 = [] 6 while a <= b: 7 list0.append(a) 8 a = a + c 9 return list0 10 11 list1 = list_genarator(-5,5) 12 print(list1) 13 14 list2 = list_genarator(-5,5,2) 15 print(list2) 16 17 list3 = list_genarator(1,5,0.5) 18 print(list3)
运行截图:

task5
源代码:
1 def is_prime(n): 2 if n < 2: 3 return False 4 else: 5 for i in range(2,n): 6 if n % i == 0: 7 return False 8 break 9 else: 10 return True 11 12 lst1 = [] 13 for i in range(4,21,2): 14 for j in range(1,i): 15 m = i - j 16 if is_prime(j) and is_prime(m) and j <= m: 17 print(f'{i} = {j} + {m}') 18 break
运行截图:

task6
源代码:
1 def encoder(text): 2 text1 = '' 3 for i in text: 4 if 'a' <= i <='z': 5 i = chr((ord(i)-97+5)%26 + 97) 6 elif 'A' <= i <= 'Z': 7 i = chr((ord(i)-65+5)%26 + 65) 8 text1 += i 9 return text1 10 11 12 def decoder(text): 13 text2 = '' 14 for i in text: 15 if 'a' <= i <='z': 16 i = chr((ord(i)-97-5)%26 + 97) 17 elif 'A' <= i <= 'Z': 18 i = chr((ord(i)-65-5)%26 + 65) 19 text2 += i 20 return text2 21 22 text = input('输入英文文本: ') 23 encoded_text = encoder(text) 24 print('编码后的文本: ', encoded_text) 25 26 decoded_text = decoder(encoded_text) 27 print('对编码后的文本解码: ', decoded_text)
运行截图:

task7
源代码:
1 def collatz(n): 2 lst1=[n] 3 while True: 4 if n==1: 5 break 6 if n%2==0: 7 n=int(n/2) 8 lst1.append(n) 9 else: 10 n=3*n+1 11 lst1.append(n) 12 return lst1 13 n=input('Enter a positive intefer:') 14 try: 15 n=int(n) 16 if n<=0 : 17 raise 18 except: 19 print('Error: must be a positive integer') 20 else: 21 print(collatz(n))
运行截图:

task8:
源代码:
1 def func(n): 2 if n == 1: 3 return 1 4 elif n > 1: 5 return 2*func(n-1) + 1 6 7 while True: 8 x = input() 9 if x == '#': 10 print('计算结束') 11 break 12 n = int(x) 13 ans = func(n) 14 print(f'n = {n}, ans = {ans}')
运行截图:
