• 每个程序员半小时内必须解决的5个编程问题


    Left hug下面是五道基本的编程测试题,检验一下你的编程基本功是否达标。是否适合做一名合格的程序员

    问题1:使用for循环、while循环和递归写出3个函数来计算给定数列的总和。


    问题2:编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。


    问题3:编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。


    问题4:编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。


    问题5:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。

    本人目前也是菜鸟一个,目前正在学习python,此处也就是用的python编程实现,编程能力不强,花了好些时间(Clock)才勉强做完,各位看官见笑了!!

    #测试一
    def func11(NumList):
        sum=0
        for x in NumList:
            sum+=x
        print("func11数列的数值总和为:",sum)
    def func12(NumList):
        sum=0
        while len(NumList):
            sum+=NumList[0]
            del NumList[0]
        print("func12数列的数值总和为:",sum)
    
    numlist=[1,5,7,56,12]
    func11(numlist)
    func12(numlist)
    测试一
    # 测试2
    def combine(list1,list2):
        maxList=[]
        minList=[]
        list3=[]
        if len(list1)!=len(list2):
            if len(list1)<len(list2):
                maxList=list2
                minList=list1
            else:
                maxList=list1
                minList=list2
            for i in range(len(minList)):
                list3.append(minList[i])
                list3.append(maxList[i])
            for i in range(len(maxList)-len(minList)):
                list3.append(maxList[len(minList)+i])
        else:
            for i in range(len(list1)):
                list3.append(list1[i])
                list3.append(list2[i])
        print(list3)
    
    list1=['a','z','b','g','h','u']
    list2=[1,2,3,4]
    combine(list1,list2)
    测试二
    # 测试3,计算斐波那契数列的前一百个0,1,1,2,3,5,8,13,21
    def Fibnacci(n):
        m,a,b=0,0,1
        while m<n:
            print(a)
            a,b=b,a+b#关键代码
            n-=1
    
    # Fibnacci(100)
    测试三
    #测试4 将一个给定的列表中的非负数字组成一个最大的数,例如[50,2,1,83,9]组成的最大数为9835021
    def func4(list):
        # 给每一个数字根据第一位大小赋予一定的权重,然后按照权重进行排序
        new_list=[]
        for i in range(len(list)):
            if list[i]<10:
                new_list.append([list[i],list[i]])
            elif 10<=list[i]<=99:
                new_list.append([list[i]/10,list[i]])
            elif 100<=list[i]<=999:
                new_list.append([list[i]/100,list[i]])
            elif 1000<=list[i]<=9999:
                new_list.append([list[i]/1000,list[i]])
    
        print(new_list)
        new_list.sort(reverse=True)#倒序排列
        #针对那种5与50这种特殊情况,进行调换位置
        for i in range(len(new_list)):
            for j in range(i+1,len(new_list)):
                if new_list[i][0]==new_list[j][0]:
                    temp=new_list[i]
                    new_list[i]=new_list[j]
                    new_list[j]=temp
        print(new_list)
        s=""
        for x in new_list:
            s+=str(x[1])
        print(int(s))
    
    list=[50,2,1,83,5,9]
    func4(list)
    测试四
    测试5:编写一个在1,2,3,4,5,6,7,8,9(顺序不变)数字之间插入+,-,或什么都不插,使得计算的结果总是为100,并输出所有的可能性
    #例如:1+2+34-5+67-8+9=100
    oper=["+","-",""]
    def add(a,b):
        return a+b
    def minus(a,b):
        return a-b
    
    operation={
        "+":add,
        "-":minus
    }
    def func5():
        #循环3的8次方,判断符号
        for i in range(3):
            op1=oper[i]
            for j in range(3):
                op2=oper[j]
                for k in range(3):
                    op3=oper[k]
                    for l in range(3):
                        op4=oper[l]
                        for m in range(3):
                            op5=oper[m]
                            for n in range(3):
                                op6=oper[n]
                                for o in range(3):
                                    op7=oper[o]
                                    for p in range(3):
                                        op8=oper[p]
    
                                        res="1"+op1+"2"+op2+"3"+op3+"4"+op4+"5"+op5+"6"+op6+"7"+op7+"8"+op8+"9"
                                        if eval(res)==100:
                                            print(res+"=100")
    
    func5()
    测试五
  • 相关阅读:
    [luogu1594]护卫队(dp)
    [luogu1968]美元汇率(dp)
    [NOIP2006]金明的预算方案(dp)
    [caioj1056](相同数列问题)填满型01背包2
    [IPUOJ]混合背包 (dp)
    趣说倍增算法
    [POI2005]BAN-Bank Notes (dp、倍增)
    NOIP考前注意
    SharePoint 2013 App 开发—Auto Hosted 方式
    SharePoint 2013 App 开发—App开发概述
  • 原文地址:https://www.cnblogs.com/jean925/p/7774782.html
Copyright © 2020-2023  润新知