这是笔者面试小十家公司后呕心沥血总结的一些笔试编程题~具体公司就不透露了。哎,说多了都是泪啊。

1.二分法查找:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
find_num = int(input('请输入一个数字:'))
start = 0
end = len(l) - 1 while True:
middle = (start + end) // 2
if find_num == l[middle]:
print('找到了!索引是:', middle)
break
elif find_num > l[middle]:
start = middle + 1
elif find_num < l[middle]:
end = middle - 1
if start > end:
print('没找到!', find_num)
break

2.二分法查找序列

#一个有序数列类似[1,2,3,3,4,4,5,5,5,6,7,8,8]
#输入5 用二分法 输出 5 的起始下标和 末尾下标 def searchRange(nums, target):
if len(nums) == 0:
return [-1,-1]
elif target < nums[0] or target > nums[-1]:
return [-1,-1]
else:
l, r = 0, len(nums) - 1
while l <= r:
mid = (l + r) // 2
if target > nums[mid]:
l = mid + 1
elif target < nums[mid]:
r = mid - 1
elif target == nums[mid]:
l = r = mid
while l-1 >= 0 and nums[l-1] == target:
l -= 1
while r+1 <= len(nums)-1 and nums[r+1] == target:
r += 1
return [l,r]
return [-1,-1] nums = [1,3,4,6,8,8,9,10]
a = searchRange(nums,8)
print(a)

3.冒泡排序

'''
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。
''' import random
# 步骤2:创建一个空列表,用于存放待排序随机数据集
data = [random.randint(0, 100) for i in range(10)]
print('待排序的随机数列: {0}'.format(data))
# 步骤3:使用嵌套循环实现冒泡排序
# 外层循环控制排序的次数
for i in range(10):
# 内层循环控制每次对比的次数
for j in range(len(data)-1-i):
# 如果前项值大于后项值则对位交换,将大的在列表中后移1位
if data[j] > data[j+1]:
temp = data[j]
data[j] = data[j+1]
data[j+1] = temp
pass
# 步骤4:输出排序后的结果
print('排序后的有序序列: {0}'.format(data)) #交换排序.冒泡排序
L = [1, 3, 2, 32, 5, 4]
def Bubble_sort(L):
for i in range(len(L)):
for j in range(i+1,len(L)):
if L[i]>L[j]:
# temp = L[j]
# L[j] = L[i]
# L[i] = temp
L[i], L[j] = L[j], L[i]#交换顺序 print (L)
Bubble_sort(L)

4.列表去重

ids = [1,2,3,3,4,2,3,4,5,6,1,6,4,3,2,3,]
news_ids = []
for id in ids:
if id not in news_ids:
news_ids.append(id)
print (news_ids)
#python 列表去重(数组)的几种方法 - 朝阳的向日葵 - 博客园 https://www.cnblogs.com/zknublx/p/6042295.html
ids = list(set(ids))
print(ids) #一句话列表去重 #lambda 一句话列表去重
a=(lambda x,y:x if y in x else x + [y], [[],] + ids)
print(a)

5.列表嵌套

l=[1,2,[3,4,[5,6],[7,8],9],10]
l1=[]
#递归函数实现:
def getitem(l):
for item in l:
if isinstance(item,list):
getitem(item)
else:
print(item)
l1.append(item) getitem(l)
print(l1)
#python利用递归函数输出嵌套列表的每个元素 - lincappu - 博客园 https://www.cnblogs.com/lincappu/p/8146055.html

6.统计列表数值出现次数

a=[1,2,3,3,3,3,7,7,8,8,10]
print(a)
news_ids = []
for id in a:
if id not in news_ids:
news_ids.append(id)
print (news_ids)
for i in news_ids:
if a.count(i) >= 1:
print('%s 出现了%d 次!'%(i, a.count(i))) #纯手写

7.列表逆输出

a=[0,1,2,3,4,5,6,7,8,9,10]
b=[]
print(a[::-1]) #逆输出 #手写代码
count=len(a)
for i in range(len(a),0,-1):
count-=1
b.append(a[count])
print(b)

