实验4

1.实验任务1

task1.py

程序源代码:

 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)

运行程序截图:

 关于问题回答:不是。line1中是Python的内置函数,line3是指lin2的全局变量sum,line7中是inc函数中的局部变量,line11中是指line10的全局变量

 

2.实验任务2

task2-2.py

程序源代码:

list1 = [1,9,8,4]

print(sorted(list1))
print(sorted(list1,reverse = True))
print(sorted(list1,True))

运行程序截图:

 关于问题的回答: task2_2所示情况中,必须使用关键字传递reversse

 

task2-3.py

程序源代码:

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

运行程序截图:

 

 

3.实验任务3

task3.py

程序源代码:

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

运行程序截图:

 

 

4.实验任务4

task4.py

运行源代码:

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

程序运行截图:

 

 

5.实验任务5

task5.py

实验源代码:

def is_prime(n):
    if n ==1:
        return False
    elif n ==2:
        return True
    else:
        for i in range(2,n):
            if n%i==0:
                break
                return False
            else:
                if i ==n-1:
                    return True
for i in range(4,21,2):
    print('{} = '.format(i),end ='')
    t1 = 2
    t2 = i-t1
    while t2>=t1:
        if is_prime(t1) and is_prime(t2):
            print('{} + {}'.format(t1,t2))
            break
        else:
            t1+=1
            t2-=1

 运行程序截图:

 

 

 

6.实验任务6

task6.py

程序源代码:

 1 def encoder(n):
 2     ans = ''
 3     for i in n:
 4         if ord(i)>117:
 5             t = 97+5-123+ord(i)
 6             ans = ans + chr(t)
 7         elif ord(i)>=97 and ord(i)<=117:
 8             t = ord(i) + 5
 9             ans = ans + chr(t)
10         elif ord(i)<97 and ord(i)>85:
11             t = 65+5-123+ord(i)
12             ans = ans + chr(t)
13         elif ord(i)<=85 and ord(i)>=65:
14             t = ord(i) + 5
15             ans = ans + chr(t)
16         else:
17             ans = ans +i
18     return ans
19 
20 
21 def decoder(n):
22     ans = ''
23     for i in n:
24         if ord(i)<102 and ord(i)>=97:
25             t = 122-5+ord(i)-96
26             ans = ans + chr(t)
27         elif ord(i)>=102 and ord(i)<=122:
28             t = ord(i) - 5
29             ans = ans + chr(t)
30         elif ord(i)<70 and ord(i)>=65:
31             t = 90+5-ord(i)+65
32             ans = ans + chr(t)
33         elif ord(i)>=70 and ord(i)<=90:
34             t = ord(i) - 5
35             ans = ans + chr(t)
36         else:
37             ans = ans +i
38     return ans
39 
40 text = input('输入英文文本: ')
41 encoded_text = encoder(text)
42 print('编码后的文本: ', encoded_text)
43 decoded_text = decoder(encoded_text)
44 print('对编码后的文本解码: ', decoded_text)

 运行程序截图:

 

 

 

 

 

7.实验任务7

task7.py

程序源代码:

 1 def collatz(n):
 2     ans = [n]
 3     while n !=1:
 4         if n%2 == 0:
 5             n = int(n/2)
 6             ans.append(n)
 7         else:
 8             n = n*3+1
 9             ans.append(n)
10     return ans
11 
12 while True:
13     try:
14         t = input('Enter a positive integer:')
15         if t.isdigit():
16             t = int(t)
17             print(collatz(t))
18             break
19         else:
20             raise ValueError('Error: must be a positive integer')
21     except ValueError as f:
22         print(f)
23         break

运行程序截图:

 

 8.实验任务8

task8.py

程序源代码:

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

运行程序截图:

 

posted @ 2023-05-20 00:38  nettj  阅读(35)  评论(0)    收藏  举报