每个程序员半小时内必须解决的5个编程问题
下面是五道基本的编程测试题,检验一下你的编程基本功是否达标。是否适合做一名合格的程序员
问题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编程实现,编程能力不强,花了好些时间()才勉强做完,各位看官见笑了!!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#测试一 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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 测试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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 测试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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#测试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)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
测试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()
你不了解的事情,并不意味着它不发生;
你不知道的事情,也并不意味着它不存在;
学习就是探索未知的东西。