每个程序员半小时内必须解决的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()
测试五
posted @ 2017-11-02 21:59  Jean_V  阅读(852)  评论(0编辑  收藏  举报