1. 程式人生 > 其它 >實驗四 函式與異常處理應用程式設計

實驗四 函式與異常處理應用程式設計

task1

print(sum)
sum = 42
print(sum)
def inc(n):
    sum = n+1
    print(sum)
    return sum
sum = inc(7) + inc(7)
print(sum)

1.內建函式名

2.賦值名

3.區域性變數

4.全域性變數

task2

def func1(a, b, c, d, e, f):
    '''返回引數a,b,c,d,e,f構成的列表
    預設,引數按位置傳遞; 也支援關鍵字傳遞
    '''
    return [a,b,c,d,e,f]
def func2(a, b, c,*, d, e, f):
    
''' 返回引數a,b,c,d,e,f構成的列表 *後面的引數只能按關鍵字傳遞 ''' return [a,b,c,d,e,f] def func3(a, b, c, /, d, e, f): ''' 返回引數a,b,c,d,e,f構成的列表 /前面的引數只能按位置傳遞 ''' return [a,b,c,d,e,f] print( func1(1,9,2,0,5,3) ) print( func1(a=1, b=9, c=2, d=0, e=5, f=3) ) print( func1(1,9,2, f=3, d=0, e=5))
print( func2(11, 99, 22, d=0, e=55, f=33) ) print( func2(a=11, b=99, c=22, d=0, e=55, f=33) ) print( func3(111, 999, 222, 0, 555, 333)) print( func3(111, 999, 222, d=0, e=555, f=333) )
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))

task3

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

task4

def list_generator (begin,end,step=1):
    list=[]
    while begin<=end:
        list.append(begin)
        begin=begin+step
    return list

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(n):
    if n < 2:
        return False
    for i in range(2,int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

h=[i for i in range(21)]
for x in h[::2]:
    for a in range(0,21):
        if is_prime(a) is True:
            if is_prime(x-a) is True:
                print(f'{x}={a}+{x-a}')
                break
            else:
                a+=1
        else:
            a+=1

task6

def encoder(strs):
    a=list(strs)
    i=0
    while i <len(strs):
        b = ord(a[i])
        if 65<=b<=85 or 97<=b<=117:
            c=chr(b+5)

        elif 85<=b<=90 or 117<=b<=122:
            c=chr(b-21)
        else:
            c=chr(b)
        a[i]=c
        i+=1
    return ''.join(a)



def decoder(strs):
    a = list(strs)
    i=0
    while i < len(strs):
        b = ord(a[i])
        if 70<=b<=90 or 102<=b<=122:
            c=chr(b-5)
        elif 65<=b<=70 or 97<=b<=102:
            c=chr(b+21)
        else:
            c=chr(b)
        a[i] = c
        i+=1
    return ''.join(a)

a=input('輸入英文文字: ')
print(f'編碼後的文字:{encoder(a)}')
print(f'對編碼後的文字解碼:{decoder(encoder(a))}')

task7

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