下面是五道基本的编程测试题,检验一下你的编程基本功是否达标。是否适合做一名合格的程序员
问题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编程实现,编程能力不强,花了好些时间()才勉强做完,各位看官见笑了!!
#测试一
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()