8.字符串统计

str='mynameisbobiamfromchina嘿嘿嘿嘿'
str=','.join(str) #以逗号分隔字符串
print(str)
li=str.split(',')
print(li) #变成列表了
#统计每一个字符出现的次数:
for i in set(li):
if li.count(i) >= 1:
print('%s 出现了%d 次!'%(i, li.count(i))) print('*'*50)
#方式二
from collections import Counter
res = Counter(li)
print(res)

9.字节型字典

dic=b'{"name":"ltf","school":"tyut"}'
str(dic, encoding="utf-8")
print(dic)
dicBytes = dic.decode('utf-8')
print(dicBytes)
print(eval(dicBytes)) #字符串转换为字典
print(eval(dicBytes).keys()) #修改key
dict = {'a':'ltf','b':'fjf'}
dict.update({'':dict.pop("a")})
dict.update({'':dict.pop("b")})
print(dict)

10.快速排序

#coding:utf-8
#author:徐卜灵
#交换排序.快速排序
# 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明:挖坑填数+分治法:
# import sys
# sys.setrecursionlimit(150000)
L = [6, 3, 2, 32, 5, 4] def Fast_sort(L, left,right):
if left >= right:
return L
key = L[left]
low = left
high = right
while left < right:
# if L[right] > key:
# right-=1
# else:
# L[left] = L[right]
# if L[left] <= key:
# left += 1
# else:
# L[right] = L[left]
# L[left] = key
while left < right and L[right] >= key:
right -= 1
L[left] = L[right]
while left < right and L[left] <= key:
left += 1
L[right] = L[left]
L[left] = key
Fast_sort(L, low, left - 1)
Fast_sort(L,left + 1,high)
return L
print (Fast_sort(L,0,5)) #1.高质量代码
def quick_sort(lists, left, right):
# 快速排序
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[left] = key
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)
return lists
print (quick_sort(L,0,5)) #2.高质量代码
# # 设置最低位和最高位
# def quickSort(nums, low, high):
# # 设置一个比较基准key
# key = nums[low]
# while low<high:
# # 如果最高位的数 大于等于 key则向前走
# while low<high and nums[high] >= key:
# high -= 1
# # 如果最低位的数 小于等于 key则向后走
# while low<high and nums[low] <= key:
# low += 1
# # 交换值
# nums[low], nums[high] = nums[high], nums[low]
#
# #最后low=high, 此时交换key和high位上的值, 使小于key的值在key左边, 大的在key右边
# nums[nums.index(key)], nums[low] = nums[low], nums[nums.index(key)]
# # 返回最低位的位置
# return low
#
#
# # 进行重复操作
# def interval(nums, low, high):
# if low<high:
# # 进行排序并得到最低位位置以循环操作
# key_index = quickSort(nums, low, high)
# interval(nums, low, key_index)
# interval(nums, key_index+1, high)
#
#
# nums = [64,3,9,2,4,7,0,12,45,]
# interval(nums, 0, len(nums)-1)
# print nums
#

11.打印三角形

for i in range(10):
for j in range(0, 10 - i):
print(end=" ")
for k in range(10 - i, 10):
print("*", end=" ") print("") for l in range(10):
for m in range(l):
print(" ",end="")
for n in range(10-l):
print("*",end=" ")
print("")

12.数字转中文输出

num=[1,2,3,4,5,6,7,8,9,0]
cn=['壹','贰','叁','肆','伍','陆','柒','捌','玖','零']
dw=['元','十','百','千','万','十','百','千']
n=str(input('请输入数字:'))
c=len(n)-1
# print c
ln=''
c1=0
for i in n:
nb = int(i) - 1
if i=='' and c1==0:
c1=1
pass
else:
if c1==1:
c1=0
ln=ln+ cn[nb]+dw[c]
print(ln)
c=c-1
print(ln)

13.数字逆输出

