实验四

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)
复制代码

截图:

 

line1:内置函数名

line3:赋值名

line7:局部变量

line11:全局变量

 

task2_1

复制代码
 1 def func1(a, b, c, d, e, f):
 2     '''
 3     返回参数a,b,c,d,e,f构成的列表
 4     默认,参数按位置传递; 也支持关键字传递
 5     '''
 6     return [a,b,c,d,e,f]
 7 
 8 
 9 def func2(a, b, c,*, d, e, f):
10     '''
11     返回参数a,b,c,d,e,f构成的列表
12     *后面的参数只能按关键字传递
13     '''
14     return [a,b,c,d,e,f]
15 
16 
17 def func3(a, b, c, /, d, e, f):
18     '''
19     返回参数a,b,c,d,e,f构成的列表
20     /前面的参数只能按位置传递
21     '''
22     return [a,b,c,d,e,f]
23 
24 
25 # func1调用:按位置传递、按参数传递都可以
26 print( func1(1,9,2,0,5,3) )
27 print( func1(a=1, b=9, c=2, d=0, e=5, f=3) )
28 print( func1(1,9,2, f=3, d=0, e=5))
29 
30 
31 # func2调用:d,e,f必须按关键字传递
32 print( func2(11, 99, 22, d=0, e=55, f=33) )
33 print( func2(a=11, b=99, c=22, d=0, e=55, f=33) )
34 
35 
36 # func3调用:a,b,c必须按位置传递
37 print( func3(111, 999, 222, 0, 555, 333))
38 print( func3(111, 999, 222, d=0, e=555, f=333) )
复制代码

截图:

 

在line33后,尝试增加一行函数调用,重新运行程序,查看解释器中出现的错误提示信息是什么。 

1 print( func2(11, 99, 22, 0, 55, 33) )

 

 func2函数要键入3个参数,而不是6个。d,e,f 需要用关键字参数传入。

 

在line38后,尝试增加一行函数调用,重新运行程序,查看解释器中出现的错误提示信息是什么。

1 print(func3(a=111, b=999, c=222, 0, 555, 333) )

 

 前面的参数只能按位置传递

 

task2_2

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

截图:

 

 reversed必须要关键字参数传入

 

task2_3

1 def func(a, b, c, /, *, d, e, f):
2     return([a, b, c, d, e, f])
3 
4 
5 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: int 方程系数
 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 
19 
20 while True:
21     try:
22         a,b,c = eval(input('Enter eqution coefficient: '))
23         if a == 0:
24             raise
25     except:
26         print('invalid input, or, a is zero')
27         break
28     else:
29         root1, root2 = solve(a, b, c)
30         print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
31         print()
复制代码

截图:

 

 

 试在line22前面增加一行代码:

1 print(solve.__doc__)

 

 函数solve()的说明信息(line3-5)被打印出来了

 

task4

复制代码
def list_generator(a,b,c=1):
    x=a
    f=[x]
    while x<b:
        x=x+c
        f.append(x)
    return f


list1 = list_generator(-5, 5)
print(list1)
list2 = list_generator(-5, 5, 2)
print(list2)
list3 = list_generator(1, 5, 0.5)
print(list3)
复制代码

截图:

 

 

 

task5

复制代码
def is_prime(x):
    a=list(range(2,x))
    for i in a:
        if x%i==0:
            return False
    return True
susu=[2]
for i in range(3,20):
    if is_prime(i)==True:
        susu.append(i)
for i in range(2,21,2):
    for i2 in susu:
        for i3 in susu:
            if i2+i3==i:
                print(f"{i2}+{i3}={i}")
                break
复制代码

截图:

 

 

 

task6

复制代码
def decoder(x):
    aaa=list(x)
    for i in range(len(aaa)):
        aaa[i]=chr(ord(aaa[i])-5)
        if aaa[i].isalpha()==False:
            aaa[i]=chr(ord(aaa[i])+26)
    return "".join(aaa)

def encoder(x):
    aaa=list(x)
    for i in range(len(aaa)):
        aaa[i]=chr(ord(aaa[i])+5)
        if aaa[i].isalpha()==False:
            aaa[i]=chr(ord(aaa[i])-26)
    return "".join(aaa)

x=input("请输入英文文本:")
print("编码后:"+encoder(x))
print("解码后:"+decoder(encoder(x)))
复制代码

截图:

 

 

 

 

task7

复制代码
aaa=[]
def collatz(x):
    if isinstance(x,str)==True:
        if x.isdigit()==False:
            raise Exception("报错,输入的不是正整数。")
        else:x=float(x)
    if x%1!=0 or x<=0:
        raise Exception("报错,输入的不是正整数。")
    elif x==1:return 1
    elif x%2==0:a=x/2
    else : a=x*3+1
    global aaa
    aaa.append(int(a))
    return collatz(a)

collatz(input("请输入正整数:"))
print(aaa)
复制代码

截图:

 

posted @ 2022-05-10 15:37  可爱捏  阅读(7)  评论(0编辑  收藏  举报