实验四
#task1.py print(sum) sum=42 print(sum) def inc(n): sum=n+1 print(sum) return sum sum=inc(7)+inc(7) print(sum)
答:不是。
line1:内置
line3,line11:全局
line7:局部
#task2_2.py list1=[1,9,8,4] print(sorted(list1)) print(sorted(list1,reverse=True)) print(sorted(list1,True))
python内置函数sorted()中,参数reverse的传递方式必须使用关键字传递
#task2_3.py def func(a,b,c,/,*,d,e,f): return ([a,b,c,d,e,f]) print(func(1,2,3,d=4,e=5,f=6))
#task3.py 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()
无法打印出来。
#task4.py
def list_generator(begin,end,step=1): x = [] i = begin while i >= begin and i<= end: x.append(i) i += step return x list1=list_generator(-5, 5) print(list1) list2=list_generator(-5, 5, 2) print(list2) list3=list_generator(1, 5, 0.5) print(list3)
#task5.py def is_prime(n): if n < 2: return False for i in range(2,int(n**0.5)+1): if n % i == 0: return False return True y=[i for i in range(21)] for x in y[::2]: for a in range(0,20): if is_prime(a) == True: if is_prime(x-a)==True: print(f'{x}={a}+{x-a}') break else: a+=1 else: a+=1
#task6.py def encoder(z): a = list(z) i = 0 while i < len(z): x = ord(a[i]) if 65 <= x <= 85 or 97 <= x <= 117: y = chr(x + 5) elif 85 < x <= 90 or 117 < x <= 122: y = chr(x - 21) else: y = chr(x) a[i]=y i += 1 return ''.join(a) def decoder(z): a = list(z) i = 0 while i < len(z): x = ord(a[i]) if 70 <= x <= 90 or 102 <= x <= 122: y = chr(x - 5) elif 65 <= x < 70 or 97 <= x < 102: y = chr(x + 21) else: y = chr(x) a[i]=y i += 1 return ''.join(a) z = input('输入英文文本:') print(f'''编码后的文本:{encoder(z)} 对编码后的文本解码:{decoder(encoder(z))}''')
#task7.py def Collatz(n): if n % 2 == 0 and n > 0: return int(n / 2) if n % 2 != 0 and n > 0: return int(3 * n + 1) x = [] a = int(input('Enter a positive integer: ')) while True: try: if a != 1: x.append(a) a = Collatz(a) else: x.append(a) break except: print('Error : must be a positive integer') break print(x)