• python练习题总结


    一、选择题(32分)
    1、python不支持的数据类型有   A
    A、char
    B、int
    C、float
    D、list

    2.   E
     x = “foo”
     y = 2
     print(x+y)
    A.foo B.foofoo C.foo2 D.2 E.An exception is thrown

    3、关于字符串下列说法错误的是   B
    A、字符应该视为长度为1的字符串
    B、字符串以标志字符串的结束
    C、既可以用单引号,也可以用双引号创建字符串
    D、在三引号字符串中可以包含换行回车等特殊字符


    4、以下不能创建一个字典的语句是    C
    A、dic1 = {}
    B、dic2 = {123:345}
    C、dic3 = {[1,2,3]:'uestc'}
    D、dic3 = {(1,2,3):'uestc'}

    5.Kvps = {‘1’:1,’2’:2}   D
    theCopy = kvps
    kvps[‘1’] = 5
    sum = kvps[‘1’] + theCopy[‘1’]
    Print sum
    A.1 B.2 C.7 D.10


    6、以下何者是不合法的布尔表达式:  B
     A.x in range(6) B.3=a
     C.e>5 and 4==f D(x-6)>5
    7、下列表达式的值⼀定为True的是        B
     A.5+4j>2-3j B.3>2==2
     C. e>5 and 4==f D.(x-6)>5


    8、已知x=43,ch=‘A’,y = 1,则表达式(x>=y and ch<‘b’ and y)的值是  B
    A、0
    B、1
    C、出错
    D、True


    9、下列表达式中返回 为True的是:   C
    A、3>2>2       #2是等于2的
    B、’abc’>’xyz’     比较的是ascii
    C、0x56 > 56
    D、(3,2)>(‘a’,’b’)     #数字和字符串是不能进行比较的


    10、下列Python语句正确的是(多选)  AD
    A、min = x if x < y else y
    B、max = x > y ? x : y
    C、if(x>y) print(x)
    D、while True:pass

    11.若k为整形,下述while循环执⾏的次数为: B
    k=1000
    while k>1:
     print k
     k=k/2
     A.9 B.10         #python2中先是先有print k的,python是向下取整的,所以选9也是对的
     
    C.11 D.100       #python中是print(k)


    12、以下叙述正确的是:   B
    A、continue语句的作用是结束整个循环的执行     #本次循环
    B、只能在循环体内使用break语句
    C、在循环体内使用break语句或continue语句的作用相同
    D、从多层循环嵌套中退出时,只能使用goto语句      #goto是C语言中的

    13、关于python中的复数,下列说法错误的是    B
    A、表示复数的语法是real+image j
    B、实部和虚部都是浮点数
    C、虚部必须后缀j且j不区分大小写
    D、方法conjugate返回复数的共轭复数

    14、下面的语句哪个会无限循环下去: B
     A、for a in range(10):
    time.sleep(10)
    B、while 1<10:
    time.sleep(10)
    C、while True:
    break
    D、a = [3,-1,',']
    for i in a[:]:
        if not a:
            break

    15、下面的代码,哪些会输出1,2,3三个数字(多选,选错不得分):   BD
    A 、for i in range(3):
    print(i)
    B、aList = [0,1,2]
     for i in aList:
    print(i+1)
    C、i = 1
     while i < 3:
    print(i)
    i+=1
    D、for i in range(3):
    print(i+1)

    16、Python如何定义一个函数:   C
    A、class <name>(<type> arg1,<type> arg2,…<type> argN)
    B、function <name>(arg1,arg2,…argN)
    C、def <name>(arg1,arg2,…argN)
    D、def <name>(<type> arg1,<type> arg2,…<type> argN)

    二、填空题(10分)
    1、以下函数需要在其中饮用一个全局变量k,请填写语句:
     def fun()
    __global k_______________
    k = k+1

    2、L=range(100)
    1) 取第一到第三个元素___list(L[:3])___
    2) 取倒数第二个元素__l[-2]_____
    3) 取后十个元素_ l[-11:-1]______
    4) 把L复制给L1用__l1 = list(l).copy()_____
    3、判断dict有没有某个key用的方法是__get__in(in比较好)___
    4、获取list的元素个数,和向末尾追加元素的方法分别是__len  append____ _______


    5.以下的代码的输出将是什么: _______
    def extendList(val,list=[]):
    list.append(val)
    return list
    list1 = extendList(10)
    list2 = extendList(123,[])
    list3 = extendList(‘a’)
    print “list1 = %s”%list1
    print “list2 = %s”%list2
    print “list3 = %s”%list3

    结果是:list1 = [10, 'a']
    list2 = [123]
    list3 = [10, 'a']

    6.下⾯程序的输出结果是:____yes_____
    x=True
    y=False
    z=False
    if
    x or y and x:
     print("yes")
    else:
     print('no')

    三、简答题(20分)
    1、如何判断一个变量是不是字符串
    答,假设变量a
         使用print(type(a))方法,如果返回结果为str就说明该变量是字符串类型的

    2、is 和 == 的区别
         对于数字来说,is和==是没有区别的
         对于is判断的是内存地址,==判断的是值

    3、Python⾥⾯如何实现tuple和list的转换。
         元祖转换成列表list(tuple)
         列表转换成元祖tuple(list)

    4、list和tuple有什么不同
         list是可变类型
         tuple是不可变类型

    5、如何得到列表list的交集与差集。
         列表先转换为集合
         集合相减得到差集
         集合&集合得到交集
           然后再将集合转为列表

    6、Python中定义函数时如何书写可变参数和默认参数?
            *args,key=1,**kwargs


    7、*args和**kwargs在什么情况下会使⽤到?请给出使⽤**kwargs的事例
          参数个数不确定的时候会用到,*args 在按位置传入的参数
          **kwargs在按关键字传入参数
    8、请描述unicode,utf-8,gbk等编码之间的关系?
     

    9、如何使用python删除一个文件
          import os
          os.remove()


    10、def func(a,b,c=0,*args,**kwargs):
    pass
    *args,**kwargs的作用是什么?
       答:*args接收按位置传参时传入的多余的参数,**kwargs接收按关键字传参时,传入的多余的参数

    四、写代码(38分)
    1、d={‘a’:1,’b’:2,’c’:3}请打印出key、value对(3分)
    d={'a':1,'b':2,'c':3}
    
    for key in d:
    
     print(key,d[key])        #这种方法好的原因是,节约内存
    
    
    2、请写出⼀段Python代码实现删除⼀个list⾥⾯的重复元素。(6分)
    set1 = set(list)
    
    list = list(set1)
    
    方法二:
    
    list = [1,2,3,4,1]
    
    new_list = []
    
    for i in list:
    
        if i not in new_list:
    
            new_list.append(i)
    
    print(new_list)

    3、使⽤Python/C 上机解决以下题⽬(13分)
    1)
    斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,编程求出400万以内最⼤的斐波那契数,并求出他
    是第⼏个斐波那契数。
    方法一:
    
    count = 0
    
    a = 1
    
    b = 0
    
    c=0
    
    while c < 4000001:
    
     count += 1
    
     c = a+b
    
     b = a
    
     a = c
    
    print(count-1)
    
    方法二:
    
    count = 2
    
    a,b = 1,2
    
    while a+b < 4000000:
    
        c = a+b
    
        a = b
    
        b = c
    
        count += 1
    
    print(c)
    
    print(count)





    2)
     dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
     dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    要求写⼀段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保
    留,如果是字符串就拼接,如上⽰例得到结果为:
    dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}
    方法一:
    dic={}
    
    dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
    
    dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    
    for i in dicta:
    
      if dictb.get(i):
    
        dic[i]=dicta[i]+dictb[i]
    
    dicta.update(dictb)
    
    dicta.update(dic)
    
    dic = dicta
    
    print(dic)

    方法二
    dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
    
    dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
    
    dic = dicta
    
    for key in dictb:
    
        if key in dic:
    
            dic[key] = dic[key]+dictb[key]
    
        else:
    
            dic[key] = dictb[key]
    
    print(dic)


    5、什么是装饰器?写⼀个装饰器,可以打印输出⽅法执⾏时长的信息(8分)
    import time
    
    def wrapper(func):
    
     def inner(*args,**kwargs):
    
      start_time = time.clock()
    
      time.sleep(2)
    
      ret = func(*args,**kwargs)
    
      end_time = time.clock()
    
      new_time = (end_time - start_time)
    
      return print(new_time)
    
     return inner
    
    
    
    @wrapper
    
    def func():
    
     print('aaa')
    
    
    
    func()





    6、请写出log的实现(主要功能是打印函数名)(8分)
    @log
    def now():
    print ‘2017-08-31’
    >>>now()
    输出:
    call now():
    2017-08-31


    def log(func):
    
     def inner(*args,**kwargs):
    
      print('call now():')
    
      ret = func(*args,**kwargs)
    
      return ret
    
     return inner
    
    
    
    @log
    
    def now():
    
     print('2017-08-31')
    
    now()





    附加题(20分)
    有⼀个数据结构如下所⽰,请编写⼀个函数从该结构数据中返回由指定的字段和对应的值组成的字
    典。如果指定字段不存在,则跳过该字段。(10分)
    data:{"time":"2016-08-05T13:13:05",
     "some_id":"ID1234",
     "grp1":{ "fld1":1,
     "fld2":2},
     "xxx2":{ "fld3":0,
     "fld5":0.4},
     "fld6":11,
     "fld7":7,
     "fld46":8}
    fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19
    def select(data,fields):
    # TODO:implementation
     
    return result
    def select(data,fields):
     fields_lst = fields.split(‘|’)
    for key in data:
     if type(data[key]) == dict:
     pass
    return
    result
    fileds = 'fld2|fld3|fld7|fld19'
    
    data={"time":"2016-08-05T13:13:05","some_id":"ID1234","grp1":{ "fld1":1,"fld2":2},"xxx2":{ "fld3":0,"fld5":0.4},"fld6":11,"fld7":7,"fld46":8}
    
    def select(*args,**kwargs):
    
        result = {}
    
        filed_list = fileds.split('|')
    
        for key in data:
    
            if key in filed_list:
    
                result[key] = data[key]
    
            elif type(data[key]) == dict:
    
                for inner_key in data[key]:
    
                    if inner_key in filed_list:
    
                        result[inner_key] = data[key][inner_key]
    
        return result
    
    
    
    print(select(data,fileds))
    
    
    
    
    
    data={"time":"2016-08-05T13:13:05",
    
     "some_id":"ID1234",
    
     "grp1":{ "fld1":1,"fld2":2},
    
     "xxx2":{ "fld3":0,"fld5":0.4},
    
     "fld6":{ "key":{"fld19":1}},
    
     "fld7":7,"fld46":8}

    # 压栈思想,也可以使用递归的方法去写
    def select(data,fileds):
    
        l = [data]
    
        field_lst = fileds.split('|')
    
        result = {}
    
        while l:
    
            s = l.pop()
    
            for key in s:
    
                if type(s[key])==dict:
    
                    l.append(s[key])
    
                elif key in field_lst:
    
                    result[key] = s[key]
    
        return result
    
    fileds = 'fld2|fld3|fld7|fld19'
    
    print(select(data,fileds))




     

  • 相关阅读:
    蓝桥杯 包子凑数(完全背包、裴蜀定理、赛瓦维斯特定理)
    AcWing 255. 第K小数主席树(可持久化线段树) 模板题
    HDU 1698 Just a Hook [线段树+区间修改为一个值+区间查询]
    POJ 3264 Balanced Lineup
    AcWing 1277. 维护序列
    HDU 3577 Fast Arrangement [线段树+区间修改+维护最大值]
    【学习笔记】权值线段树
    NOIP2017 小凯的疑惑 解题报告(赛瓦维斯特定理)
    k8s (kubenetes)集成runner 清明
    gitlab CIDI 构建环境优化 清明
  • 原文地址:https://www.cnblogs.com/huangxiaohan/p/7800517.html
Copyright © 2020-2023  润新知