# num=input('请输入一个数:')
# a=[]
# li=list(num)
# print(li)
# count=len(li)
# for i in range(len(li),0,-1):
# count-=1
# a.append(li[count])
# print(a) num=input('请输入一个数:')
a=[]
str=''
print(num)
count=len(num)
for i in range(len(num),0,-1):
count-=1
a.append(num[count])
b=str.join(a)
print(int(b))

14.斐波那契数列

#最简单的方法为数组,其次为循环,最垃圾的为递归,到了40就算好久。。日后再琢磨数组

a=[1,1]
def fn(n):
count=0
f0=1
f1=1
f2=0
while count<n:
count+=1
f2=f1+f0
f0=f1
f1=f2
a.append(f2)
print('第%s项的项数为:%s'%(b,f2))
print('斐波那契数列为:')
print(a)
b=int(input('请输入项数:'))
fn(b-2)

15.有序数组合并

def merge_sort(a, b):
ret = []
i = j = 0
while len(a) >= i + 1 and len(b) >= j + 1:
if a[i] <= b[j]:
ret.append(a[i])
i += 1
else:
ret.append(b[j])
j += 1
if len(a) > i:
ret += a[i:]
if len(b) > j:
ret += b[j:]
return ret if __name__ == '__main__':
a = [1,3,4,6,7,78,97,190]
b = [2,5,6,8,10,12,14,16,18]
print(merge_sort(a, b))

16.生成器

#如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?
# 这样就不必创建完整的list,从而节省大量的空间。
# 在Python中,这种一边循环一边计算的机制,称为生成器(Generator) def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
fib(8)
#生成器调用方法,其实是

17.装饰器

#装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景。
def outer(func):
def inner(*args,**kwargs):
print("认证成功!")
result = func(*args,**kwargs)
print("日志添加成功")
return result
return inner @outer
def f1(name,age):
print("%s 正在连接业务部门1数据接口......"%name) # 调用方法
f1("jack",18)
#装饰器调用方法,其实是把函数 f1 当成 outer的参数

18.直接插入排序

#1.直接插入排序
L = [1, 3, 2, 32, 15, 5, 4]
def Insert_sort(L):
for i in range(1,len(L)):
for j in range(0,i):#这里面其实也是从前向后比较
if L[i]<L[j]:
L.insert(j,L[i])#在不大于的位置插入L[i],这个时候,列表加长了1位,L[i]插入到指定位置了,但它的值也向后移动了一位
L.pop(i+1)#把原来L[i]的值删除。
print(L)
#空间复杂度为O(1),时间复杂度为O(n*n)
Insert_sort(L)
# print sorted(L)#自带的两种排序
# L.sort()
# print L

19.简单选择排序

L = [6, 3, 2, 32, 5, 4]
def Select_sort(L):
for i in range(0,len(L)):
for j in range(i,len(L)):
if L[i] > L[j]: #打擂台的形式
# temp = L[i]
# L[i] = L[j]
# L[j] = temp
L[i],L[j] = L[j],L[i]
return L
print (Select_sort(L))

20.驼峰命名规则

'''
bob_ltf 输出 bobLtf
'''
s='bob_ltf_lsq_fjf'
s1=''
s2=''
arr=s.split('_') #列表
print(arr)
s1=s1.join(arr[1:])
print(s1.capitalize())
s2=s2.join(arr[:1])
s3=s2+s1.capitalize()
print(s3)
'''
输出结果
['bob', 'ltf', 'lsq', 'fjf']
Ltflsqfjf
bobLtflsqfjf
'''

暂时总结这么多,以后的面试或者笔试题我也会加入到这里面。。。笔试的时候全部要求手写代码,而且不能用第三方库的方法。。。这就很难受了

以上源码GitHub地址:

https://github.com/tyutltf/python_bishi/tree/master

