美文网首页Python面试题
Python面试题-函数

Python面试题-函数

作者: 复苏的兵马俑 | 来源:发表于2020-02-03 11:19 被阅读0次

    1、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

    def func(lis):
        new_lis = lis[1::2]
        return new_lis
    print(func(['Kevin', 'Jose', 'Loki', 'Delia']))
    print(func(('Kevin', 'Jose', 'Loki', 'Delia')))
    
    # 运行结果:
    ['Jose', 'Delia']
    ('Jose', 'Delia')
    

    2、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

    def obj_len(obj):
        return len(obj) > 5
    
    if obj_len('Congratulation!'):
        print("'Congratulation!'的长度大于5。")
    else:
        print("'Congratulation!'的长度小于或等于5。")
        
    if obj_len(['Kevin', 'Jose', 'Loki', 'Delia']):
        print("['Kevin','Jose', 'Loki', 'Delia']的长度大于5。")
    else:
        print("['Kevin','Jose', 'Loki', 'Delia']的长度小于或等于5。")
        
    if obj_len((1, 2, 3, 4, 5, 6)):
        print("(1, 2, 3, 4, 5, 6)的长度大于5。")
    else:
        print("(1, 2, 3, 4, 5, 6)的长度小于或等于5。")
    
    # 运行结果:
    'Congratulation!'的长度大于5。
    ['Kevin','Jose', 'Loki', 'Delia']的长度小于或等于5。
    (1, 2, 3, 4, 5, 6)的长度大于5。
    

    3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

    def list_len(lis):
        return lis[:2]
    print(list_len(['Kevin','Jose', 'Loki', 'Delia']))
    print(list_len([1, 2, 3, 4, 5, 6]))
    
    # 运行结果:
    ['Kevin', 'Jose']
    [1, 2]
    

    4、写函数,计算传入字符串中【数字】、【字母】、【空格】以及【其他】的个数,并返回结果。

    def obj_num(s):
        total = {
            'digit': 0,
            'alpha': 0,
            'space': 0,
            'other': 0
        }
        for i in s:
            if i.isdigit():
                total['digit'] += 1
            elif i.isalpha():
                total['alpha'] += 1
            elif i.isspace():
                total['space'] += 1
            else:
                total['other'] += 1
        return total
    print('"lhhlk2232kj hkd 23 =-=-"中【数字】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['digit']))
    print('"lhhlk2232kj hkd 23 =-=-"中【字母】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['alpha']))
    print('"lhhlk2232kj hkd 23 =-=-"中【空格】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['space']))
    print('"lhhlk2232kj hkd 23 =-=-"中【其他】的个数 = {}'.format(obj_num("lhhlk2232kj hkd 23 =-=-")['other']))
    
    # 运行结果:
    "lhhlk2232kj hkd 23 =-=-"中【数字】的个数 = 6
    "lhhlk2232kj hkd 23 =-=-"中【字母】的个数 = 10
    "lhhlk2232kj hkd 23 =-=-"中【空格】的个数 = 3
    "lhhlk2232kj hkd 23 =-=-"中【其他】的个数 = 4
    

    5、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。

    def have_space(obj):
        if type(obj) is str:
            if obj:
                for i in obj:
                    if i.isspace():
                        return True
                    else:
                        continue
                return False
            else:
                return True
        elif type(obj) is list or tuple:
            if obj:
                for i in obj:
                    if i == [] or i == () or i == '':
                        return True
                    else:
                        continue
                return False
            else:
                return True
        else:
            print('传入的对象不正确,请传入字符串、列表或元组!')
    print('""中是否含有空内容:{}'.format(have_space("")))
    print('"kdfjk kjdfk"中是否含有空内容:{}'.format(have_space("kdfjk kjdfk")))
    print('"jfosifjosidf"中是否含有空内容:{}'.format(have_space("jfosifjosidf")))
    print('[]中是否含有空内容:{}'.format(have_space([])))
    print('["Kevin","Jose",""]中是否含有空内容:{}'.format(have_space(["Kevin", "Jose", ""])))
    print('["Kevin","Jose","Loki"]中是否含有空内容:{}'.format(have_space(["Kevin", "Jose", "Loki"])))
    print('()中是否含有空内容:{}'.format(have_space(())))
    print('("Kevin","Jose","")中是否含有空内容:{}'.format(have_space(("Kevin", "Jose", ""))))
    print('("Kevin","Jose","Loki")中是否含有空内容:{}'.format(have_space(("Kevin", "Jose", "Loki yao"))))
    
    # 运行结果:
    ""中是否含有空内容:True
    "kdfjk kjdfk"中是否含有空内容:True
    "jfosifjosidf"中是否含有空内容:False
    []中是否含有空内容:True
    ["Kevin","Jose",""]中是否含有空内容:True
    ["Kevin","Jose","Loki"]中是否含有空内容:False
    ()中是否含有空内容:True
    ("Kevin","Jose","")中是否含有空内容:True
    ("Kevin","Jose","Loki yao")中是否含有空内容:False
    

    6、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

       dic = {"k1": "v1v1", "k2": [11,22,33,44]}
       PS:字典中的value只能是字符串或列表

    def value_len(dic):
        for i in dic:
            dic[i] = dic[i][:2]
        return dic
    print(value_len({"k1": "v1v1", "k2": [11,22,33,44]}))
    
    # 运行结果:
    {'k1': 'v1', 'k2': [11, 22]}
    

    7、写函数,接收两个数字参数,返回比较大的那个数字。

    方法一:

    def max_num(a,b):
        if a > b:
            return a
        else:
            return b
    print('5和10中较大的数字是:{}'.format(max_num(5,10)))
    print('15和12中较大的数字是:{}'.format(max(15,12)))
    
    # 运行结果:
    5和10中较大的数字是:10
    15和12中较大的数字是:15
    

    方法二:

    def max_num(a,b):
        return a if a > b else b
    print('5和10中较大的数字是:{}'.format(max_num(5,10)))
    print('15和12中较大的数字是:{}'.format(max(15,12)))
    
    # 运行结果:
    5和10中较大的数字是:10
    15和12中较大的数字是:15
    

    8、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。

    def modify_file(filename,old,new):
        with open(filename, encoding = 'utf-8') as f1, open('%s.bak'%filename, 'w', encoding= 'utf-8') as f2:
            for line in f1:
                if old in line:
                    line = line.replace(old,new)
                f2.write(line)
        import os
        os.remove(filename)
        os.rename('%s.bak'%filename,filename)
    modify_file('test.txt', '刘德华', '张学友')
    

    9、写函数,接收n个数字,求这些参数数字的和。

    def total(*args):
        total = 0
        for i in args:
            total += int(i)
        return total
    print('2,4,6,7,8,10,23中所有数字的求和结果是:{}'.format(total(2,4,6,7,8,10,23)))
    
    # 运行结果:
    2,4,6,7,8,10,23中所有数字的求和结果是:60
    

    10、用面向函数的思想完成购物车作业:

       函数一:实现三次登录功能
       函数二:实现新用户注册功能
       函数三:购物车功能
       进阶任务:将购物功能拆分成多个函数

    相关文章

      网友评论

        本文标题:Python面试题-函数

        本文链接:https://www.haomeiwen.com/subject/eohxxhtx.html