【再回首Python之美】【基礎測試題-1】Python基礎知識例題

Python基礎知識測試題

# -*- coding: utf-8 -*-
"""
@author: 蔚藍的天空Tom
"""

def ex0():
    '''形參會被函數修改內容'''
    def addItem(listParam):
        listParam += [5,6,7,8]
    mylist = [1,2,3,4]
    addItem(mylist)
    print(mylist)      #[1, 2, 3, 4, 5, 6, 7, 8]
    print(len(mylist)) #8

def ex1():
    '''元素不在列表中時的報錯信息'''
    names = ['Tom', 'Kitty', 'John']
    names.index('Anna') #會異常報錯ValueError : 'Anna' is not in list
    
def ex2():
    '''lambda的type'''
    print(type(lambda:None)) #<class 'function'>

def ex3A():
    '''global關鍵字的使用方法'''
    #當在函數中使用global關鍵字時,即代表使用的是全局變量。
    #這是對該變量的變更,即便是函數結束後,也會存在
    counter = 100
    def doGlobalThings():
        global counter
        print(counter) #100
        for i in (1,2,3):
            counter += i
    doGlobalThings()
    print('After dGlobalThings:', counter) #106

def ex3B():
    '''local關鍵字的使用方法'''
    counter = 1000
    def doLocalThings():
        counter = 2000
        for i in (1,2,3):
            counter += i
    doLocalThings()
    print('Aflter doLocalThings:',counter) #1000


def ex4():
    '''append方法的使用方法
    會將一個對象作爲一個元素添加到列表對象的最右側'''
    n = [1,2,3,4]
    n.append([5,6,7,8])
    print(n)      #[1, 2, 3, 4, [5, 6, 7, 8]]
    print(len(n)) #5

def ex5():
    '''extend方法的使用方法
    extend方法會將對象中元素逐個添加到列表對象的最右側
    '''
    n = [1,2,3,4]
    n.extend([5,6,7,8])
    print(len(n)) #8
    
def ex6():
    '''
    list對象+號操作符的使用,用於連接兩個列表對象,
    返回一個新列表中包含兩個列表中的每個元素
    '''
    a = [1,2,3,4]
    b = [5,6,7,8]
    c = a + b
    print(c)      #[1, 2, 3, 4, 5, 6, 7, 8]
    print(len(c)) #8

def ex7():
    '''
    tuple對象一經建立,便無法再對其進行添加、刪除等操作
    tuple可以認爲制度的list
    '''
    mytuple = (1,2,3,4)
    mytuple.__add__((6,7))
    print(mytuple) #(1, 2, 3, 4)
    
def ex8():
    '''True if condition else False
    如果condition成立,則返回True,否則返回Flase
    '''
    ret = True if 5 != 3 else False
    print(ret) #True
    
    ret = False if 5 != 3 else True
    print(ret) #False
    
def ex9():
    '''考察if-else'''
    x = True;y,z=False,False
    if x or y and z:
        print('yes') #run this line
    else:
        print('no')
    
def ex10():
    '''考察lambda定義函數的知識點'''
    d = lambda p : p*2
    t = lambda p : p*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print(x) #24
    
def ex11():
    '''考察list的元素類型範圍和list長度知識點
    '''
    ret = len ([1,2,3, None, (),[]])
    print('ret:', ret) #6
    
def ex12():
    '''考察def關鍵字定義函數的知識點
    '''
    def f():
        pass
    print(type(f())) #<class 'NoneType'>
    print(type(f))   #<class 'function'>
    
def ex13():
    '''考察map關鍵字'''
    A = [2,3,4,5]
    def myfun(x):
        return x**2
    for i in map(myfun, A):
        print(i)
    #依次輸出4,9,16,25

def ex14():
    '''考察filter關鍵字'''
    def check(x):
        if x in [1,2,3]:
            return True
        else:
            return False
    for i in filter(check, [1,2,1,3,1,4]):
        print(i)
    #輸出結果是1 2 1 3 1
    
def ex15():
    '''考察class的屬性變量 __dict__'''
    class Persion:
        def __init__(self, id):
            self.id = id
    tom = Persion(1)
    tom.__dict__['age'] = 22
    print(tom.__dict__) #{'age':22, 'id':1}
    print(tom.age)      #22
    print(tom.age + len(tom.__dict__)) #24

def ex16():
    '''考察函數的屬性變量__doc__保存的是介紹字符串'''
    '''考察序列的切片知識點,A[-8:-2]#取A[-8]~A[-3]'''
    def foo():
        "This is a coll simple function return 1"
        return 1
    print(foo.__doc__[-8:-2]) #return
    

