实验4
1.
print(sum) sum=42 print(sum) def inc(n): sum=n+1 print(sum) return sum sum=inc(7)+inc(7) print(sum)
不是
line1作用域为line1
line2作用域为line2
line7作用域为line6
line11作用域为line10
2.
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] 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)) 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)) print(func3(111,999,222,0,555,333)) print(func3(111,999,222,d=0,e=555,f=333))
是
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.
def solve(a, b, c): 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()
4.
def list_generator(a, b, c=1): list = [] n = a while (n <= b): list.append(n) n = n + c 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.
def is_prime(n): try: if not(type(n)==int and n>1): raise ValueError except ValueError: print("Input must be a natural number and greater than 1!") else: for i in range(2,n): if n%i==0: return False;break else: return True primes=[] for i in range(2,21): if is_prime(i): primes.append(i) for i in range(4,21,2): for j in range(len(primes)): for k in range(j,len(primes)): if i==primes[j]+primes[k]: print(f"{i} = {primes[j]} + {primes[k]}")
def encoder(s): try: if type(s)!=str: raise TypeError except TypeError: print("Input must be a string!") else: capital=tuple([chr(x) for x in range(ord('A'),ord('Z')+1)]) lowercase=tuple([chr(x) for x in range(ord('a'),ord('z')+1)]) S=list(s) for i,j in enumerate(S): for k in range(len(capital)): if j==capital[k]: S[i]=capital[(k+5)%26];break elif j==lowercase[k]: S[i]=lowercase[(k+5)%26];break s="".join(S) return s def decoder(s): try: if type(s)!=str: raise TypeError except TypeError: print("Input must be a string!") else: capital=tuple([chr(x) for x in range(ord('A'),ord('Z')+1)]) lowercase=tuple([chr(x) for x in range(ord('a'),ord('z')+1)]) S=list(s) for i,j in enumerate(S): for k in range(len(capital)): if j==capital[k]: S[i]=capital[(k-5)%26];break elif j==lowercase[k]: S[i]=lowercase[(k-5)%26];break s="".join(S) return s s=input("Input a English text:") print(f"Encoded text: {encoder(s)}") print(f"Decoded text: {decoder(encoder(s))}")
def collatz(x): if(x % 2 == 0): x = int(x / 2) else: x = 3 * x + 1 return x list = [] try: n = eval(input('Enter a positive integer: ')) if(n <= 0): raise elif(int(n) != n): raise while True: if(n == 1): list.append(n) break else: list.append(int(n)) n = collatz(n) print(list) except: print('Error: must be a positive integer')