实验4
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)

源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。 这4处使用的标识符sum是代表一个变量名吗?如果不是,请分别指出这4行中变量sum的作用域。
不是,1.Built-in2.Global全局变量42 3.Local(n+1)4.Global(inc(7) + inc(7))
task2.py
python内置函数sorted()中,参数reverse的传递方式是否必须使用关键字传递?是
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): ls = [] a = begin b = end while a <= b: ls.append(a) a += step return ls 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(a): for i in range(2, int(a)+1): if not n%i: return False else: return True ls = [] for i in range(20): if is_prime(i): ls.append(i) def summary(x): i = 0 while True: for j in range(i, len(ls)): s = ls[i]+ls[j] if x == s: s = f"{s} = {ls[i]} + {ls[j]}" return s i += 1 for i in range(4, 21, 2): print(summary(i))

task6.py
z=0 x=str(input('输入英文文本:')) for i in range(len(x)): if 128>ord(x[i])+5>122 or 96>ord(x[i])+5>90: a=ord(x[i])-21 z=z+1 elif 65<=ord(x[i])<=85 or 97<=ord(x[i])+5<=117: a=ord(x[i])+5 z=z+1 else: a=ord(x[i]) z=z+1 if z==1: print('编码后的文本',end='') print(chr(a),end='') print() print('对编码后的文本解码',x)


task7.py
def collatz(a): """验证Collatz猜想""" if not a % 2: return a / 2 else: return 3 * a + 1 try: n = int(input("Enter a positive integer: ")) if n <= 0: raise ValueError ls = [n] while n != 1: n = collatz(n) ls.append(n) print([int('{:.0f}'.format(i)) for i in ls]) except ValueError: print("Error:must be a positive integer")


浙公网安备 33010602011771号