复习day1

1.简述列举了解的编程语言及语言间的区别?

解释型语言  python  一行一行的运行
编译型语言 先编译在运行 c c++ go
混合型语言 java

 

2.列举python2和python3的区别?

python2:
print '1'
range 返回的是一个列表
编码是assic码
有新式类 也有经典类
input的写法是
python3:
print('1')
rannge返回的是一个可迭代对象
编码是utf-8
只有新式类
input

3.看代码写结果

顺序:() > not > and > or
布尔值为假的十种情况:0,0.0,0j,None,'',[],(),{},flase,集合{}

v1 = 1 or 2
v2 = 3 and 7 or 9 and 0

1:1  
2:7

4.比较以下值有什么不同?

v1 = [1,2,3]
v2 = [(1),(2),(3)]
v3 = [(1,),(2,),(3,)]

1.列表里面放了三个数字
2.列表里面放了三个数字用括号包起来了
3.列表里面放了三个元组,每个元组里的元素分别是1,2,3,

 

5.用一行代码实现数值交换。

a,b=b,a

通用写法
t = a
a = b
b = t

6.Python中的单引号 双引号 三引号的区别?

单引号和双引号都可以用来表示一个字符串,嵌套是里外的引号不能相同,三引号可以用来多行注释

7.is和==的区别?

is是用来判断内存地址是否相同,
==用来判断两边的值是否相同

8.python中如何实现tuple和list的转化?

tuple转list >>>  tu = (1,2,3,4)  print(list(tu))
list转tuple >>> ls = (1,2,3,4) print(tuple(ls))

9.如何实现字符串 name='老男孩的反转'

ls = name.split('')
1.
ls = name.split('')
ls.reverse()
name=''.join(ls)
2.
ls[-1::-1]
''.join(ls)
3.name[::-1]

10.两个set如何获取交集,并集,差集?

交集:s1 & s2
并集:s1 | s2
差集:s1 - s2

11.那些情况下,y!= x -(x-y)会成立?

非空集合且不为父子关系的两个集合

12.python中如何拷贝一个对象?

浅拷贝 
a = [1,2,3]
b = a.copy
深拷贝
import copy
a = [1,2,3,4,5,[6,7]]
b = copy.deepcopy(a)

13.简述赋值 浅拷贝 深拷贝的区别?

赋值是将同一个内存地址指向不同的变量
浅拷贝是只拷贝第一层元素的内存地址,修改第一层不可变元素的时候源数据不受影响,
给可变元素进行添加的时候源数据受影响
深拷贝是不可变元素内存地址共用,可变元素另开辟空间

14.pass的作用?

占位

15.阅读代码写结果。

