Date: 2019-08-08
1. 下列代码运行结果是?
a = map(lambda x: x**3, [1, 2, 3])
list(a)
结果: [1, 8, 27]
解释:
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法
map() 函数语法:
1 |
|
参数
- function -- 函数
- iterable -- 一个或多个序列
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。
2. 当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包,以下代码输出值为:
def adder(x):
def wrapper(y):
return x + y
return wrapper
adder5 = adder(5)
print(adder5(adder5(6)))
结果; 16
解释:
adder(5) #返回了 wrapper ,且x=5
adder5 = adder(5) # adder5是对wrapper的引用 此时x等于5
adder5(6) # 相当于 wrapper(6) = 5+6=11 所以 adder5(6) =11 ,同理adder5(7)=12
adder5(adder5(6)) # = adder5(11) = wrapper(11) =5+11=16
3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 (表示用户所在组group所拥有的权限)
解释:
1位表示文件类型 -表示普通文件,d表示目录文件(第一段)
2-4位表示文件所有者的读写执行权限 (第二段)
5-7位表示文件所有者所在属组的读写执行权限 (第三段)
8-10位表示文件的其它用户的读写执行权限(第四段)
4. 正常建立一条TCP连接需要(3)个步骤,正常关闭一个TCP连接需要(4)个步骤
解释:3次握手,4次挥手。
5. 一副牌52张(去掉大小王),从中抽取两张牌,一红一黑的概率是多少 =26/51
解释:直接计算
6.
对于以下代码,
char* p=new char[100];
正确的是: p在栈上,new出来的在堆上
解释: p是一个指针,所以存储在栈上,p中存储的是新建的动态内存的地址,新建的动态内存在堆上
7. 这是第25道选择题,也是最后一道选择题。
请估算一下,包括本题在内,这25道选择题题干及选项总共大约有多少个字符? 2000
A.500
B.1000
C.2000
D.4000
解释:这题的意思是:在本题的基础上进行估计。题干56字符+选项15字符 估算(56+15)*25=1775 ~=2000
8. 在黑盒测试方法中,设计测试用例的主要根据是 程序外部功能
9. 1台机器对200个单词进行排序花了200秒(使用冒泡排序),那么花费800秒,大概可以对多少个单词进行排序? 400
解释: 首先要预先知道冒泡排序算法的时间复杂度是O(n^2).
所以200*200 : 200
n*n :800
又因为800/200=4
所以n 等于对200*200*4开根号得 400。
10. 以下开源软件中经常被用作消息队列的是哪个? A
A. Kafka
B.MongoDB
C.Hadoop
D.Spark
补充解释: 卡夫卡(Kafka)常作为消息队列(另外redits也可以写消息队列),MongoDB是一种数据库,hadoop是分布式集群,Spark是基于hadoop的一种分布式计算框架。
11. 目前移动设备主流的屏幕帧率是每秒()帧? 60
12. 一个栈的入栈序列为ABCDE,则栈的不可能的输出序列为 D(回忆剑指offer上的判断是否是出栈序列的编程题解题思路)
A. DCBEA
B.ACBED
C.DCEBA
D.DEBCA
记住栈是“先进后出”的数据结构就可以逐一进行排查!
13. 从sd卡加载一张图片为bitmap并显示到屏幕上的一个view,该view占用的内存主要和什么因素有关 ?
bitmap分辨率和颜色位数
14. 下列代码输出为:6
str1 = "Hello,Python";
str2 = "Python";
print(str1.index(str2));
15. 一个包里有5个黑球,10个红球和17个白球。每次可以从中取两个球出来,放置在外面。那么至少取________次以后,一定出现过取出一对颜色一样的球。 结果:16
解释:考虑极端情况下:白球数最多,超过另外两种球的数量之和,则进行极端取法:前面每次取一个白球,取完黑和红球是第15次,则在第16次必定是两个白球。
牛客上就是:
考虑最坏情况
黑球用B表示
红球用R表示
白球用W表示
前面15次取球情况
(B,W)(B,W) (B,W) (B,W) (B,W)
(R,W)(R,W) (R,W) (R,W) (R,W) (R,W) (R,W) (R,W) (R,W) (R,W)
最后只剩下两个白球了(W,W)
所以至少16次,才一定出现。
16. 下面关于ID3算法中说法错误的是(D)
A.ID3算法要求特征必须离散化 (对,必须离散化)
B. 信息增益可以用熵,而不是GINI系数来计算(对,信息增益就是利用熵的知识进行的计算)
C.选取信息增益最大的特征,作为树的根节点(每个节点特征的选择,即是选取相应子集中信息增益最大的那个特征作为划分节点)
D.ID3算法是一个二叉树模型(错,ID3并不是一个二叉树模型,是一个多叉树模型,叉的数量主要根据节点特征的类别数量)
补充解释:
ID3算法(Iterative Dichotomiser 3 迭代二叉树3代)是一个由Ross Quinlan发明的用于决策树的算法。可以归纳为以下几点:
- 使用所有没有使用的属性并计算与之相关的样本熵值
- 选取其中熵值最小的属性
- 生成包含该属性的节点
D3算法对数据的要求:
1) 所有属性必须为离散量;
2) 所有的训练例的所有属性必须有一个明确的值;
3) 相同的因素必须得到相同的结论且训练例必须唯一。
17.下列哪个不属于CRF模型对于HMM和MEMM模型的优势()B
A.特征灵活
B.速度快
C.可容纳较多上下文信息
D. 全局最优
解释
隐马尔可夫模型(Hidden Markov Model,HMM),最大熵马尔可夫模型(Maximum Entropy Markov Model,MEMM)以及条件随机场(Conditional Random Field,CRF)是序列标注中最常用也是最基本的三个模型。
*** HMM模型是对转移概率和表现概率直接建模,统计共现概率。
*** MEMM模型是对转移概率和表现概率建立联合概率,统计时统计的是条件概率,但MEMM容易陷入局部最优,是因为MEMM只在局部做归一化。
*** CRF模型中,统计了全局概率,在 做归一化时,考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置(label bias)的问题。
CRF优点:
1) CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活。(与ME一样) ————与HMM比较
2) 由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。 ————与MEMM比较
3) CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。
缺点: CRF需要训练的参数更多,与MEMM和HMM相比,它存在训练代价大、复杂度高的缺点。
18.在移动设备息屏时,以下哪种情况不一定导致大量耗电 D
A. 使用gps导航
B.信号特别弱
C.电话通话中
D.打开过大量应用
19. 关于Python中的复数,下列说法错误的是 C
A. 表示复数的语法是real + image j
B.实部和虚部都是浮点数
C.虚部必须后缀j,且必须是小写(可大写,也可小写)
D. 方法conjugate返回复数的共轭复数
20.在一次大选中候选人A和B进行竞选。候选人A的抽样支持率为60%,95%的置信区间为(50% - 70%),请问在最终大选中候选人A落选的概率与下列哪个最为接近? 2.5%
解释:这题有点绕;
A落选的情况为:支持率小于50%
而A有95%的概率支持率在50%-70%
所以:A的支持率小于50%和大于70%的概率为5%
因为左右两边置信概率相等,得出小于50%的概率为2.5%
21. 编译程序是一种 翻译程序
补充解释:
C/C++程序编译连接过程:
源文件→预处理→编译→汇编→链接→可执行文件
22. Assuming the filename for the code below is /usr/lib/python/person.py
and the program is run as: python /usr/lib/python/person.py
What gets printed?()
class Person:
def __init__(self):
pass
def getAge(self):
print (__name__)
p = Person()p.getAge()
__name__:name是一个变量,前后加了__ __标记为系统变量,__name__用于标识模块的名字的一个系统变量。
当我单独执行一个模块,我的这个系统变量的值为__main__
当我在模块2导入“这个模块”后,”这个模块”的__name__值为这个模块的名称:“这个模块”.
‘__main__’:是顶级代码执行的作用域的名称。
***
__name__,
如果是放在Modules模块中,就表示是模块的名字;
如果是放在Classs类中,就表示类的名字;
23. 有如下python代码:
foo = [1,2]
foo1 = foo
foo.append(3)
有如下结果: foo 值为[1,2,3] + foo1 值为[1,2,3]
24. Python中函数是对象,描述正确的是? ABCD
A.函数可以赋值给一个变量
B.函数可以作为元素添加到集合对象中
C.函数可以作为参数值传递给其它函数
D.函数可以当做函数的返回值
解释:在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。
25. 下列有关k-mean算法说法正确的是()AD
A. 不能自动识别类的个数,随机挑选初始点为中心点计算
B.数据数量不多时,输入的数据的顺序不同会导致结果不同(Kmeans优化目标函数的过程中,两步均是遍历所有的点,累加损失。 因此与数据的输入顺序无关。)
C.不能自动识别类的个数,不是随机挑选初始点为中心点计算 (错)
D.初始聚类中心的选择对聚类结果的影响很大
26. 解释型语言的特性有什么?
* 非独立性(JavaScript语言依赖执行环境,对于客户端来说是浏览器,对于服务端来说是node。)
* 低效率性(执行前不需要编译,执行时才编译,因此效率低。)
解释:
解释性语言和编译性语言的定义:
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的定义:
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
编译性语言的定义:
编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
27. 现在有M个桶,每桶都有N个乒乓球,乒乓球的颜色有K种,并且假设第i个桶第j种颜色的球个数为Cij, 比例为Rij=Cij/N,现在要评估哪个桶的乒乓球颜色纯度最高,下列哪种算法和描述是合理的? BCF (暂时没懂,有争议,欢迎留言!)
B. -∑Cij*LOG(Rij)越小越纯
C.∑(1-Rij*Rij)越小越纯
F.-∑Rij*LOG(Rij)越小越纯
1. 一个段代码定义如下,下列调用结果正确的是?
# 类似pow(multiple,n)的作用
def bar(multiple):
def foo(n):
return multiple ** n
return foo
结果: bar(2)(3) == 8
2. a与b定义如下,下列哪个是正确的?
a = '123'
b = '123'
一些补充解释:
1)
a,b为字符串不可变类型,所以指向相同地址,所以 a is b
is指地址相同
==内容相同
===内容和格式相同
a+b=‘123123’
2)
Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
is判断的是a对象是否就是b对象,是通过id来判断的
在这里,a,b为字符串不可变类型,所以指向相同地址,所以 a is b
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
3) 直接说a,b为字符串不可变类型,指向相同地址,所以 a is b 这种说法其实是不对的。这和小数据池有关。如果用python自带的解释器将a,b定义一个超出小数据池的元素例如a = 2777,b=2777,print(a is b) 即会返回False;用pycharm 会返回True这是pycharm本身给优化了。
3. Python不支持的数据类型有 char
支持的数据类型有: int, float, list, tuple, set, dict 等
补充解释:
python 中的标准数据类型:
其中数字类型有:
注意:
string 不是 char!!!!
可变数据类型(可改变变量的值,且不会新建对象 ):列表list[ ]、字典dict{ }
不可变数据类型(不允许变量的值发生改变,发生改变时会新建对象 ):整型int、字符串str' '、元组tuple()
4. 下列哪种类型是Python的映射类型? dict (字典是 Python 语言中唯一的映射类型。)
5. 以下关于协程理解有:(回忆:进程 —— 线程 —— 协程)
一个线程可以运行多个协程; 协程的调度由所在程序自身控制; Linux中线程的调度由操作系统控制
补充解释:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
线程由操作系统控制,协程由程序自身控制
6. 下述字符串格式化语法正确的是? 'GNU\'s Not %s %%' % 'UNIX'
补充解释:
python里面%d表数字,%s表示字符串,%%表示一个%;
单引号内嵌套单引号需要转义字符/;单引号内嵌套双引号不需要嵌套;
双引号内嵌套双引号需要转义字符/;双引号内引用单引号不需要转义字符;
7. (看走眼的一题!)
What gets printed?()
1 2 3 |
|
注意:该题答案是5,而非8. 后面追加的一个元素是一个list,则number
=
[
1
,
2
,
3
,
4
, [
5
,
6
,
7
,
8]]。如果采用
numbers += [5, 6, 7, 8] 那长度就应该是8.
8. 以下代码的结果:
x = 1
def change(a):
x += 1
print x
change(x)
报错:UnboundLocalError: local variable 'x' referenced before assignment
原因在于: change(a) 函数内的局部变量 x 在使用前未定义
正确的使用方式:
解法一:用 global 声明变量 x,使其成为全局变量
1 2 3 4 5 6 |
|
解法二:将函数内的 x 参数改为 a
1 2 3 4 5 |
|
9.
What gets printed?()
print (r"\nwoow")
解果:the text like exactly like this: \nwoow
解释: Python 中字符串的前导 r
代表原始字符串标识符,该字符串中的特殊符号不会被转义,适用于正则表达式中繁杂的特殊符号表示。
最典型的例子,如要输出字符串 \n
,由于反斜杠的转义,因此一般的输出语句为:
1 |
|
这里的 \\
将被转义为 \
。而采用原始字符串输出时,则不会对字符串进行转义:
1 |
|
10.下面代码结果:
counter = 1
def doLotsOfStuff():
global counter
for i in (1, 2, 3):
counter += 1
doLotsOfStuff()
print counter
结果:4 (注意在函数体内如何引用全局变量)。
11. 下面代码运行后,a、b、c、d四个变量的值,描述错误的是?
import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
a
Out[78]: [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b
Out[79]: [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c
Out[80]: [1, 2, 3, 4, ['a', 'b', 'c']]
d
Out[81]: [1, 2, 3, 4, ['a', 'b']]
解释:!!!!
b = a # 引用,除非直接给a重新赋值,否则a变则b变,b变则a变
c = copy.copy(a) # 浅复制,只会拷贝父对象, 不会拷贝父对象中的子对象,所以若a的子对象变则c 变,但是父对象变c不会变
d = copy.deepcopy(a) #深拷贝,完全拷贝,完全独立于原对象,a变b也不变
a.append(5) # 改变父对象
a[4].append('c') #改变父对象中的 ['a', 'b']子对象
a的存储情况:
首先我们看看看b的情况,b实际上和a指向的是同一个值,就好比人的大名和小名,只是叫法不同,但还是同一个人
接下来再看看c的情况,c的情况和a.copy()的情况是一样的,都是我们所谓的浅拷贝(浅复制),浅拷贝只会拷贝父对象,不会拷贝子对象,通俗的说就是只会拷贝到第二层
若父对象发生变化,c不会变化,因为它已经复制的所有父对象,假如子对象发生变化则c会变,比如c[4]和a[4]实际都是一个变量list,他们都指向子对象,若子对象发生变化,他们必然都变化,比如变成["a","d"],那它们指向的值也就变成了a、d。
再看看d的情况,这就是我们所说的深复制,不管a进行什么操作,都不会改变d了,他们已经指向不同的值(这里是指在内存中存储的位置不同了)。
总结:
b=a,只是换了一个名字,a怎么变b就怎么变,
c是浅复制,只复制了a的部分值,仍然共用某些值,所以在对a的子对象进行操作时会改变c
d是深复制,完全复制了a的所有值,已经完全与a无关,对a的任何操作都不会影响d
12. 以下代码的输出:
list1 = {'1':1,'2':2}
list2 = list1
list1['1'] = 5
sum = list1['1'] + list2['1']
print(sum)
结果:10 参考上题的 a=b的复制时,a怎么变b就怎么变
13.
请在如下列表中,求出其最大子段和:()7
14. 有一段python的编码程序如下:urllib.quote(line.decode("gbk").encode("utf-16")),请问经过该编码的字符串的解码顺序是( ) 结果:url解码 gbk utf16
解释:
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk
15. what gets printed? Assuming python version 2.x()
print type(1/2)
结果:Python2 中除法默认向下取整,因此 1/2 = 0,为整型。
16. 以下声明错误的是:D
A.dic = {}
B.dic = {100:200}
C.dic = {(1,2,3):'test'}
D.dic = {[1,2,3]:'test'}
解释;
字典本身是可变数据类型,字典的键记住两点:
唯一:同一个字典中的键必须唯一,如果出现多个相同的键,则最新的键会被记住;
不可变:键是不可变数据类型,使用可以是int,string,float,tuple
17.再次考__name__的使用:
其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:
1:__name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。
1. 如果模块是被导入,__name__的值为模块名字
2. 如果模块是被直接执行,__name__的值为’__main__’
18. (我是什么人,竟然忘记了0**0=1)
下列代码执行结果是?
[i**i for i in xrange(3)]
结果: [1,1,4]
解释:
1.xrange() 函数用法与 range 完全相同,
所不同的是生成的不是一个数组,而是一个生成器。
2.0的任何次方的值都为1
所以答案为:
0**0=1 , 1**1=1, 2**2=4
19. 以下哪个模型的系数矩阵不是全幺模矩阵(totally unimodular matrix)? ()D
A. 最短路问题
B.指派问题
C.最大流问题
D.最小生成树问题
解释全爸模矩阵:
如果是整数矩阵,而且A的所有非零r×r子式等于 1 或-1,则称A为幺模矩阵(unimodular matrix)。
如果A是幺模矩阵,而且还有其各阶子式均等于0,1或-1,则称A为全幺模矩阵(totally unimodular matrix)。
特别,当m=n时,整数矩阵A是幺模矩阵,如果或
显然:
(1) 全幺模矩阵的所有元素均为0,1或-1。
(2) 两个nxn的幺模矩阵之积仍是幺模矩阵;在矩阵乘法下,nxn的幺模矩阵全体构成一个群 [1] 。
20. 互为对偶的两个线性规划问题的解存在关系()B
A.原问题无可行解,对偶问题也无可行解
B.对偶问题有可行解,原问题可能无可行解
C.若最优解存在,则最优解相同
D.一个问题无可行解,则另一个问题具有无界解
21. 下列说法不正确的是()B
A.梯度下降法是利用当前位置的负梯度作为搜索方向的方法
B.批量梯度下降和随机梯度下降相比,一个优势是对于大规模样本效率很高
C.牛顿法和梯度下降法相比,一个劣势是求解复杂,一个优势是收敛速度加快
D.共轭梯度法仅需利用一阶导数的信息,但是收敛速度高于梯度下降法
解释:
批量梯度下降法在每次参数更新时同时迭代所有样本,优点是迭代次数少,并行计算,缺点是在样本规模大时训练缓慢;
随机梯度下降法在每次参数更新时迭代一个样本,优点时在样本规模大时训练快,缺点是迭代次数多,且容易收敛到局部最优解;
牛顿法是一种计算二阶梯度的算法,与梯度下降法相比,收敛速度更快,但计算复杂,每次参数更新都要计算Hession矩阵的逆;
22. 小王在经营健身器材店,其中A品牌羽毛球拍的年需求量为8,000。每个羽毛球拍每年的储存成本为2.50元,每次进货的固定成本为50元。若他每次卖完库存就去进货,他每次进货应该订购多少数量的A品牌的羽毛球拍(其它成本忽略不计)?()
283
23. 下列层次聚类算法中,哪些更适合处理大数据?(ABCD )
A.CURE算法
B.ROCK算法
C.Chameleon算法
D.BIRCH算法
1. 在Python 2.7中,下列哪种是Unicode编码的书写方式?C
A.a = ‘中文’
B.a = r‘中文’
C.a = u’中文’
D.a = b’中文’
解释:
- u/U: 表示unicode字符串
- r/R:非转义的原始字符串
- b:bytes
python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前缀代表的就是bytes
python2.x里, b前缀没什么具体意义
2. 关于Python内存管理,下列说法错误的是 B
A. 变量不必事先声明(Python 是弱类型脚本语言,变量就是变量,没有特定类型,因此不需要声明。 )
B.变量无须先创建和赋值而直接使用(使用前必须赋值,在赋值的同时变量也就创建了)
C.变量无须指定类型(Python中变量可以不指定类型,会自动根据赋值语句来决定类型 )
D.可以使用del释放资源(用 del 语句可以释放已创建的变量(已占用的资源)。 )
3. 关于字符串下列说法错误的是 B
A.字符应该视为长度为1的字符串
B.字符串以\0标志字符串的结束(C语言中字符串使用'\0'作为结束符以防止越界,但python中字符串其实是一个固定长度的字符数组,并不需要结束符)
C.既可以用单引号,也可以用双引号创建字符串
D. 在三引号字符串中可以包含换行回车等特殊字符
4.. 下列哪种不是Python元组的定义方式? (1)
在定义元组的时候,就曾提过,如果是一个单独的数字,则需要再后面加一个逗号,表明它是一个元组(1,)
5. 有如下类定义,下列描述错误的是?D
class A(object):
pass
class B(A):
pass
b = B()
A. isinstance(b, A) == True
B. isinstance(b, object) == True
C. issubclass(B, A) == True
D. issubclass(b, B) == True (b = B() #实例化,所以b是B 的实例,而不是子类)
解释:
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。实例( isinstance(object,classinfo),用于判断object是否是classinfo的一个实例,或者object是否是classinfo类的子类的一个实例,如果是返回True)
issubclass() 函数用于判断参数是否是类型参数的子类。子类
6. python my.py v1 v2 命令运行脚本,通过 from sys import argv如何获得v2的参数值? argv[2]
解释:sys.argv是传递给python脚本的命令行参数【字符串】列表 argv[0]为该脚本自身路径,其余为命令行参数
sys.argv是命令参数表,包括文件名
argv[
0
]: 【path】
/
my.py
argv[
1
]: v1
argv[
2
]: v2
7. 下面代码的输出:TRUE
str = "Hello,Python";
suffix = "Python";
print (str.endswith(suffix,2));
解释:
str.endswith(suffix[, start[, end]]) 用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
可选参数
"start"
与
"end"
为检索字符串的开始与结束位置。
8. EM算法(Exception Maximization Algorithm)是机器学习领域的一个经典算法,下面关于EM算法的表述中不正确的有( )A
A.EM算法属于一种分类算法
B.如果优化的目标函数是凸函数,那么EM算法一定能找到全局最优解
C.EM算法可以分为E-Step和M-Step两步
D.EM算法可用于从不完整的数据中计算最大似然估计
9. 以下输出的结果是:4
a = 1
try:
a += 1
expect:
a += 1
else:
a += 1
finally:
a += 1
print a
解释:
程序异常执行
except
程序正常执行
try
和
else
无论程序正常执行还是出现异常都执行
finally
10. 从运行层面上来看,从四个选项选出不同的一个。B
A.JAVA
B.python
C.ObjectC
D.C#
解释:
A,C,D都是类C语言,B不是
Python是解释执行的,其他语言都需要先编译
11. python3中函数定义时形参的出现顺序:Python3参数顺序:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。