美文网首页python面...
python面试题大全

python面试题大全

作者: BigJeffWang | 来源:发表于2017-07-06 20:12 被阅读94次

    持续更新中...

    算法部分:

    # coding: utf-8
    
    # 第零题
    # l = [1, 2, 3, 1, 2, 3, 2, 4]
    # 排序从大到小
    #  过滤相同的数,相同的个数越多,排在前面
    # 个数相同,元素值大的,排在前面
    """
    l = [1, 2, 3, 1, 2, 3, 2, 4]
    k = dict.fromkeys(l, 0)
    for i in l:
        if i in k:
            k[i] += 1
    
    L = [(k, v) for k, v in k.items()]
    for i in range(len(L)):
        for j in range(i):
            if L[j][1] < L[j + 1][1]:
                L[j], L[j + 1] = L[j + 1], L[j]
            elif L[j][1] == L[j + 1][1]:
                if L[j][0] < L[j + 1][0]:
                    L[j], L[j + 1] = L[j + 1], L[j]
    
    print L
    res = [i[0] for i in L]
    print res
    """
    # 第一题
    # 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    # 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
    """
    sum = 0
    for i in range(1, 5):
        for j in range(1, 5):
            if i != j:
                for k in range(1, 5):
                    if k not in (i, j):
                        sum += 1
                        print i, j, k
    print sum
    """
    # 第二题
    # 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
    # 程序分析:循环计算即可,判断成立即可输出。首先要判断是否为正整数。引入math模块算平方根。
    """
    import math
    
    i = 0
    while 1:
        i += 1
        x = math.sqrt(i + 100)
        if int(str(x).split('.')[1]) == 0:
            print 'x = ', str(x)
            y = math.sqrt(i + 100 + 168)
            if int(str(y).split('.')[1]) == 0:
                print 'y = ', str(y)
                print 'res = ', str(i)
                break
    """
    # 第三题
    # 题目:输入某年某月某日,判断这一天是这一年的第几天?
    # 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,
    # 特殊情况,闰年且输入月份大于3时需考虑多加一天。
    """
    import time
    import datetime
    
    # 时间转格式化输出
    ltime = time.localtime()
    print ltime
    print time.strftime('%Y年%m月%d日', ltime)
    
    # 格式化输入转时间戳
    t = "2017年07月06日"
    t1 = "2016年05月03日"
    ptime = time.strptime(t, '%Y年%m月%d日')
    print ptime
    print "第几年: ", ptime.tm_year,\
        ", 第几个月: ", ptime.tm_mon,\
        ", 这个月第几周: ", ptime.tm_wday,\
        ", 今年第几天: ", ptime.tm_yday
    # datetime
    dtime = datetime.datetime.now()
    print "dtime = ", dtime
    print dtime.timetuple()
    print dtime.isocalendar()
    print dtime.isoweekday()
    print datetime.time()
    print datetime.date(2017, 5, 14)
    p_time = datetime.datetime.strptime(t1, '%Y年%m月%d日')
    print p_time
    print p_time.timetuple()
    pptime = p_time.timetuple()
    print "第几年: ", pptime.tm_year,\
        ", 第几个月: ", pptime.tm_mon,\
        ", 这个月第几周: ", pptime.tm_wday,\
        ", 今年第几天: ", pptime.tm_yday
    """
    # 第四题
    # 台阶问题/斐波纳挈
    # 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
    """
    fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
    
    # 第二种
    def fib1(n):
        a, b = 0, 1
        for _ in xrange(n):
            a, b = b, a + b
        return b
    
    print fib(10)
    """
    
    # 第五题
    # 变态台阶问题
    # 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。
    # 求该青蛙跳上一个n级的台阶总共有多少种跳法。
    """
    fib = lambda n: n if n < 2 else fib(n - 1) * 2
    print fib(10)
    """
    # 第六题
    # 矩形覆盖
    # 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。
    # 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
    # 第2*n个矩形的覆盖方法等于第2*(n-1)加上第2*(n-2)的方法。
    """
    f = lambda n: 1 if n < 2 else f(n - 1) + f(n - 2)
    """
    # 第七题
    # 杨氏矩阵查找
    # 在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序
    # 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
    # 1 2 3
    # 2 3 4
    # 3 4 5
    """
    def get_arr(m, n, x):
        l = []
        for i in range(m):
            tmp = []
            for j in range(1, n + 1):
                res = j + i
                tmp.append(res)
                if res == x:
                    print str(x), "被包含在数组里"
            l.append(tmp)
        print l
    get_arr(5, 5, 9)
    """
    # 第八题
    # 去除list重复元素
    """
    l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
    l2 = list(set(l1))
    # l2.sort(reverse=True)
    l2.sort(key=l1.index)
    print l2
    """
    
    """
    # 第二种方法
    l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
    l2 = []
    [l2.append(x) for x in l1 if x not in l2]
    print l2
    """
    
    """
    # 第三种方法
    l1 = ['b', 'c', 'd', 'b', 'c', 'a', 'a']
    l2 = dict.fromkeys(l1).keys()
    l2.sort(key=l1.index)
    print l2
    """
    # 第九题
    # 合并有序列表
    # 尾递归
    """
    def _recursion_merage_sort2(l1, l2, tmp):
        if not l1 or not l2:
            tmp.extend(l1)
            tmp.extend(l2)
            return tmp
        else:
            if l1[0] < l2[0]:
                tmp.append(l1[0])
                del l1[0]
            else:
                tmp.append(l2[0])
                del l2[0]
            return _recursion_merage_sort2(l1, l2, tmp)
    
    l1 = [1, 3, 5, 7, 9]
    l2 = [2, 4, 6, 8]
    tmp = []
    _recursion_merage_sort2(l1, l2, tmp)
    print tmp
    """
    
    # 第二种方法
    """
    def loop_merage_sort(l1, l2):
        tmp = []
        while l1 and l2:
            if l1[0] < l2[0]:
                tmp.append(l1[0])
                del l1[0]
            else:
                tmp.append(l2[0])
                del l2[0]
        tmp.extend(l1)
        tmp.extend(l2)
        return tmp
    l1 = [1, 3, 5, 7, 9]
    l2 = [2, 4, 6, 8]
    print loop_merage_sort(l1, l2)
    """
    
    # 第十题
    # 二分查找
    """
    def binarySearch(l, t):
        low, high = 0, len(l) - 1
        while low < high:
            print low, high
            mid = (low + high) / 2
            if l[mid] > t:
                high = mid
            elif l[mid] < t:
                low = mid + 1
            else:
                return mid
        return low if l[low] == t else False
    
    print 1/2
    """
    
    # 第十一题
    # 快排
    """
    def qsort(seq):
        if not seq:
            return []
        else:
            p = seq[0]
            lesser = qsort([x for x in seq[1:] if x < p])
            greater = qsort([x for x in seq[1:] if x > p])
            return lesser + [p] + greater
    """
    

    相关文章

      网友评论

        本文标题:python面试题大全

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