从渠道内获得了一批python面试题,作为python学习的新手,拿来学习一下。顺便如果可能希望看到大家的更好的方法。
题目:
1、你想计算所有素数的一个无界的序列,或者小于某个阈值的所有素数的列表(可分别实现)。
ps:素数又称为质数,指在大于1和此数自身外,不能被其他任何自然数整除的数。
解答代码如下:
import math
def pd(n):
‘’‘个人比较搓,命名方式不太妥当,各位请勿见笑,
cs为除数,wq即无穷'''
for cs in xrange(2,int(math.sqrt(n)+1)):
if n % cs == 0:
return False
return True
def out(length="wq"):
if length == 'wq':
input_num = 3
while True:
if pd(input_num):
print input_num,
input_num += 1
else:
try:
length = int(length)
except ValueError,e:
print "you will input a num"
for key in xrange(2,length+1):
if pd(key):
print key,
out(100)
2:需要一个函数,它能执行一条shell命令,并实时显示命令的输出,如果能需要从web页面执行这条shell命令,设计一个方案,让web页面能够实时的得到命令的输出。
解答:个人比较撮,不会写页面,这里埋个坑,以后会写了补上,各位看官,如果会搞或者思路希望不吝赐教。只写了实时获取命令的输出
import subprocess
#本人采用了进程间通讯的方法进行输出采集
shell = raw_input("please input a shell:\t")
#采集用户输入的shell
shell_list = []
for i in shell.split():
shell_list.append(i)
popen = subprocess.Popen(shell_list,stdout=subprocess.PIPE)
while True:
line = popen.stdout.readline()
if line:
print line,
else:
break
3:有一个日志文件,内容片段如下,编写一个函数,统计该文件FNF,FNH,BRF,BRH,LF,LH六个字段各自的和。
...
FNF:1
FNH:1
BRDA:11,0,0,0
BRDA:11,0,1,1
BRF:4
BRDA:8,2,1,1
BRH:3
LF:26
LH:23
...
注:需要统计的字段冒号后只会出现一个整数。
解答思路:我的思路是用re库过先过滤包含了","的行,然后依照“:”对数列进行切割,然后将其追加到字典内。
import re
#打开文件
fo = open(filename)
regex = re.compile(r"(FNF)|(FNH)|(BRF)|(BRH)|(LF)|(LH)")
result = {}
while True:
'''如果该行不含有,号,则进一步判断是否符合预期内的内容,如果符合,则追加到字典中去'''
line =fo.readline()
if not line:
#读到最后一行跳出
break
else:
if not re.search(r",",line):
line_split = line.split(":")
if regex.search(line_split[0]):
result[line_split[0]] = result.get(line_split[0],0) + line_split[1]
#输出最终结果
for k in result:
print k,result[k]
4:需要一个函数,他能生成fibonacci数列的整个序列(无限个);使用这个函数取出fobonacci数列的前10项。注:fibonacci数列是这样的一个数列:1、1、2、3、5、8、13、21、34
#!/bin/env python # -*- encoding:utf-8 -*- fibonacci = [1,1] def produce_fibonacci(x): global fibonacci try: x = int(x) except ValueError,e: print "you will input a num" exit() if not x >= 3: print "you should input a num large then 3" else: for i in xrange(2,x): key = fibonacci[i-2] + fibonacci[i-1] fibonacci.append(key) print fibonacci if __name__ == "__main__": x = raw_input("input a num you want fibonacci:\t") produce_fibonacci(x)
5: 题目:展开一个嵌套的原始序列,序列中的子项可能是序列,子序列的子项仍然可能是序列。
例如:[1,2,[3,[],4,[5,6],7,[8,]],9]
#!/usr/bin/env python '''输出序列的展开''' result = [] def zk_xl(x): if type(x) is list: for k in x: if type(k) is list: zk_xl(k) else: result.append(k) zk_xl([1,[2,],3,[4,5],6,7]) print result
就是这些了,有些题目设计django架构的东西,由于自己现在还没接触过,也没办法测试。就丢上来献丑了。