实验四

task 1

1 print(sum)
2 sum = 42
3 print(sum)
4 def inc(n):
5   sum = n+1
6   print(sum)
7   return sum
8 sum = inc(7) + inc(7)
9 print(sum)

不是同一对象的名称,line1为内置作用域 line3和line11为全局作用域,line7为局部作用域

task 2

 2

1 list1 = [1, 9, 8, 4]
2 print( sorted(list1) )
3 print( sorted(list1, reverse=True) )
4 print( sorted(list1, True) )

reserve必须使用关键字传递

 3

1 def func(a, b, c, /, *, d, e, f):
2    return( [a,b,c,d,e,f] )
3 print(func(1,2,3,d=4,e=5,f=6))

task3

 1 def solve(a, b, c):
 2   '''
 3   求解一元二次方程, 返回方程的两个根
 4   :para: a,b,c: float 方程系数
 5   :return: tuple
 6   '''
 7   delta = b*b - 4*a*c
 8   delta_sqrt = abs(delta)**0.5
 9   p1 = -b/2/a
10   p2 = delta_sqrt/2/a
11   if delta >= 0:
12     root1 = p1 + p2
13     root2 = p1 - p2
14   else:
15     root1 = complex(p1, p2)
16     root2 = complex(p1, -p2)
17   return root1, root2
18 print(solve.__doc__)
19 while True:
20   try:
21     t = input('输入一元二次方程系数a b c, 或者,输入#结束: ')
22     if t == '#':
23       print('结束计算,退出')
24       break
25     a, b, c = map(float, t.split())
26     if a == 0:
27       raise ValueError('a = 0, 不是一元二次方程')
28   except ValueError as e:
29     print(repr(e))
30     print()
31   except:
32     print('有其它错误发生\n')
33   else:
34     root1, root2 = solve(a, b, c)
35     print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
36     print()

task4

 1 def list_generator(a,b,c=1):
 2     list=[a]
 3     while a+c<=b:
 4         a=a+c
 5         list.append(a)
 6     return list
 7 list1 = list_generator(-5, 5)
 8 print(list1)
 9 list2 = list_generator(-5, 5, 2)
10 print(list2)
11 list3 = list_generator(1, 5, 0.5)
12 print(list3)

task5

 1 def is_prime(x):
 2     for i in range(2,int(x**0.5+2)):
 3         a=x%i
 4         if a==0:
 5             break
 6     if a==0 and x!=2:
 7         return False
 8     elif a!=0 or x==2:
 9         return True
10 for i in range(4,21,2):
11     for x in range(2,i):
12         y = i - x
13         if is_prime(x) and is_prime(y):
14             print(f'{i}={x}+{y}')
15             break

task6

 

 1 def encoder(text):
 2     x=''
 3     for i in text:
 4         if 96<ord(i)<123:
 5           i=chr((ord(i)+5-97)%26+97)
 6         if 65<ord(i)<82:
 7           i=chr((ord(i)+5-66)%26+66)
 8         x+=i
 9     return x
10 def decoder(text):
11     x=''
12     for i in text:
13         if 96<ord(i)<123:
14           i=chr((ord(i)-5-97)%26+97)
15         if 65<ord(i)<82:
16           i=chr((ord(i)-5-66)%26+66)
17         x+=i
18     return x
19 text = input('输入英文文本: ')
20 encoded_text = encoder(text)
21 print('编码后的文本: ', encoded_text)
22 decoded_text = decoder(encoded_text)
23 print('对编码后的文本解码: ', decoded_text)

task 7 

 

 1 def collatz(n):
 2     if n%2==0:
 3         n=n/2
 4     elif n%2!=0:
 5         n=n*3+1
 6     n=int(n)
 7     return n
 8 try:
 9     n=eval(input('Enter a positive integer:'))
10     s=[n]
11     if type(n)!=int:
12         raise ValueError('Error: must be a positive integer')
13     while n!=1:
14       n=collatz(n)
15       s.append(n)
16     print(s)
17 except ValueError as e:
18     print(e)

 

task8

 1 def func(n):
 2     if n==0:
 3         fn=0
 4     else:
 5         fn=(func(n-1)+1)*2-1
 6     return fn
 7 while True:
 8    x = input()
 9    if x == '#':
10       print('计算结束')
11       break
12    n = int(x)
13    ans = func(n)
14    print(f'n = {n}, ans = {ans}')

 

posted @ 2023-05-21 20:11  (o‿∩)  阅读(17)  评论(0)    收藏  举报