实验任务1
task1-1
实验源码
print(sum) sum = 42 print(sum) def inc(n): sum = n+1 print(sum) return sum sum = inc(7) + inc(7) print(sum)
实验截图
问题:task1.py源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。 这4处使用的标识符sum是同一个对象的名称吗?如果不是,请以文字方式回答这4行中标识符sum的作用域。
回答:不是,line1是Built-in内置作用域,line3和line11是Global全局作用域,line7是Local局部作用域。
实验任务2
task2-1
实验源码
def func1(a, b, c, d, e, f): return [a,b,c,d,e,f] def func2(a, b, c,*, d, e, f): return [a,b,c,d,e,f] def func3(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) ) # func3调用:a,b,c必须按位置传递 print( func3(111, 999, 222, 0, 555, 333)) print( func3(111, 999, 222, d=0, e=555, f=333) )
实验截图
问题:python内置函数sorted()中,参数reverse的传递方式是否必须使用关键字传递?
回答:是的。
task2-2
实验源码
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))
实验截图
实验任务3
task3-1
实验源码
def solve(a, b, c): ''' 求解一元二次方程, 返回方程的两个根:para: a,b,c: float 方程系数: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: t = input('输入一元二次方程系数a b c, 或者,输入#结束: ') if t == '#': print('结束计算,退出') break a, b, c = map(float, t.split()) if a == 0: raise ValueError('a = 0, 不是一元二次方程') except ValueError as e: print(repr(e)) print() except: print('有其它错误发生\n') else: root1, root2 = solve(a, b, c) print(f'root1 = {root1:.2f}, root2 = {root2:.2f}') print()
实验截图
实验任务4
task4-1
实验源码
def list_generator(x,y,z=1): list=[] while x<=y: list.append(x) x=x+z return list list1=list_generator(-5,5) print(list1) list2=list_generator(-5,5,2) print(list2) list3=list_generator(1,5,0.5) print(list3)
实验截图
实验任务5
task5-1
实验源码
def is_prime(n): if n==2: return True else: for i in range(2,int((n**0.5)+1)): if n%i==0: return False return True for i in range(4,21,2): for x in range(2,i): if is_prime(i-x): print(f'{i}={x}+{i-x}') break
实验截图
实验任务6
task6-1
实验源码
def encoder(text): text=list(text) i=0 while i< len(text): if text[i].isalpha(): if text[i].islower(): if ord(text[i])<=117: text[i]=chr(ord(text[i])+5) else: text[i]=chr(ord(text[i])+5-26) if text[i].isupper(): if ord(text[i])<=85: text[i] = chr(ord(text[i]) + 5) else: text[i] = chr(ord(text[i]) + 5 - 26) i+=1 return ''.join(text) def decoder(text): text = list(text) i = 0 while i < len(text): if text[i].isalpha(): if text[i].islower(): if ord(text[i]) >= 102: text[i] = chr(ord(text[i]) - 5) else: text[i] = chr(ord(text[i]) - 5 + 26) if text[i].isupper(): if ord(text[i]) >= 46: text[i] = chr(ord(text[i]) - 5) else: text[i] = chr(ord(text[i]) - 5 + 26) i += 1 return ''.join(text) for i in range(3): title='Remote Interpreter Reinitialized' print(title.center(60,'*')) text=input('输入英文文本:') encoded_text=encoder(text) print('编码后的文本:',encoded_text) decoded_text=decoder(encoded_text) print('对编码后的文本解码:',decoded_text)
实验截图
实验任务7
task7-1
实验源码
def collatz(n): lst = [n] while lst[-1] != 1: if lst[-1] % 2 == 0: lst.append(lst[-1]//2) else: lst.append(lst[-1]*3+1) return lst try: n = int(input('Enter a positive integer:')) if n <= 0: raise except: print('Error: must be a positive integer') else: print(collatz(n))
实验截图
实验任务8
task8-1
实验源码
def func(n): if n ==1: return 1 else: return 1+2*func(n-1) while True: x = input() if x == '#': print('计算结束') break n = int(x) ans = func(n) print(f'n = {n}, ans = {ans}')
实验截图
标签:return,函数,text,sum,编程,实验,print,def From: https://www.cnblogs.com/laix/p/17420380.html