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
    
    






     
    
    
    
    
    
    
    
     
     














    
    
  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/cjsword/p/10460395.html
Copyright © 2011-2022 走看看