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
-
python中单引号、双引号、三引号的区别?
-
单双引号相同,但有时需要单双引号混合使用(如出现需要转义字符)
-
三引号不常用,用于多行注释
-
-
is和==的区别?
-
is:判断两边数据的内存地址是否相同
-
==:判断两边数据的值是否相同
-
-
python里如何实现tuple和list的转换?
lis = [1,2,3]
tu = tuple(lis)
-
如何实现字符串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)
-
两个set如何获取交集、并集、差集?
-
s1 = {1,2,3,4}
s2 = {5,6,7,8}
# 交集
s1 & s2
# 并集
s1 | s2
#差集
s1 - s2
-
那些情况下,y!=x-(x-y)会成立
12.python中如何拷贝一个对象?
-
=
-
copy
-
简述赋值、浅拷贝、深拷贝的区别
-
赋值:多个变量指向同一内存地址
-
浅拷贝:copy源数据放到新的内存地址,如果源数据是列表等,则列表中的元素的内存地址是相同的而列表的内存地址不同
-
深拷贝:deepcopy,拷贝一份新的数据,两者毫无关系
-
pass的作用?
-
表示占位,保证程序的完整性
-
阅读代码写结果:
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]
-
用python实现9*9乘法表
for i in range(1,10):
for x in range(1,10):
print(f"{i}*{x}={i*x} ",end="")
print()
-
用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="")
-
-
如何删除列表中重复的值?
lis = [1,2,2,3,4,4,5,5,6]
print(list(set(lis))) -
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
with open("etl_log.txt","r",encoding="utf-8")as f:
for i in f:
print(i)
-
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
{"a":1,"b":2,"c":3,"d":4,"e":5}
-
lambda关键字的作用?
-
*args和`**kwargs作用?
-
*args:动态位置参数,接收多余的位置参数
-
**kwargs:动态关键字参数,接收多余的关键字参数
-
如何在函数中设置一个全局变量 ?
-
filter、map、reduce的作用?
-
filter:过滤,按指定的规则过滤可迭代对象
-
map:映射,将可迭代对象的每个元素执行指定的方法
-
reduce:累计算,将可迭代对象执行指定的累计算
-
什么是匿名函数?匿名函数有什么作用?
-
Python递归的最大层数?
-
官方1000,一般995,996
-
什么是迭代器?什么是可迭代对象?
-
具有__ iter __()方法的是可迭代对象
-
具有__ iter __ ()和 __ next __()方法的是迭代器
-
什么是生成器?
-
生成器的本质是迭代器,是程序员自己定义的一种迭代器
-
什么是装饰器及应用场景?
-
在不改变原函数及原函数调用方式的情况下,对原函数添加新的功能
-
什么是反射及应用场景?
-
通过字符串调用函数
-
写一个普通的装饰器。
def warpper(func):
def inner(*args,**kwargs):
# 装饰代码
ret = func(*args,**kwargs)
return ret
return inner
-
写一个带参数的装饰器。
def auth(argv):
def warpper(func):
def inner(*args,**kwargs):
# 装饰代码
ret = func(*args,**kwargs)
return ret
return inner
return warpper
-
求结果
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
# 结果:[6,6,6,6]
-
def(a, b=[])这种写法有什么陷阱?
这样写b是一个全局的变量,可能影响以后的数据
-
看代码写结果
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]
-
看代码写结果
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)
#
-
请编写一个函数实现将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
-
def func(path)
for i in os.listdir(path):
if os.path.isdir(i):
func(i)
return i
-
求结果
import math
print (math.floor(5.5))
# 5