面试题目整理

1.编写代码实现func函数,使其实现一下效果:(9s)

foo=func(8)

print(foo(8))   #输出64

print(foo(-1))  #输出-8

 

思路:实现一个闭包,内层函数调用外层函数

方法一:

缺点:变量名相同,容易混淆,单词不要写错了.

def fun(i):
  def func(a):
    return a*i
  return func
foo=fun(8)
print(foo(8))
print(foo(-1))

方法二:

def outer(arg1):
  def inner(arg2):
    return arg1*arg2
  return inner
foo=outer(8)
print(foo(8))
print(foo(-1))

方法三:(匿名函数)

def fun(arg1):
  return lambda x:x*arg1
foo=fun(8)
print(foo(8))
print(foo(-1))

   平时要多刷一些技术文章和blog.

  必须更努力学习,多学习,多写.

  社会是现实的!!!

2.课后思考:用两个栈实现消息队列的功能?(对比汉诺塔)(面试题)

https://blog.csdn.net/cherrydreamsover/article/details/80466781 

用两个队列实现栈(互导)

 

1.os和sys都是干什么的?

os模块是与操作系统相关的

os.path  //与路径相关的

(1)拼接路径  win:\  unix:/  a\b  a/b

os.path.join("a","b")  //Django

(2)获取当前操作系统的路径分隔符

方法一:  os.path.seq  //可以打印出来

方法二:  os.seq  

比如:print(os.path.seq)

(3).判断文件是否存在

os.path.exists("文件的路径")

(4)获取文件大小

os.path.getsize("文件路径")

(5)创建文件

os.mkdir("文件路径")

(6)获取文件的绝对路径  //Django

ret=os.path.abspath(__file__)

print(ret)          //绝对路径

print(os.path.dirname(ret))  //绝对路径的上一级父目录

 

sys是和python解释器相关的

(1)sys.path  //获取当前解释器

import sys
print(sys.path) #sys.path是python的搜索模块的路径集,是一个list

(2)

sys.modules  #获取python解释器加载的所有模块

sys.argv    #获取脚本运行时的参数

sys.exit()

2.你工作中都用过哪些内置模块

time/re/json/hashlib/random/socket/collection/functools

 

3.你有没有用过functools模块?

(1)偏函数:partial(包装一层,制定一个默认参数,包装成另外一个参数)

  bin()  //将十进制转换成二进制

  print(bin(10))  //0b1010

  print(oct(10)  //0o12

def ooss(arg1,arg2):

  return arg1/arg2

ret=ooss(10,5)

print(ret)  //2.0

偏函数的用法;(参考廖雪峰的教程)

 

print(int('1000',base=2))   #8
print(int('100',base=2))    #4

from functools import partial
int2=partial(int,base=2)
print(int2('10000'))     #16

(2)reduce,wraps

 

(3)namedtuple,命名元组

from collections import namedtuple

用法:orderDict:有序字典.

要学会自己拓宽自己的知识面.

回头再研究collections和functools.

 

1.

"""
问:1234能组成多少个不重复不相同的三位数?
"""

# from collections import deque
# from functools import reduce, partial
from itertools import permutations, chain  # 排列s  Python Cook Book

ret = permutations('1234', 3)
print(list(ret))


list1 = [11, 22, 33]
list2 = ['aa', 'bb', 'cc']

for i in chain(list1, list2):
    print(i)

 

"""
问:1234能组成多少个不重复不相同的三位数?
"""

# from collections import deque
# from functools import reduce, partial
from itertools import permutations, chain # 排列s Python Cook Book

ret = permutations('1234', 3)
print(list(ret))


list1 = [11, 22, 33]
list2 = ['aa', 'bb', 'cc']

for i in chain(list1, list2):
print(i)


 

 

 


posted @ 2019-02-15 10:50  studybrother  阅读(197)  评论(0编辑  收藏  举报