def ex17():
    '''主要考察{}生成的是集合set對象'''
    foo = {1,2,3,4}
    print(type(foo)) #<class 'set'>
    
    foo = (1,2,3,4)
    print(type(foo)) #<class 'tuple'>
    
    foo = [1,2,3,4]
    print(type(foo)) #<class 'list'>
    
    foo = {'name':'Tome', 'age':18}
    print(type(foo)) #<class 'dict'>
    
def ex18():
    foo = {1,2,3,4}
    foo = {}
    print(len(foo)) #0

def ex19():
    '''考察字符串也可以用下標來訪問子集的字符'''
    a = ['Tom', 'John', 'Anna', 'David']
    print(a[-1][-1]) #d
    print(a[-1][0]) #D
    
def ex20():
    def myfunc1(param1, *param2):
        print(param2)
        print(type(param2)) #<class 'tuple'>, 元組
    myfunc1('Tom','Anna','John','Kitty') #('Anna','John','Kitty')
    
    def myfun2(param1, *param2):
        for i in param2:
            print(i)
    myfun2('Tom','Anna','John','Kitty')
    #依次輸出Anna John Kitty
    
def ex21():
    '''考察可擴展形參的知識點
    '''
    def myfunc(x,y,z,t):
        print(x+y)
    n = [1,2,3,4]
    myfunc(*n) #3
    
    def myfunc2(*param):
        print(param[0] + param[1]) #3
    n = [1,2,3,4]
    myfunc2(*n)
    
def ex22():
    '''考察方法getattr()和setattr()'''
    class CA:
        def __init__(self,a,b,c):
            self.x = a+b+c
    a = CA(10,100,1000)
    b = getattr(a, 'x')
    setattr(a,'x',b+2)
    print(a.x) #1112
    
def ex23():
    '''考察字典dict的update方法
    '''
    d1 = {'1':1, '2':2, '3':3, '4':4, '5':5}
    d2 = {'1':10, '3':30}
    d1.update(d2)
    print(d1)#{'1': 10, '2': 2, '3': 30, '4': 4, '5': 5}
    
def ex24():
    '''dcpy = dict(d), 
    修改d--->不會修改dcpy
    修改dcpy---->不會修改d
    '''
    d = {'1':1, '2':2}
    dcpy = dict(d) #{'1':1, '2':2}
    
    d['1'] = 100
    ret = d['1'] + dcpy['1'] #ret=100+1=101
    
    dcpy['2'] = 200
    ret = d['2'] + dcpy['2'] #ret=2+200=202
    print(ret)
    
def ex25():
    '''isintance()方法的使用'''
    a = [1,'2', 3]
    total = 0
    for i in a:
        if isinstance(i, int):
            total += i
    print(total) #4
    
def ex26():
    '''from copy import deepcopy的使用知識點
    b = copy.deepcopy(a)
    a修改--->不會修改b
    b修改--->不會修改a
    '''
    import copy
    a = [1,2,3,[4,5,6]]
    b = copy.deepcopy(a)
    b[-1].append(100)
    #a=[1, 2, 3, [4, 5, 6]]
    #b=[1, 2, 3, [4, 5, 6, 100]]
    a[-1].append(200)
    #a=[1, 2, 3, [4, 5, 6, 200]]
    #b=[1, 2, 3, [4, 5, 6, 100]]
    
def ex27():
    '''from copy import copy的使用知識點
    b = copy.copy(a)
    a修改--->會修改b
    b修改--->會修改a
    '''
    import copy
    a = [1,2,3,[4,5,6]]
    b = copy.copy(a)
    b[-1].append(100)
    #a=[1, 2, 3, [4, 5, 6, 100]]
    #b=[1, 2, 3, [4, 5, 6, 100]]
    a[-1].append(200)
    #a=[1, 2, 3, [4, 5, 6, 200]]
    #b=[1, 2, 3, [4, 5, 6, 200]]
    
def ex28():
    '''考察str.join(lst)
    序列中元素輸出時,中間以'\t'或'\n','字符串'輸出
    '''
    names = ['Tom','Kitty','Anna']
    print('\n'.join(names))#讓names中元素按行輸出
    #Tom
    #Kitty
    #Anna
    
    print('\t'.join(names))#讓names中元素按\t輸出
    #Tom     Kitty   Anna
    
    print('---'.join(names))#讓names中元素間隔'---'輸出
    #Tom---Kitty---Anna
    
def ex29():
    '''
    '''
    boxes, jars, crates = {}, {}, {} #{}賦初值時類型是<class 'dict'>
    boxes['cereal'] = 1
    boxes['candy'] = 2
    jars['honey'] = 4
    crates['boxes'] = boxes
    crates['jars'] = jars
    len(crates[boxes]) #異常報錯TypeError: unhashable type: 'dict'    
    
if __name__=='__main__':
    ex()

發佈了248 篇原創文章 · 獲贊 189 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章