python面试编程题

  1. 人类的数字是:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、29、30。。。。。

    外星人数字是:1、2、4、5、6、7、9、10、11、12、14、15、16、17、19、20、21、22、24、25、26、27、29、41、42、44、45、46、47、49。。。。。
    求:输入一个外星人的数字,得到对应的人类数字,比如:输入9,得到对应的人类数字7

解题思路:将1-n之间的数字中包含3,8 的数字提取出来,然后用n减去提取完3、8的数字的长度

n=int(input("请输入数据:"))
def sum(n):
    striL=[]
    for i in range(1,n):
        stri=str(i)
        if ('3' in stri) or ('8' in stri):
            striL.append(stri)
    return len(striL)
print(n-sum(n))
  1. 题目是:有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法。

data开始索引和结束索引都从零开始计数,判断开始是否为“-”,如果是与结束索引交换,结束索引加一,再判断交换后的是否为“-”,如果是再交换,。。。如果不是,开始索引加一

def print_data(data):
    start_index=0
    end_index=0
    count=len(data)
    while count>start_index+end_index:
        if data[start_index] == "-":
            data[count-end_index-1],data[start_index]=data[start_index],data[count-end_index-1]
            end_index+=1
        else:
            start_index+=1
    return data
data=['-','-','+','-','+','+','-','+','+','-','-','+','-']
print(print_data(data))
  1. 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数–算法
    比如l=[2,7,11,15] 目标值:9

循环遍历列表,取出一个值,判断目标值-取出的值是否存在于列表中(时间复杂度为o(n))

l=[2,3,5,7,11,15]
target=9
def sum(l,target):
	for i in l:
		j = target-i
		if j in target:
			return [i,j]
	else:
		return []
  1. 判断一个字符串是否为对称的

把字符串分成一半,判断开头和结尾是否一致

str1="bccb"
def str_mym(str1):
    n=int(len(str1)/2)
    for i in range(n):
        if str1[i] != str1[len(str1)-1-i]:
            return False
    else:
        return True
print(str_mym(str1))
  1. 将一个列表中的数按从小到大进行排序

循环表里列表,比较两个数的值,将比较大的放到左边,循环遍历一遍之后,最大的被但放到了最后,再进行循环。。

l=[1,5,8,4,5,9,7,3]
def sort_l(l):
    for i in range(len(l)-1):
        for j in range(len(l)-i-1):
            if l[j]>l[j+1]:
                l[j],l[j+1]=l[j+1],l[j]
    return l
print(sort_l(l))
  1. 斐波那契序列,1,1,2,3,5,8.。。用递归实现打印第八个数

1+1=2,1+2=3,2+3=5.。。。输入最大值,将最大值和倒数第二个相加,再将倒数第二个和倒数第三的相加。。。以此类推,直到加到倒数第一个返回1

n=8
def fibo(n):
	if n <= 1:
		return 1
	else:
		return (fibo(n-1)+fibo(n-2))
print(fibo(n))
  1. 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]

map(函数,可迭代数据,可迭代数据【可选】)

l=[1,2,3,4,5,6]
result=map(lambda x:x**2,l)
print([i for i in result if i>10])

你可能感兴趣的:(python)