task 1
程序源码:
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 sum = inc(7) + inc(7) 10 print(sum)
运行截图:
Q1: task1.py源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。
这4处使用的标识符sum是同一个对象的名称吗?如果不是,请以文字方式回答这4行中标识符sum的作用域。 A1:不是,1.Built-in 2.Global 3.Local 4.Global 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 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 print(func2(11,99,22,0,55,33)) 31 32 #func3调用:a,b,c必须按位置传递 33 print(func3(111,999,222,0,555,333)) 34 print(func3(111,999,222,d=0,e=555,f=333))
运行截图:
在line38后加一行函数调用
程序源码:
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 32 #func3调用:a,b,c必须按位置传递 33 print(func3(111,999,222,0,555,333)) 34 print(func3(111,999,222,d=0,e=555,f=333)) 35 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))
运行截图:
Q2: python内置函数sorted()中,参数reverse的传递方式是否必须使用关键字传递?
A2: 是
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 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 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()
运行截图:
task4
程序源码:
1 def list_generator(a,b,c = 1): 2 y = [] 3 while a <= b: 4 y.append(a) 5 a += c 6 return y 7 8 list1 = list_generator(-5, 5) 9 print(list1) 10 list2 = list_generator(-5, 5, 2) 11 print(list2) 12 list3 = list_generator(1, 5, 0.5) 13 print(list3)
运行截图:
task5
程序源码:
1 def is_prime(n): 2 x = 2 3 m = True 4 if n == 2: 5 return True 6 while n > x: 7 if n%x == 0 and m == True: 8 m = False 9 else: 10 x += 1 11 return m 12 13 for number in range(2,21,2): 14 for x in range(2,int(number/2) + 1): 15 y = number-x 16 if is_prime(x) == True and is_prime(y) == True: 17 print('{} = {} +{}'.format(number,x,y)) 18 break 19
运行截图:
task6
程序源码:
1 def encoder(text): 2 list = [] 3 for i in text: 4 if 65 <= ord(i) <= 85 or 97 <= ord(i) <= 117: 5 list.append(chr(ord(i)+5)) 6 elif 86 <= ord(i) <= 90 or 118 <= ord(i) <= 122: 7 list.append(chr(ord(i)-21)) 8 else: 9 list.append(i) 10 return ''.join(list) 11 12 def decoder(text): 13 list = [] 14 for i in text: 15 if 70 <= ord(i) <= 90 or 102 <= ord(i) <= 122: 16 list.append(chr(ord(i)-5)) 17 elif 65 <= ord(i) <= 69 or 97 <= ord(i) <= 101: 18 list.append(chr(ord(i)+21)) 19 else: 20 list.append(i) 21 return ''.join(list) 22 23 text = input('输入英文文本:') 24 25 encoded_text = encoder(text) 26 print('编码后的文本: ', encoded_text) 27 decoded_text = decoder(encoded_text) 28 print('对编码后的文本解码: ', decoded_text)
运行截图:
task7
程序源码:
1 def collatz(n): 2 if n%2 == 0: 3 return n/2 4 else: 5 return 3*n+1 6 7 8 try: 9 n = int(input('Enter a positive integer:')) 10 if n > 0: 11 list = [] 12 while n != 1: 13 list.append(n) 14 n = collatz(n) 15 list.append(1) 16 print(list) 17 else: 18 print('Error:must be a positive integer') 19 20 except: 21 print('Error:must be a positive integer')
运行截图:
task8
程序源码:
1 def func(n): 2 if n<=1: 3 return 1 4 return func(n-1)*2+1 5 while True: 6 x=input() 7 if x=='#': 8 print('计算结束') 9 break 10 n=int(x) 11 ans=func(n) 12 print(f'n = {n},ans = {ans}')
运行截图:
标签:11,func1,return,函数,编程,源码,实验,print,def From: https://www.cnblogs.com/p-s-y-0309/p/17408135.html