zoukankan      html  css  js  c++  java
  • python练习题----函数、内置函数、递归等

    1. 列举布尔值为False的值
      { }、‘ ’、0、()、[ ]、False、None

    2.
    根据范围获取其中3和7整除的所有数的和,并返回调用者;符合条件的数字个数以及符合条件数字的总和
    #自答
    from functools import reduce
    
    def zhengchu(num):
        a = []
        for i in range(num):
            if i%3 == 0 or i%7 == 0:
                a.append(i)
        print(len(a)-1)
        print(reduce(lambda x, y: x+y, a))
    reslut = zhengchu(100)
    
    #参答
    def func(start_num,stop_number):
       res = []
       for i in range(start_num, stop_number):
          if i % 3 == 0 or i % 7 == 0:
             res.append(i)
       return res, sum(res), len(res)
    
    test = func(1,100)
    print(test)
    
    
    3. 函数的默认返回值是 None

    4. break、contiune、return的区别
      break:结束当前整个循环
      continue:结束本次循环进入下一次循环
    return:结束函数,并返回结果,默认为None

    5. 使用set集合获取两个列表l1 = [11, 22, 33],l2 = [22, 33, 44]中的相同元素
    l1 = [11,22,33]
    l2 = [22,33,44]
    set1 = set(l1)
    set2 = set(l2)
    same = set1 & set2
    print(same)

    6.
    定义函数统计一个字符串中大写字母、小写字母、数字的个数,并以字典为结果返回给调用者
    #自答
    li= 'areyou23HHH'
    
    def con(li):
        num = 0
        al = 0
        AL = 0
        for i in li:
            if 48 <= ord(i) <= 57:
                num +=1
            if 97 <= ord(i) <= 122:
                al +=1
            if 97 <= ord(i) <= 122:
                AL +=1
        print({'数字': num})
        print({'小写字母': al})
        print({'数字': AL})
    
    con(li)
    
    #参答
    def func(st):
       dic = {}
       count_num = 0
       count_cap = 0
       count_low = 0
       for i in st:
          if i.isdigit():
             count_num += 1
          elif i.isupper():
             count_cap += 1
          elif i.islower():
             count_low += 1
       dic['数字'] = count_num
       dic['大写字母'] = count_cap
       dic['小写字母'] = count_low
       return dic
    test_str = func('ASD-+xcf123')
    print(test_str)
     
    7. 函数的位置参数、关键字参数、默认参数、可变长参数
    位置参数:按形参的位置传入较位置参数,即普通参数
    关键字参数:传入实参时指定形参的值
    默认参数:形参直接指定默认值得参数
    可变长参数:*args **kwargs,前者只能接收没有位置参数的实参或传入的列表、元组,后者可以接收关键字参数,和字典格式。
    有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序的

    8. 字符串“你好”转为以 utf-8 编码形式转换为字节
    #自答
    a = '你好'
    b = a.encode('utf-8')
    print(b)
    
    #参答
    s = '你好'
    b_s1 = bytes(s,'utf-8')
    print(b_s1)

    9. 利用内置函数zip(),实现如下功能:

    l1 = ['alex',11,22,33]
    l2 = ['is',11,22,33]
    l3 = ['good',11,22,33]
    l4 = ['boy',11,22,33]
    请获取字符串s = 'alex_is_good_boy'
    #自答
    l1 = ['alex', '11', '22', '33']
    l2 = ['is', '11', '22', '33']
    l3 = ['good', '11', '22', '33']
    l4 = ['boy', '11', '22', '33']
    t = '_'
    l1_index = l1.index('alex')
    l2_index = l2.index('is')
    l3_index = l3.index('good')
    l4_index = l4.index('boy')
    s = l1[l1_index]+t+l2[l2_index]+t+l3[l3_index]+t+l4[l4_index]
    print(s)
    
    
    #参答
    l1 = ['alex', '11', '22', '33']
    l2 = ['is', '11', '22', '33']
    l3 = ['good', '11', '22', '33']
    l4 = ['boy', '11', '22', '33']
    print('_'.join(list(zip(l1,l2,l3,l4))[0]))    *.join()可以连接元组中的字符串元素
     
    9. 利用递归实现 1*2*3*4*5*6*7 = 5040
    #自答
    def multi(num,su = 1):
        if num > 7:
            return su
        su *= num
        return multi(num+1,su)
    
    f = multi(1)
    print(f)
    
    
    #参答
    def multi(num,su = 1):
        if num > 7:
            return su
        su *= num
        return multi(num+1,su)
    
    f = multi(1)
    print(f)
    
    from functools import reduce
    res = reduce(lambda x,y:y*x,range(1,8))
    print(res)
     
    10、利用with实现同时打开两个文件(一读,一写,并将读取的内突写入到写入模式的文件中)
    with open('scores', 'r', encoding='utf-8') as f1, open('copy', 'w', encoding='utf-8') as f2:
        f2.write(f1.read())


    11. 有如下两个列表,第一个列表中的数字无序不重复排列,第二个为空列表
    需求:
    取出列表1的最小值放到列表2的首个位置
    取出列表1的最小值(仅大于上次一的最小值)放到列表2的首个位置
    取出列表1的最小值(仅大于上次一的最小值)放到列表2的首个位置...
    以此类推,从而获取一个有序的列表2,并将其返回给函数调用者
    li_unorder = [6, 1, 7, 8, 2, 9, 3, 5]
    li_order = []
    for i in range(len(li_unorder)):
        li_order.append(min(li_unorder))
        li_unorder.remove(min(li_unorder))
    print(li_order)

    12.猴子吃桃:猴子第一天摘下若干个桃子,当即吃了一半,不过瘾就多吃了一个。第二天又将剩下的桃子吃了一半,不过瘾多吃了一个。
    以后每天都吃前一天剩下的一般再加一个。到第10天刚好剩下
    。问猴子第一天摘了多少个桃子?
    #自答
    def taozi(day, num):
        if day == 10:
            return num
        num = num*2 + 1 + 1
        return taozi(day+1, num)
    print(taozi(1, 1))
    
    
    #参答
    def f(x,day):
       day -= 1
       if day == 0:
          return x
       x = (x+1) * 2
       return f(x,day)
    res = f(1,10)
    print(res)
    
    
    
    13. a.利用filter函数、自定义函数获取l1中元素大于33的所有元素,l1 = [11,22,33,44,55]
    #匿名函数
    l1 = [11,22,33,44,55]
    print(list(filter(lambda x:x>33, l1)))
    
    #自定义函数
    l1 = [11,22,33,44,55]
    def f(x):
       return x > 33
    new_list = list(filter(f,l1))
    print(new_list)
    b. 利用map、自定义函数将所有是奇数的元素加100
    #匿名函数
    l1 = [11,22,33,44,55]
    print(list(map(lambda x: (x+100 if x % 2 else x), l1)))
    
    #自定义函数
    def num(x):
        if x % 2:
            return x+100
        else:
            return x
    
    print(list(map(num,l1)))

    14. 简述python3 中的 range 函数和 python2 中的range 函数有什么区别

      3. range 不会生成值,只有用的时候才会生成

      2.7 range 会直接生成一个列表,值已经生成

    15. 

    mvp = 'lebron james'
    
    def lbj(func):
        mvp = 'kevin durant'
        func()
    
    def kd():
        print(mvp)
    
    lbj(kd)
    
    
    #执行结果:
    leborn james
    
    






     
    
    
    
    
    
    
    
     
     














    
    
  • 相关阅读:
    <阿里工程师的自我素养>读后感-技术人应该具备的一些基本素质
    Hbase的基本原理(与HIVE的区别、数据结构模型、拓扑结构、水平分区原理、场景)
    大数据技术体系 && NoSQL数据库的基本原理
    软件测试面试经验
    APP非功能测试
    手机APP测试(测试点、测试流程、功能测试)
    性能测试学习之路 (四)jmeter 脚本开发实战(JDBC &JMS &接口脚本 & 轻量级接口自动化测试框架)
    HTML 实战生成一张页面
    前端性能测试(H5性能测试)
    JAVA基础——设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/cjsword/p/10460395.html
Copyright © 2011-2022 走看看