import copy
a = [1,2,4,5,['b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)

a.append(5)
a[4].append('d')

print(b) [1,2,4,5,['b','c','d'],5]
print(c) [1,2,4,5,['b','c','d']]
print(a) [1,2,4,5,['b','c','d'],5]
print(d) [1,2,4,5,['b','c']]

16.用python实现9*9乘法表

for i in range(10):
  for em in range(1,i+1):
  print('%d*%d=%2d' % (i,j,i*j),end='')
  print()

17.用python显示一个斐波那契数列。

方法一:
a=0
b=1
while b<1000:
print(b,end=',')
a,b = b,a+b
方法二:
def func(n):
if n==1 or n==2:
return 1
else:
return func(n-1) + func(n-2)

res = func(20)
print(res)

方法三:
ls = [1,1]
for i in range(20):
ls.append(ls[-1,-2])
print(ls)

18.如何删除列表中重复的值?

将列表转化为集合,然后在转化为列表

19.一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

f = open('etl_log.txt','r',encoding='utf-8')
for i in f:
print(i)

20.a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

字典

21.lambda关键字的作用?

定义匿名函数  lambda 参数:返回值

22.*arg**kwarg作用?

*arg用来接收多余的普通参数
**kwarg 用来接收多余的关键字参数

23.如何在函数中设置一个全局变量 ?

使用global

24.filter、map、reduce的作用?

filter是过滤 
map映射将可迭代对象中的每个元素执行指定的函数  
reduce是计算数据

25.什么是匿名函数?匿名函数有什么作用?

匿名函数是用一句话表达只有返回值的无名函数
匿名函数一般和高阶函数配合使用

26.Python递归的最大层数?

理论上递归的最大深度是1000层 实际中一般是994-1000

27.什么是迭代器?什么是可迭代对象?

具有iter()和next()方法的是迭代器
具有iter()方法的是可迭代对象

28.什么是生成器?

本质是一个迭代器
可以自定义迭代的逻辑
创建方式:生成器表达式:(i for i in range(10))
        生成器函数:含有yield关键字

 

29.什么是装饰器及应用场景?

装饰器就是在不改变源代码及调用方式的情况下给函数添加新的功能
应用:登录认证,property类,各种框架
闭包就是在函数嵌套内,内层函数调用外层函数的变量,外层函数将内层函数返回出去的过程就是闭包

 

30.什么是反射及应用场景?

通过字符串去操作对象或者模块中的属性方法
hasattr getattr setattr delattr

 

31.写一个普通的装饰器。

def warpper(f):
def inner(*args,**kwargs):
print('执行前')
ret = f()
print('执行后')
return ret
return inner
@warpper
def func():
print(111)
func()

 

32.写一个带参数的装饰器。

def auth(x):
def warpper(func):
def inner(*args,**kwargs):
if x:
print(11)
func*args,**kwargs
else:
print(222)
func(*args,**kwargs)
return inner
return warpper

@auth(Ture)
def ppp(*args,**kwsrgs):
print(222)

ppp()

33.求结果

def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
[6,6,6,6]

34.def(a, b=[])这种写法有什么陷阱?

默认参数:如果调用时,用户给了实参,就用用户的
如果调用时,用户没给实参,那么使用默认的(早已经存在在内存中的这个列表)

35.看代码写结果

def func(a,b=[]):
  b.append(a)
return b

v1 = func(1)
v2 = func(2,[10,20])
v3 = func(3)
print(v1,v2,v3)

[1,3],[10,20,2],[1,3]

36.看代码写结果

def func(a,b=[]):
  b.append(a)
return b

v1 = func(1)
print(v1)               [1]
v2 = func(2,[10,20])    
print(v2)               [10,20,2]
v3 = func(3)
print(v3)               [1,3]

37.请编写一个函数实现将IP地址转换成一个整数。

如 10.3.9.12 转换规则为:
      10           00001010
        3           00000011
        9           00001001
      12           00001100
       
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
b_num = ''
ip = '10.3.9.12'
for i in ip.split('.'):
b_str = str(bin(int(i)))[2:]
b_num += b_str.rjust(8,'0')
print(int(b_num,2))

 

38.请查找一个目录下的所有文件(可能存在文件嵌套)。

39.求结果

import math
print (math.floor(5.5))

40.是否使用过functools中的函数?其作用是什么?

41.用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

<.> 匹配一次  <.?匹配多次>

43.如何生成一个随机数?

使用random模块  
import random
print(random.randint(1,50))

44.super的作用?

super按照指定的参数执行父类的方法

45.双下划线和单下划线的区别?

 

46.@staticmethod和@classmethod的区别?

静态方法不依赖于对象和类
类方法可以自动变换类名
使用类方法可以获取到类地址进行实例化
可以通过类名修改类属性

 

47.实现一个单例模式(加锁)。

import threading
import time
class Singleton:
  instance = None
  lock = threading.RLock()
   
  def __init__(self,name):
      self.name = name
       
  def __new__(cls,*args,**kwargs):
       
      if cls.instance:
      return cls.instance
      with cls.lock:
          if cls.instance:
      return cls.instance
          cls.instance = object.__new__(cls)
          return cls.instance

def task():
  obj =Singleton("宗介")
  print(obj)
   
for i in range(10):
  t = threading.Thread(target=task)
  t.start()

 

48.栈和队列的区别?

栈先进先出 队列先进后出

 

49.以下代码输出是什么? 请给出答案并解释。

class Parent(object):
  x = 1

class Child1(Parent):
  pass

class Child2(Parent):
  pass

print Parent.x, Child1.x, Child2.x
111

Child1.x = 2
print Parent.x, Child1.x, Child2.x
1,2,1

Parent.x = 3
print Parent.x, Child1.x, Child2.x
3,3,3

50.参考下面代码片段

class Context:
  pass

with Content() as ctx:
  ctx.do_something()
请在Context类下添加代码完成该类的实现

第二部分 可选题

  1. 如何获取列表中第二大的值?

  2. 简述Python内存管理机制。

  3. 简述Python的垃圾回收机制。

  4. 请用两个队列来实现一个栈。

  5. 请用Python实现一个链表。

  6. 请用Python实现链表的逆转。

  7.  

 

 

 

 

 

 

 

1.简述列举了解的编程语言及语言间的区别?

解释型语言  python  一行一行的运行
编译型语言 先编译在运行 c c++ go
混合型语言 java

 

2.列举python2和python3的区别?

python2:
print '1'
range 返回的是一个列表
编码是assic码
有新式类 也有经典类
input的写法是
python3:
print('1')
rannge返回的是一个可迭代对象
编码是utf-8
只有新式类
input

3.看代码写结果

顺序:() > not > and > or
布尔值为假的十种情况:0,0.0,0j,None,'',[],(),{},flase,集合{}

v1 = 1 or 2
v2 = 3 and 7 or 9 and 0

1:1  
2:7

4.比较以下值有什么不同?

v1 = [1,2,3]
v2 = [(1),(2),(3)]
v3 = [(1,),(2,),(3,)]

1.列表里面放了三个数字
2.列表里面放了三个数字用括号包起来了
3.列表里面放了三个元组,每个元组里的元素分别是1,2,3,

 

5.用一行代码实现数值交换。

a,b=b,a

通用写法
t = a
a = b
b = t

6.Python中的单引号 双引号 三引号的区别?

单引号和双引号都可以用来表示一个字符串,嵌套是里外的引号不能相同,三引号可以用来多行注释

7.is和==的区别?

is是用来判断内存地址是否相同,
==用来判断两边的值是否相同

8.python中如何实现tuple和list的转化?

tuple转list >>>  tu = (1,2,3,4)  print(list(tu))
list转tuple >>> ls = (1,2,3,4) print(tuple(ls))

9.如何实现字符串 name='老男孩的反转'

ls = name.split('')
1.
ls = name.split('')
ls.reverse()
name=''.join(ls)
2.
ls[-1::-1]
''.join(ls)
3.name[::-1]

10.两个set如何获取交集,并集,差集?

交集:s1 & s2
并集:s1 | s2
差集:s1 - s2

11.那些情况下,y!= x -(x-y)会成立?

非空集合且不为父子关系的两个集合

12.python中如何拷贝一个对象?

浅拷贝 
a = [1,2,3]
b = a.copy
深拷贝
import copy
a = [1,2,3,4,5,[6,7]]
b = copy.deepcopy(a)

13.简述赋值 浅拷贝 深拷贝的区别?

赋值是将同一个内存地址指向不同的变量
浅拷贝是只拷贝第一层元素的内存地址,修改第一层不可变元素的时候源数据不受影响,
给可变元素进行添加的时候源数据受影响
深拷贝是不可变元素内存地址共用,可变元素另开辟空间

14.pass的作用?

占位

15.阅读代码写结果。

import copy
a = [1,2,4,5,['b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)

a.append(5)
a[4].append('d')

print(b) [1,2,4,5,['b','c','d'],5]
print(c) [1,2,4,5,['b','c','d']]
print(a) [1,2,4,5,['b','c','d'],5]
print(d) [1,2,4,5,['b','c']]

16.用python实现9*9乘法表

for i in range(10):
  for em in range(1,i+1):
  print('%d*%d=%2d' % (i,j,i*j),end='')
  print()

17.用python显示一个斐波那契数列。

方法一:
a=0
b=1
while b<1000:
print(b,end=',')
a,b = b,a+b
方法二:
def func(n):
if n==1 or n==2:
return 1
else:
return func(n-1) + func(n-2)

res = func(20)
print(res)

方法三:
ls = [1,1]
for i in range(20):
ls.append(ls[-1,-2])
print(ls)

18.如何删除列表中重复的值?

将列表转化为集合,然后在转化为列表

19.一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

f = open('etl_log.txt','r',encoding='utf-8')
for i in f:
print(i)

20.a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

字典

21.lambda关键字的作用?

定义匿名函数  lambda 参数:返回值

22.*arg**kwarg作用?

*arg用来接收多余的普通参数
**kwarg 用来接收多余的关键字参数

23.如何在函数中设置一个全局变量 ?

使用global

24.filter、map、reduce的作用?

filter是过滤 
map映射将可迭代对象中的每个元素执行指定的函数  
reduce是计算数据

25.什么是匿名函数?匿名函数有什么作用?

匿名函数是用一句话表达只有返回值的无名函数
匿名函数一般和高阶函数配合使用

26.Python递归的最大层数?

理论上递归的最大深度是1000层 实际中一般是994-1000

27.什么是迭代器?什么是可迭代对象?

具有iter()和next()方法的是迭代器
具有iter()方法的是可迭代对象

28.什么是生成器?

本质是一个迭代器
可以自定义迭代的逻辑
创建方式:生成器表达式:(i for i in range(10))
        生成器函数:含有yield关键字

 

29.什么是装饰器及应用场景?

装饰器就是在不改变源代码及调用方式的情况下给函数添加新的功能
应用:登录认证,property类,各种框架
闭包就是在函数嵌套内,内层函数调用外层函数的变量,外层函数将内层函数返回出去的过程就是闭包

 

30.什么是反射及应用场景?

通过字符串去操作对象或者模块中的属性方法
hasattr getattr setattr delattr

 

31.写一个普通的装饰器。

def warpper(f):
def inner(*args,**kwargs):
print('执行前')
ret = f()
print('执行后')
return ret
return inner
@warpper
def func():
print(111)
func()

 

32.写一个带参数的装饰器。

def auth(x):
def warpper(func):
def inner(*args,**kwargs):
if x:
print(11)
func*args,**kwargs
else:
print(222)
func(*args,**kwargs)
return inner
return warpper

@auth(Ture)
def ppp(*args,**kwsrgs):
print(222)

ppp()

33.求结果

def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
[6,6,6,6]

34.def(a, b=[])这种写法有什么陷阱?

默认参数:如果调用时,用户给了实参,就用用户的
如果调用时,用户没给实参,那么使用默认的(早已经存在在内存中的这个列表)

35.看代码写结果

def func(a,b=[]):
  b.append(a)
return b

v1 = func(1)
v2 = func(2,[10,20])
v3 = func(3)
print(v1,v2,v3)

[1,3],[10,20,2],[1,3]

36.看代码写结果

def func(a,b=[]):
  b.append(a)
return b

v1 = func(1)
print(v1)               [1]
v2 = func(2,[10,20])    
print(v2)               [10,20,2]
v3 = func(3)
print(v3)               [1,3]

37.请编写一个函数实现将IP地址转换成一个整数。

如 10.3.9.12 转换规则为:
      10           00001010
        3           00000011
        9           00001001
      12           00001100
       
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
b_num = ''
ip = '10.3.9.12'
for i in ip.split('.'):
b_str = str(bin(int(i)))[2:]
b_num += b_str.rjust(8,'0')
print(int(b_num,2))

 

38.请查找一个目录下的所有文件(可能存在文件嵌套)。

39.求结果

import math
print (math.floor(5.5))

40.是否使用过functools中的函数?其作用是什么?

41.用Python匹配HTML tag的时候,<.>和<.?>有什么区别?

<.> 匹配一次  <.?匹配多次>

43.如何生成一个随机数?

使用random模块  
import random
print(random.randint(1,50))

44.super的作用?

super按照指定的参数执行父类的方法

45.双下划线和单下划线的区别?

 

46.@staticmethod和@classmethod的区别?

静态方法不依赖于对象和类
类方法可以自动变换类名
使用类方法可以获取到类地址进行实例化
可以通过类名修改类属性

 

47.实现一个单例模式(加锁)。

import threading
import time
class Singleton:
  instance = None
  lock = threading.RLock()
   
  def __init__(self,name):
      self.name = name
       
  def __new__(cls,*args,**kwargs):
       
      if cls.instance:
      return cls.instance
      with cls.lock:
          if cls.instance:
      return cls.instance
          cls.instance = object.__new__(cls)
          return cls.instance

def task():
  obj =Singleton("宗介")
  print(obj)
   
for i in range(10):
  t = threading.Thread(target=task)
  t.start()

 

48.栈和队列的区别?

栈先进先出 队列先进后出

 

49.以下代码输出是什么? 请给出答案并解释。

class Parent(object):
  x = 1

class Child1(Parent):
  pass

class Child2(Parent):
  pass

print Parent.x, Child1.x, Child2.x
111

Child1.x = 2
print Parent.x, Child1.x, Child2.x
1,2,1

Parent.x = 3
print Parent.x, Child1.x, Child2.x
3,3,3

50.参考下面代码片段

class Context:
  pass

with Content() as ctx:
  ctx.do_something()
请在Context类下添加代码完成该类的实现

第二部分 可选题

  1. 如何获取列表中第二大的值?

  2. 简述Python内存管理机制。

  3. 简述Python的垃圾回收机制。

  4. 请用两个队列来实现一个栈。

  5. 请用Python实现一个链表。

  6. 请用Python实现链表的逆转。

  7.  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-02-26 12:06  宗介和波妞  阅读(177)  评论(0)    收藏  举报