1、IT面试笔试题全集史上最全_Python篇_Rain系列Python如何实现单例模式?一追雨制作Python有两种方式可以实现单例模式,下面两个例子使用了不同的 方式实现单例模式:1.class Singleton(type):def _init_(cis,name,bases,diet):super(Singleton,cis)._init_(name,bases,diet)cis.instance=Nonedef _call_(cis,*args,*kw):if cis.instance is None:cis.instance=super(Singleton,cis)._call_(*a
2、rgs,*kw)return cis.instanceclass MyClass(object):_meta class_=Singletonprint MyClass()print MyClassQ2.使用decorator来实现单例模式def singleton(cls):instances=def getinstance():if cis not in instances:instancescls=cls()return instancesclsreturn getinstancesingleton class MyClass:#8230;什么是lambda函数?一追雨制作Python允
3、许你定义一种单行的小函数。定义lambda函数的形式如 下:labmda参数:表达式lambda函数默认返回表达式的值。你也可以将其赋值给 一个变量。lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一 个:g=lambda x,y:x*y g(3,4)12 g=lambda x,y=0,z=0:x+y+z g(D1g(3,4,7)14也能够直接使用lambda函数,不把它赋值给变量:(lambda x,y=0,z=0:x+y+z)(3,5,6)14如果你的函数非常简单,只有一个表达式,不包含命令,可以考虑lambda函数。否则,你还是定义函数才对,毕竟函数没有这么多限制。Pyt
4、hon是如何进行类型转换的?一追雨制作Python提供了将变量或值从种类型转换成另种类型的内置函 数。int函数能够将符合数学格式数字型字符串转换成整数。否则,返回错误信 int(34#8243;)34 int(1234ab)#不能转换成整数ValueError:invalid literal for int():1234ab函数int也能够把浮点数转换成整数,但浮点数的小数部分被截去。int(34.1234)34 int(-2.46)-2函数。oat将整数和字符串转换成浮点数:float(12#8243;)12.0 float(1.111111#8243;)1.111111函数s将数字转换成
5、字符:s(98)#8216;98#8242;s(76.765#8243;)#8216;76.765#8242;整数1和浮点数1.0在python中是不同的。虽然它们的值相等的,但却属于不同的 类型。这两个数在计算机的存储形式也是不一样。Python如何定义一个函数 一追雨制作函数的定义形式如下:def(argl,arg2,#8230;argN):函数的名字也必须以字母开头,可以包括下划线但不能把Python的 关键字定义成函数的名字。函数内的语句数量是任意的,每个语句至少有 一个空格的缩进,以表示此语句属于这个函数的。缩进结束的地方,函数 自然结束。下面定义了一个两个数相加的函数:def ad
6、d(pl,p2):print pl,#8220;+,p2,#8220;=,pl+p2add(l,2)1+2=3函数的目的是把一些复杂的操作隐藏,来简化程序的结构,使其容易 阅读。函数在调用前,必须先定义。也可以在一个函数内部定义函数,内部函数只有在外部函数调用时才能够被执行。程序调用函数时,转到函数 内部执行函数内部的语句,函数执行完毕后,返回到它离开程序的地方,执行程序的下一条语句。Python面试题:Python是如何进行内存管理的?一追雨制作 一Python的内存管理是由Python得解释器负责的,开发人员可以从内 存管理事务中解放出来,致力于应用程序的开发,这样就使得开发的程序错误更
7、少,程序更健壮,开发周期更短。如何反序的迭代一个序列?how do I iterate over a sequence in reverse order一追雨制作如果是一个list,最快的解决方案是:list.reverse()y:for x in list:#8220;do something with xfinally:list.reverse()如果不是list,最通用但是稍慢的解决方案是:for i in range(len(sequence)-l,-1,-1):x=sequenceiPython里面如何实现tuple和list的转换?追雨制作函数tuple(seq)可以把所有可迭代的
8、(iterable)序列转换成一个tuple,元素不变,排序也不变。例如,tuple(l,2,3)返回(1,2,3),tuple(#8217;abc#8217;)返回(#8217;a#8217;.#8217;b,#8217;c)如果参数已经是一个tuple的话,函数不做任何拷贝而直接返回原来的对 象,所以在不确定对象是不是tuple的时候来调用tuple。函数也不是很耗费的。函数list(seq)可以把所有的序列和可迭代的对象转换成一个list,元素不变,排序也 不变。例如 list(l,2,3)返回(1,2,3),list(#8217;abc#8217;)返回H,b,功。如果参数是一个lis
9、t,她会像set一样做一个拷贝Python面试题:请写出一段Python代码实现删除一个list里面的重复 元素 一追雨制作可以先把list重新排序,然后从list的最后开始扫描,代码如下:if List:List.sort()last=List-1for i in range(len(List)-2,-1,-1):if last=Listi:del Listielse:last=ListiPython文件操作的面试题一追雨制作1.如何用Python删除一个文件?使用 os.remove(filename)或者 os.unlink(filename);2.Python如何copy 一个文件?s
10、hutil模块有一个copyfile函数可以实现文件拷贝Python面试题:Python里面如何生成随机数?一追雨制作标准库random实现了一个随机数生成器,实例代码如下:import randomrandom.random()它会返回一个随机的0和1之间的浮点数Python面试题:如何用Python来发送邮件?一追雨制作可以使用smtplib标准库。以下代码可以在支持SMTP监听器的服务器上执行。import sys,smtplibfromaddr=raw_input(From:#8220;)toaddrs=raw_input(To:#8220;).split(#8217;;)print#
11、8220;Enter message,end with AD:msg=while 1:line=sys.sin.readline()if not line:breakmsg=msg+line#发送邮件部分server=smtplib.SMTP(#8217;localhost#8217;)server.sendmail(fromaddr,toaddrs,msg)server.quit()Python里面如何拷贝一个对象?一追雨制作一般来说可以使用copy.copy()方法或者copy.deepcopy。方法,几乎 所有的对象都可以被拷贝一些对象可以更容易的拷贝,Dictionaries有一个co
12、py方法:newdict=olddict.copy()Python的两道面试题一追雨制作1.有没有一个工具可以帮助查找python的bug和进行静态的代码分 析?有,PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码 的bug,会对代码的复杂度和格式提出警告Pylint是另外一个工具可以进行coding standard检查。2.如何在一个function里面设置一个全局的变量?解决方法是在function的开始插入一个global声明:deff()global x华为python面试题一追雨制作有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要
13、求:通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最 小。有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;要求:通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最 小。1.将两序列合并为一个序列,并排序,为序列Source2.拿出最大元素Big,次大的元素Small3.在余下的序列S1-2进行平分,得到序列max,min4.将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为 max,小的为min。Python代码def mean(sorted_list):if not sorted list:return(,)big=s
14、orted_list-lsmall=sorted_list-2big_list,small_list=mean(sorted_list:-2)big_list.append(small)small_list.append(big)big_list_sum=sum(big_list)small_list_sum=sum(smalllist)if big list sum small list sum:return(big list,small_list)else:return(small list,big_list)tests=1,2,3,4,5,6,700,800,10001,10000,10
15、0,90,50,1,range(l,11),12312,12311,232,210,30,29,3,2,1,1 for 1 in tests:l.sort()printprint#8220;Source List:t,111,12=mean(l)print#8220;Result List:t,11,12print#8220;Distance:t,abs(sum(l 1)-sum(12)print#8216;-*#8217;*40输出结果Python代码Source List:1,2,3,4,5,6,700,800Result List:1,4,5,800 2,3,6,700Distance:
16、99Source List:1,1,2,3,29,30,210,232,12311,12312Source List:1,50,90,100,10000,10001Result List:50,90,10000 1,100,10001Distance:38*Source List:1,2,3,4,5,6,7,8,9,10Result List:2,3,6,7,10 1,4,5,8,9Distance:1*Result List:1,3,29,232,12311 1,2,30,210,12312Distance:21用Python匹配HTML tag的时候,.*和.*?有什么区另U?追雨制作当重
17、复匹配一个正则表达式时候,例如,当程序执行匹配的时候,会返回最大的匹配值 例如:import res=#8216;#8217;print(re.match(#8217;#8217;,s).group()会返回一个匹配而import re#8216;#8217;print(re.match(#8217;#8217;,s).group()则会返回.*这种匹配称作贪心匹配称作非贪心匹配Python 里面 search。和 match。的区别?一追雨制作match()函数只检测RE是不是在sing的开始位置匹配,search()会扫描整个sing查找匹配,也就是说match()只有在0位置匹配成功的话
18、才有返 回,如果不是开始位置匹配成功的话,match。就返回none 例如:print(re.match(#8217;super#8217;,#8217;superstition#8217;).span()会返回(0,5)而 print(re.match(#8217;super#8217;,#8216;insuperable#8217;)则返回 Nonesearch。会扫描整个字符串并返回第一个成功的匹配例如:(.(#8217;super#8217;#8217;superstition#8217;。)返回(0,5)(.(#8217;super#8217;#8216;insuperable#82
19、17;.()返回(2,7)如何用Python来进行查询和替换一个文本字符串?一追雨制作可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement,sing,count=0)replacement是被替换成的文本sing是需要被替换的文本count是个可选参数,指最大被替换的数量例子:import re p=pile(#8217;(blue|white|red)#8217;)print(p.sub(#8217;colour#8217;,blue socks and red shoes#8217;)print(p.sub(#8217;colour#8217;,blu
20、e socks and red shoes#8217;,count=l)输出:colour socks and colour shoescolour socks and red shoessubn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新 的字符串和总共替换的数量例如:import rep=pile(#8217;(blue|white|red)#8217;)print(p.subn(#8217;colour#8217;,blue socks and red shoes#8217;)print(p.subn(#8217;colour#8217;,blue soc
21、ks and red shoes#8217;,count=1)输出(#8217;colour socks and colour shoes#8217;,2)#8217;colour socks and red shoes#8217;,1)介绍一下except的用法和作用?追雨制作Python的except用来捕获所有异常,因为Python里面的每次错误 都会抛出一个异常,所以每个程序的错误都被当作一个运行时错误。一下是使用except的一个例子:y:foo=opne(file)#open被错写为opneexcept:sys.exit(could not open file!)因为这个错误是由于
22、open被拼写成opne而造成的,然后被except捕获,所以 debug程序的时候很容易不知道出了什么问题下面这个例子更好点:y:foo=opne(file)#这时候except只捕获lOErrorexcept lOError:sys.exit(could not open file)Python中如何定义一个函数?一追雨制作定义函数的格式是:def functionName(arg):例如:定义一个输出Fibonacci序列的函数def fibonacci(n):a,b=0,1while b n:print(b,end=#8217;#8216;)a,b=b,a+b print()fibon
23、acci(lOO)Python中pass语句的作用是什么?一追雨制作pass语句什么也不做,一般作为占位符或者创建占位程序,pass语 句不会执行任何操作,比如:while False:passpass通常用来创建一个最简单的类:class MyEmptyClass:passpass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如:def initlog(*args):pass#please implement this介绍一下Python下range。函数的用法?一追雨制作如果需要迭代一个数字序列的话,可以使用range。函数,range。函 数可以生成等差级数。如例:for
24、i in range(5)print(i)这段代码将输出0,1,2,3,4五个数字range(lO)会产生10个值,也可以让range。从另外一个数字开始,或者定义一个不 同的增量,甚至是负数增量)从5到9的五个数字range(0,10,3)增量为三,包括0,3,6,9四个数字range(-10,-100,-30)增量为-30,包括-10,-40,-70可以一起使用range。和len()来迭代一个索引序列例如:a=Nina,Jim*,Rainman*,Hellofor i in range(len(a):print(i,ai)用Python写一个for循环的例子一追雨制作Python的for
25、循环可以循环所有序列(一个list或者sing),如:a=abc,bcde,efghi,hello word for i in a:print(i)print(len(i)代码箱Python3.0下调试通过请用Python写一个获取用户输入数字,并根据数字大小输出不同信 息的脚本一追雨制作代码如下(Python 3.0下调试通过)x=int(input(Please enter an integer:)一if x0:x=0print(#8217;Negative changed to zero#82175)elif x=0:print(#8217;Zero#8217;)elif x=1:pri
26、nt(#8217;Single#8217;)else:print(#8217;More#8217;)如何用Python输出一个Fibonacci数列?追雨制作代码如下:a,b=0,1while b100:print(b),a,b=b,a+b介绍一下Python中webbrowser的用法?一追雨制作webbrowser模块提供了一个高级接口来显示基于Web的文档,大部 分情况下只需要简单的调用open。方法。webbrowser定义了如下的异常:exception webbrowser.Error,当浏览器控件发生错误是会抛出这个异常webbrowser有以下方法:webbrowser.(ur
27、l这个方法是在默认的浏览器中显示url,如果new=0,那么url会在同一个浏览器窗 口下打开,如果new=1,会打开一个新的窗口,如果new=2,会打开一个新的tab,如果autoraise=ue,窗口会自动增长。webbrowser.open_new(url)在默认浏览器中打开一个新的窗口来显示url,否则,在仅有的浏览器窗口中打开urlwebbrowser.open_new_tab(url)在默认浏览器中当开一个新的tab来显示url,否则跟open_new()一样webbrowser.get(name)根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器webbrowser.register(name,consutor,instance)注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来 获取。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100