python基础

第一部分 必答题

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

  • python 动态解释型强类型语言,面向对象

  • c语言 面向过程,

2.列举python2和python3 的区别?

  • python2:

    • print 不需要括号

    • 有xrange方法

    • print(range(10)) 输出为一个列表

  • python3:

    • print 必须用括号

    • 没有xrange,range代替了xrange

    • print(range(10)) 输出为range(10)

3.看代码写结果

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

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

 v1 = [1,2,3]
 v2 = [(1),(2),(3)]
 v3 = [(1,),(2,),(3,)]
 # v1 v2 一样
 # v3 列表中是三个元组

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

 a = 1
 b = 2
 
 b,a = a,b
  1. python中单引号、双引号、三引号的区别?

    • 单双引号相同,但有时需要单双引号混合使用(如出现需要转义字符)

    • 三引号不常用,用于多行注释

  1. is和==的区别?

    • is:判断两边数据的内存地址是否相同

    • ==:判断两边数据的值是否相同

  1. python里如何实现tuple和list的转换?

 lis = [1,2,3]
 tu = tuple(lis)
  1. 如何实现字符串name = '老男孩'的反转

 name = '老男孩'
  •  print(name[::-1])
  •  lis = []
     for i in name:
      lis.insert(0,i)
     name = "".join(lis)
     print(name)
  •  name = list(name)
     name.reverse()
     name = "".join(name)
  1. 两个set如何获取交集、并集、差集?

  •  s1 = {1,2,3,4}
     s2 = {5,6,7,8}
     # 交集
     s1 & s2
     # 并集
     s1 | s2
     #差集
     s1 - s2
  1. 那些情况下,y!=x-(x-y)会成立

 

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

  • =

  • copy

  1. 简述赋值、浅拷贝、深拷贝的区别

  • 赋值:多个变量指向同一内存地址

  • 浅拷贝:copy源数据放到新的内存地址,如果源数据是列表等,则列表中的元素的内存地址是相同的而列表的内存地址不同

  • 深拷贝:deepcopy,拷贝一份新的数据,两者毫无关系

  1. pass的作用?

  • 表示占位,保证程序的完整性

  1. 阅读代码写结果:

 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]
  1. 用python实现9*9乘法表

 for i in range(1,10):
  for x in range(1,10):
  print(f"{i}*{x}={i*x} ",end="")
  print()
  1. 用Python显示一个斐波那契数列。

    • 基于列表

     f_lis = []
     for i in range(10):
      if i == 0 or i == 1:
      f_lis.append(1)
      else:
      f_lis.append(f_lis[i-2]+f_lis[i-1])
     print(f_lis)
    • 递归

     def fib(num):
      if num == 1 or num == 2:
      return 1
      else:
      return fib(num-2)+fib(num-1)
     
     for i in range(1,10):
      print(f"{fib(i)} ",end="")
     

     

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

     lis = [1,2,2,3,4,4,5,5,6]
     print(list(set(lis)))
  3. 一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

     with open("etl_log.txt","r",encoding="utf-8")as f:
      for i in f:
      print(i)
  1. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

 {"a":1,"b":2,"c":3,"d":4,"e":5}
  1. lambda关键字的作用?

 

  1. *args和`**kwargs作用?

  • *args:动态位置参数,接收多余的位置参数

  • **kwargs:动态关键字参数,接收多余的关键字参数

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

  1. filter、map、reduce的作用?

  • filter:过滤,按指定的规则过滤可迭代对象

  • map:映射,将可迭代对象的每个元素执行指定的方法

  • reduce:累计算,将可迭代对象执行指定的累计算

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

 

  1. Python递归的最大层数?

  • 官方1000,一般995,996

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

  • 具有__ iter __()方法的是可迭代对象

  • 具有__ iter __ ()和 __ next __()方法的是迭代器

  1. 什么是生成器?

  • 生成器的本质是迭代器,是程序员自己定义的一种迭代器

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

  • 在不改变原函数及原函数调用方式的情况下,对原函数添加新的功能

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

  • 通过字符串调用函数

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

 def warpper(func):
  def inner(*args,**kwargs):
  # 装饰代码
  ret = func(*args,**kwargs)
  return ret
  return inner

 

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

 def auth(argv):
  def warpper(func):
  def inner(*args,**kwargs):
  # 装饰代码
  ret = func(*args,**kwargs)
  return ret
  return inner
  return warpper

 

  1. 求结果

 def num():
  return [lambda x:i*x for i in range(4)]
 print([m(2) for m in num()])
 
 # 结果:[6,6,6,6]
  1. def(a, b=[])这种写法有什么陷阱?

    这样写b是一个全局的变量,可能影响以后的数据

  2. 看代码写结果

 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]
  1. 看代码写结果

 def func(a,b=[]):
  b.append(a)
 return b
 
 v1 = func(1)
 print(v1)
 v2 = func(2,[10,20])
 print(v2)
 v3 = func(3)
 print(v3)
 
 #
  1. 请编写一个函数实现将IP地址转换成一个整数。

 10.3.9.12 转换规则为:
  10 00001010
  3 00000011
  9 00001001
  12 00001100
 
 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 =
 
 def change(ip):
  lis = []
  ip_list = ip.split(".")
  for i in ip_list:
  i = bin(int(i))
  lis.append(i)
  bin_ip = " ".join(lis)
  return bin_ip
  1. 请查找一个目录下的所有文件(可能存在文件嵌套)。

     def func(path)
     for i in os.listdir(path):
      if os.path.isdir(i):
      func(i)
      return i
  1. 求结果

 import math
 print (math.floor(5.5))
 
 # 5
posted @ 2020-02-26 12:15  Phoenix-H  阅读(158)  评论(0编辑  收藏  举报