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

第一个是内置作用域,第二个·是全局作用域,第三个是局部作用域,第四个是全局作用域。

实验任务2
list1 = [1, 9, 8, 4]
print( sorted(list1) )
print( sorted(list1, reverse=True) )
print( sorted(list1, True) )

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):
    '''
    求解一元二次方程,返回方程的两个根
    :para:a,b,c:int 方程系数
    :return:tuple
    '''
    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(x,y,step=1):
    li=[]
    i=0
    while i<=((y-x)/step):
        li.append(x+i*step)
        i+=1
    return li
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(x):
    if(x<2):
        return False
    for i in range(2,int(x**0.5)+1):
        if(x%i==0):
            return False
    return True
for i in range(4,21,2):
    for j in range(2,int(i/2)+1):
        if(is_prime(j) and is_prime(i-j)):
            print(str(i)+'='+str(j)+'+'+str(i-j))
            break

实验任务6
def encoder(s):
    li=list(s)
    for i in range(len(s)):
        if('a'<=s[i]<='u'):
            li[i]=chr(ord(s[i])+5)
        elif('v'<=s[i]<='z'):
            li[i]=chr(ord(s[i])-21)
        elif('A'<=s[i]<='U'):
            li[i]=chr(ord(s[i])+5)
        elif('V'<=s[i]<='Z'):
            li[i]=chr(ord(s[i])-21)
    return "".join(li)
def decoder(s):
    li=list(s)
    for i in range(len(s)):
        if('a'<=s[i]<='e'):
            li[i]=chr(ord(s[i])+21)
        elif('f'<=s[i]<='z'):
            li[i]=chr(ord(s[i])-5)
        if('A'<=s[i]<='E'):
            li[i]=chr(ord(s[i])+21)
        elif('F'<=s[i]<='Z'):
            li[i]=chr(ord(s[i])-5)
    return "".join(li)
s=input('输入英文文本:')
s1=encoder(s)
print('编码后的文本:'+s1)
s2=decoder(s1)
print('对编码后的文本解码:'+s2)

实验任务7
def collatz(n):
    if((n%2)==0):
        return n/2
    else:
        return 3*n+1
try:
    n=int(input('Enter a positive integer:'))
    if(n<=0):
        raise
except:
    print('Error: must be a positive integer')
else:
    li=[n]
    while n!=1:
        n=collatz(n)
        li.append(n)
    print(li)

通过此次实验,我学习了函数的定义、异常处理等内容,特别是学会了可选参数的用法。实验任务6一次成功,没有任何错误,有一定进步。此次实验提醒我注意数值形式和精度的要求问题。

posted @ 2022-05-08 19:03  202183360008仲苏洋  阅读(13)  评论(1编辑  收藏  举报