5.4 实践作业
2022-05-04
print(sum) #<built-in function sum> 内置函数冲突 print sum嵌套但是sum没有输入参数 作用于该行代码 sum = 42 # 全局变量 print(sum) #全局变量名 def inc(n): sum = n+1 print(sum) #区域变量 只在def inc(n)内部起作用 return sum sum = inc(7) + inc(7) print(sum) #全局变量作用其已经以下的sum (更新了上面的全局变量sum)
task2
# task——2 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] # func1调用:按位置传递、按参数传递都可以 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)) #没有参数 默认值要全部放在最左边 # func2调用:d,e,f必须按关键字传递 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( func2(11, 99, 22, 0, 55, 33) ) #没有按照要求传递参数 # func3调用:a,b,c必须按位置传递 print( func3(111, 999, 222, 0, 555, 333)) print( func3(111, 999, 222, d=0, e=555, f=333) ) # print(func3(a=111, b=999, c=222, 0, 555, 333) ) #没有按照要求传递参数
task-3
# task——3 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 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() # b=被打印出来
task——4
# task _ 5
def list_generator(a,b,c=1):
if c!=1:
l=[]
while a<=b :
l.append(a)
a+=c
return l
else:
return [i for i in range(a, b + 1)]
list1 = list_generator(-5, 5)
print(list1)
list2 = list_generator(-5, 5, 2)
print(list2)
list3 = list_generator(1, 5, 0.5)
print(list3)
task——5
# # task _ 5 def is_prime(x): n = 0 for i in range(2,x): if x%i == 0: n+=1 if n==0: return 'True' else: return 'False' print(is_prime(4)) prime = [] for i in range(1,21): if is_prime(i) =='True': prime.append(i) else: pass print(prime) # for j in prime: for i in range(2,21,2): for j in range(2,i): if is_prime(i-j) == 'True': print(f'{j}+{i-j}={i}') break
task_6
# task_6 def encoder(n): text = [] for i in n: if i.isupper(): text.append(chr((ord(i) - 60) % 26 + 65)) elif i.islower(): text.append(chr((ord(i) - 92) % 26 + 97)) else: text.append(i) return ''.join(text) def decoder(n): text = [] for i in n: if i.isupper(): text.append(chr((ord(i) - 44) % 26 + 65)) elif i.islower(): text.append(chr((ord(i) - 76) % 26 + 97)) else: text.append(i) return ''.join(text) n = input(":") print(f'英文文本:{n}\n编码后的文本:{encoder(n)}\n对编码后的文本解码:{decoder(encoder(n))}')
task_7
# task——7 def Collatz(n): list1 = [n] while list1[-1] != 1: if list1[-1]%2 == 0: list1.append(int(list1[-1]/2)) else: list1.append(int(3*list1[-1]+1)) return list1 print(Collatz(5)) try: n =eval(input('Enter a positive integer:')) if n<=0 or n !=int(n): raise except: print('Error: must be a positive integer') else: print(Collatz(n))