python怎么考试_和我一起看看,国外的Python考试到底是怎么样(上篇)

@Author :By Runsen

@Written Date:2020/05/20

前言

我是在4月底帮别人考试的,然后别人发过来去年的考试题的。我看了下,全是英文,原来是留学生啊。

走,我带你们看看国外的Python考试题到底是什么辣鸡东西?

看了下,好像我英语不行,但也知道满分是140,什么辣鸡玩意,一脸懵逼

第一题

就是要我定义samPlaces函数方法,主要这个是需要O(n)的时间复杂度,对于我这老油条来说,就是一个切菜的东西,直接用字典,Leetcode第一题的两数相加就是这个玩意。难度0,切菜级别

'''

@Author:Runsen

@微信公众号: 润森笔记

@博客:https://blog.csdn.net/weixin_44510615

@Date: 2020/4/23

'''

'''

输出两个列表的相同的索引

'''

def samPlaces(s1,s2):

if len(s1) != len(s2):

return []

my_dict = {}

my_index = []

for index,item in enumerate(s1):

my_dict[item] = index

for i in s2:

if i in my_dict.keys():

my_index.append(my_dict[i])

return my_index

if __name__ == '__main__':

print(samPlaces([1,7,9],[1,3,9]))

第二题

二题看的我就是一个煞笔,一个InputOuput.py 就是读取文件的,第二Quicsort.py就是快速排序的。第三个是一个字符串开头和结尾字符要相同。4+3+5+4+4=20分

第一个问我Manipulation.py输出什么,这不是当我傻逼,如果单词前后字母都相同,直接del,沙比。

答案是

['cat', 'elephant']

[]

第二题,我去,这么简单,太简单了,送分的

begin

this

is

a

test

end

第三题,用一个函数main()编写一个程序,就是读取,再排序,再去除单词前后字母都相同,然后将结果字符串写入名为cookedData.txt文件

def readFromFile(filename):

lst = []

fp = open(filename,"r")

item = fp.readline().strip()

while item != '':

lst.append(item)

item = fp.readline().strip()

fp.close()

return lst

def writeTofile(contents,filename):

fp = open(filename,"w")

fp.write("begin\n")

for item in contents:

fp.write(item + " ")

fp.write("\nend")

fp.close()

def sort(lis):

if len(lis) 

return lis

less, equal ,greater = [],[],[]

pval = lis[0]

for i in lis:

if i 

less.append(i)

elif i > pval:

greater.append(i)

else:

equal.append(i)

return sort(less) + equal + sort(greater)

def modifylist(values):

i=0

while i 

if values[i][0] == values[i][-1] or (" " in values[i]):

del values [i]

else:

i +=1

if __name__ == '__main__':

# ['for loop', 'link list', 'return', 'CISC', 'binary rearch tree', 'variable']

data = readFromFile("rawData.txt")

# ['CISC', 'binary rearch tree', 'for loop', 'link list', 'return', 'variable']

sort_data = sort(data)

modifylist(sort_data)

print(sort_data)  # ['return', 'variable']

writeTofile(sort_data,"cookedData.txt")

第四题,都是切菜切菜

# cookedData.txt

begin

return variable

end

第五题,将在快速排序中按降序(从最大值到最小值)排序,辣鸡,简单,大于变小于,小于变大于。

def sort(lis):

if len(lis) 

return lis

less, equal ,greater = [],[],[]

pval = lis[0]

for i in lis:

if i > pval :

less.append(i)

elif i 

greater.append(i)

else:

equal.append(i)

return sort(less) + equal + sort(greater)

if __name__ == '__main__':

print(sort([17,-28,11,9,15,-2]))

# [17, 15, 11, 9, -2, -28]

第三题

填空题选择题, 我看看。好像挺难的。

第一题,如果在未排序的列表上使用二分搜索,下面对的是哪个?

A,程序崩了?你才崩了 B、永远找不到要查找的值。这么绝对,比如[2,1,3,5,4],我要找3,不就打脸了吗?C、有时搜索能成功,不用说了,就是你 D、时间复杂度发生改变,程度不变,你时间复杂度变个毛

我觉得就是C,送分,切菜

第二题、使用二分搜索来按升序搜索数字列表,但有些数字出现了不止一次。以下哪个是正确的?

A、搜索始终找到第一个发生 B、搜索始终找到最后一个发生 C、搜索有时找到第一个,有时找到最后一个 D、时间复杂度发生改变

如果是[1,1,2,3,5,6,] 找1,是[1,2,3,4,5,5,] 找4,所以搜索找到的位置不能明确,二分查找在最坏情况下是在排除到只剩下最后一个值之后得到结果,二分查找的时间复杂度O(log2n),如果出现相同的数字,时间复杂度应该发生改变,答案我觉得是D

第三题、冒泡排序,对以下列表进行排序数值:[17,5,12,13,16,3],显示冒泡排的第一次迭代后的列表

练习、Python实现冒泡排序(三十九)

我这篇搞定了,辣鸡东西,一个外循环,切菜送分

[5,12,13,16,3,17]

第四题,选择排序,插入排序,冒泡排序选一个,

摆明选择,这他妈的简单一笔

第五题

在合并排序中,将列表重复拆分,然后将排序列表重新合并在一起。显示这两者的合并结果列表:[4,7,9,12],[1,4,6,8,15]   合并成 [1, 4.,6,7,8,9,12,15,。需要代码实现,

这有点难度,但是也是很基础的排序。就是切菜,辣鸡

'''

@Author:Runsen

@微信公众号: 润森笔记

@博客:https://blog.csdn.net/weixin_44510615

@Date: 2020/4/25

'''

def merge(a, b):

'''

合并排序:两个已经排序好的

'''

c = []

h = j = 0

# 谁小加谁

while j 

if a[j] 

c.append(a[j])

j += 1

# 相同也没事

else:

c.append(b[h])

h += 1

# 有的时候 j 直接达到了len(a),那么直接append b剩下的

if j == len(a):

for i in b[h:]:

c.append(i)

if h == len(b):

for i in a[j:]:

c.append(i)

return c

if __name__ == '__main__':

print(merge([4,7,9,12],[1,4,6,8,15]))

# [1, 4, 4, 6, 7, 8, 9, 12, 15]

第四题

我还以为什么东西,练习时间复杂度,切菜

第一题

时间复杂度

第二题

取整除等于用//=来进行表示。一样的道理

一个堆排序的样子,时间复杂度

第三题

时间复杂度

第四题

时间复杂度

我没有答案的,就是自己瞎逼逼的,先到这,有点长了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值