python最新笔试题的更多相关文章

  1. python面试笔试题汇总

    Python面试攻略(嗨谈篇) 110道python面试笔试题汇总,你能答对几道? Python 面试问答 Top 25 2018 年最常见的 Python 面试题 & 答案

  2. 2020年Python最新面试题(一):Python基础

    转: 2020年Python最新面试题(一):Python基础 目录 1. 什么是 Python?使用 Python 有什么好处? 2. Python中常用的关键字有哪些? 3. Python 2.x ...

  3. 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)

    前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...

  4. Python 的笔试题

    其实大多数说学习Python 是纯兴趣,真的我不信,许多人已经工作了,没有那么多时间搞自己的纯兴趣了,都会为了生活奋斗,可以说转行来学python 就是未来加薪,当然,小编现在也快要准备工作了,所以也 ...

  5. 110道python面试笔试题汇总,你能答对几道?

    数据分析系列教程插播一篇面试题教程,最近公众号新来了不少朋友,这几天不少粉丝留言说问我有没有python面试题,其实之前分享过一些面试题,今天统一再给大家分享一遍,也希望能帮助此时仍在找工作的同学,尽 ...

  6. 超强汇总!110 道 Python 面试笔试题

    https://mp.weixin.qq.com/s/hDQrimihoaHSbrtjLybZLA 今天给大家分享了110道面试题,其中大部分是巩固基本python知识点,希望刚刚入手python,对 ...

  7. 2017 Python最新面试题及答案16道题

    1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...

  8. python面试笔试题,你都会了吗?快来复习

    1.一行代码实现1--100之和 利用sum()函数求和 >>> sum(range(0,101)) 5050 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 a ...

  9. python测试笔试题1

    哪一个方法用来返回变量类型? 答案 type 哪一个方法用来列出一个类下的所有属性,方法,以及变量? 答案 dir 字符串方法format是用来去掉字符串的左右空格的么? 答案 不是 python 的 ...

随机推荐

  1. 如何用iOS工程生成iOS模拟器包

    1. 在终端上运行下面的命令来查找你的机器上可用的SDK的版本 xcodebuild -showsdks 2. 创建模拟器包: xcodebuild -workspace ** -scheme ** ...

  2. 深入剖析php执行原理(4):函数的调用

    本章开始研究php中函数的调用和执行,先来看函数调用语句是如何被编译的. 我们前面的章节弄明白了函数体会被编译生成哪些zend_op指令,本章会研究函数调用语句会生成哪些zend_op指,等后面的章节 ...

  3. 让CI框架支持service层

    大家知道CodeIgniter框架式MVC分层的,通常大家把业务逻辑写到Controller中,而Model只负责和数据库打交道. 但是随着业务越来越复杂,controller越来越臃肿,举一个简单的 ...

  4. Hadoop学习之路(十九)MapReduce框架排序

    流量统计项目案例 样本示例 需求 1. 统计每一个用户(手机号)所耗费的总上行流量.总下行流量,总流量 2. 得出上题结果的基础之上再加一个需求:将统计结果按照总流量倒序排序 3. 将流量汇总统计结果 ...

  5. 【PHP】mysql_insert_id() 函数

    mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0. ...

  6. ASP.Net MVC的学习

    套种间作,也挺有意思的——近来学习感悟.DRP学习的同时,折腾了点以前不曾学习但是却很多次耳闻过的东西——Asp.Net中的MVC架构模式. 一.是什么? MVC,即(Model-View-Contr ...

  7. windows下使用docker(一)—— 安装

    1.下载地址:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 2.安装 按照安装向导安装 ...

  8. ApiCloud模块链接

    城市选择器 页面左右滑动 识别信用卡 图像coverFlow  输入框  图片浏览器  百度地图                                                     ...

  9. Css绘制箭头

    IE6不支持transparent,因此上面的代码在IE6加一点处理透明的hack,修改后的代码如下 IE6下处理transparent   border-left:100px solid trans ...

  10. BootStrap启动类

    来源 本文整理自 <Tomcat内核设计剖析>.<Tomcat结构解析> 加上自己的理解.源码来自 Tomcat8.5 版本 // org.apache.catalina.st ...