实验四

发布时间 2023-05-23 23:59:07作者: bileygr2

实验任务1

task1:

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

运行结果:

 

 

实验任务2

task2_1:

 1 def func1(a, b, c, d, e, f):
 2     return [a, b, c, d, e, f]
 3 
 4 def func2(a, b, c, *, d, e, f):
 5     return [a, b, c, d, e, f]
 6 
 7 def func3(a, b, c, /, d, e, f):
 8     return [a, b, c, d, e, f]
 9 
10 print(func1(1,9,2,0,5,3))
11 print(func1(a=1, b=9, c=2, d=0, e=5, f=3))
12 print(func1(1, 9, 2, f=3, d=0,e=5))
13 
14 print(func2(11, 99, 22, d=0, e=55, f=33))
15 print(func2(a=11, b=99, c=22, d=0, e=555, f=333))
16 
17 print(func3(111, 999, 222, 0, 555, 333))
18 print(func3(111, 999, 222, d=0, e=555, f=333))

运行结果:

 

task2_2:

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

运行结果:

 

task3:

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))

运行结果:

 

 

实验任务3

task3:

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

运行结果:

 

 

实验任务4

task4:

 

 1 def list_generator(*s):
 2     a = s[0]
 3     b = s[1]
 4 
 5     if len(s) < 3:
 6         list0 = [a]
 7         while a < b:
 8             a += 1
 9             list0.append(a)
10 
11     else:
12         c = s[2]
13         list0 = [a]
14         while a < b:
15             a += c
16             list0.append(a)
17     return list0
18 list1 = list_generator(-5, 5)
19 print(list1)
20 list2 = list_generator(-5, 5, 2)
21 print(list2)
22 list3 = list_generator(1, 5, 0.5)
23 print(list3)

运行结果:

 

 

实验任务5

task5:

 1 def is_prime(n):
 2      if n < 3:
 3         if n == 2:
 4              return True
 5         return False
 6      else:
 7          for i in range(2, n):
 8              if n%i == 0:
 9                  return False
10              else:
11                 return True
12 
13 for i in range(4,21,2):
14      for x in range(2,i):
15          y = i - x
16          if is_prime(x) and is_prime(y):
17              print(f'{i}={x}+{y}')
18              break

运行结果:

 

 

实验任务6

task6:

 1 def encoder(text):
 3      new_text = []
 5      for i in text:
 6          if i.isalpha():
 8              if'a' <= i <= 'u':
 9                  new_text.append(chr(ord(i)+5))
10              elif 'v' <= i <= 'z':
11                  new_text.append(chr(ord('a')+ord(i)+4 - ord('z')))
12              elif'A' <= i <= 'U':
13                  new_text.append(chr(ord(i)+5))
14              elif 'V' <= i <= 'Z':
15                  new_text.append(chr(ord('A')+ord(i)+4 - ord('Z')))
16          else:
17              new_text.append(i)
18      return ''.join(new_text)
20 def decoder(text):
21     new_text = []
22 
23     for i in text:
24         if i.isalpha():
26             if 'f' <= i <= 'z':
27                 new_text.append(chr(ord(i) - 5))
28             elif 'a' <= i <= 'e':
29                 new_text.append(chr(ord('z') - (4-ord(i) + ord('a'))))
30             elif 'F' <= i <= 'Z':
31                 new_text.append(chr(ord(i)-5))
32             elif 'A' <= i <= 'E':
33                 new_text.append(chr(ord('Z') - (4-ord(i) + ord('A'))))
34         else:
35             new_text.append(i)
36     return ''.join(new_text)
39 text = input('输入英文文本: ')
40 encoded_text = encoder(text)
41 print('编码后的文本: ', encoded_text)
43 decoded_text = decoder(encoded_text)
44 print('对编码后的文本解码: ', decoded_text)

运行结果:

 

 

实验任务7

task7:

 1 def Collatz(n):
 2      if n%2 ==0:
 3          return n//2
 4      else:
 5          return n*3+1
 6 try:
 7      n = int(input('Enter a positive integer:'))
 8      if n <= 0:
 9          raise ValueError
10      num = [n]
11      while True:
12          n = Collatz(n)
13          num.append(n)
14          if n == 1:
15              print(num)
16              break
17 except ValueError:
18     print('Error: must be a positive integer')

运行结果:

 

 

实验任务8

task8:

 1 def func(n):
 2     while True:
 3         if n==1:
 4            return 1
 5         else:
 6             return 2*func(n-1)+1
 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}')

运行结果: