【再回首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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值