python 面试题_python面试题

9.

通过代码实现如下转换:

二进制转换成十进制:v="0b1111011"?

v=0b1111011

print(int(v))

====>123

十进制转换成二进制:v= 18?

v= 18

print(bin(v))

===>0b10010

八进制转换成十进制:v= "011"?

v=0o011

print(int(v))

=====>9

十进制转换成八进制:v= 30?

v= 30

print(oct(v))

====>0o36

十六进制转换成十进制:v= "0x12"?

v= 0x12

print(int(v))

====>18

十进制转换成十六进制:v= 87

v= 87

print(hex(v))

====>0x57

10.

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

def transfer_ip(ip=‘10.3.9.12‘):

ip = ‘10.3.9.12‘

ip_list = ip.strip().split(‘.‘)

ip_str =‘‘.join(ip_list)

return ip_str

print(transfer_ip())

如 10.3.9.12 转换规则为:

10 00001010

? 3 00000011?

9 00001001

? 12 00001100?

再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1

def stransfer_ip(ip=‘10.3.9.12‘):

2

‘‘‘

3

:param ip: ip地址

4

:return: ip_to_int:IP地址转换成一个整数,

5

transfer_ip:IP元素转换成8位二进制在拼接成一个字符串再转换成的整数

6

‘‘‘

7

# 将ip字符串按照‘.‘进行切割成列表

8 ip_list = ip.strip().split(‘.‘)

9

# 拼接成字符串 ip_to_int =‘103912‘

10 ip_to_int = ‘‘.join(ip_list)

11 bin_ip_str = ‘‘

12

for per_ip inip_list:

13

# 将列表的每一个元素进行10进制转换成二进制,形式是这样的per_ip1 =0b1010

14 per_ip1 =bin(int(per_ip))

15

# 要转换成8位二进制,所以要将0b和缺省的位数用0补齐

16 per_len =len(per_ip1)

17

# 计算每一个元素需要用多少0补齐

18 zero_count = (10 - per_len) * ‘0‘

19

# 替换并补齐空位

20 per_ip2 = per_ip1.replace(‘0b‘, zero_count)

21

# 字符串拼接

22 bin_ip_str += ‘‘.join(per_ip2)

23

# 拼接一个‘0b‘

24 bin_ip_str = ‘0b‘ +bin_ip_str

25

# 二进制转换成10进制

26 transfer_ip =int(eval(bin_ip_str))

27

return ip_to_int, transfer_ip

10.IP转换11.

11.

python递归的最大层数?

写一个简单的递归函数:

deffoo(n):

print(n)

n+=1

foo(n)

foo(1)

最大到998,之后就开始报错,所以python系统默认的应该是998

当然,可以通过以下方法修改默认值

importsys

sys.setrecursionlimit(1500) #修改成了1500

12.

求结果:

v1= 1 or 3? =====>1

v2= 1 and 3? =====>3

v3= 0 and 2 and 1 ====>0

? v4= 0 and 2 or 1 ====>1

? v5= 0 and 2 or 1 or 4 ====>1

? v6= 0 or False and 1 ====>0

v7= 1 and True ===>True

v8= True and 1 ===>1

V9= 0 or False ====>False

v10= False or 1 ===>1

and:判断是真则立即停止后面判断并打印后面一个为真的值,如果是假的继续判断直到为真,如果都为假就取0

or:一个为真立即停止,打印最靠近的值,位假的继续判断直到为真,都为假就取字后一个假

13.

ascii、unicode、utf-8、gbk 区别?

ascii:不能表示中文,英文用一个字节表示

unicode:中文和英文都用2个字节表示

utf-8:英文用一个自己表示,中文用3个

gbk:英文用1个字节表示,中文用2个字节表示

14.

字节码和机器码的区别?

字节码和机器码的区别?

字节码:一种中间状态的二进制文件,是编码后的数值常量、引用、指令等构成的序列。

机器码:通常说法为二级制代码,也就是转化成bytes形式的编程代码,是电脑CPU可以直接解读的数据

15.

三元运算规则以及应用场景?

满足条件得到前面的值或函数,否则得到后面的值或函数

主要用在if....else判断中,可以在结果中嵌套多个三元运算语句

16.

列举 Python2和Python3的区别?

python2python3

python2中有经典类python3中所有类都是默认继承object,都是新式类

print语句,语句就意味着可以直接跟要打印的东西print函数,函数就以为这必须要加上括号才能调用

Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str和unicodePython3只支持unicode的string

Python2中相对路径的import会导致标准库导入变得困难Python3采用的是绝对路径的方式进行import

Python2中任意两个对象都可以比较Python3中只有同一数据类型的对象可以比较

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

? a = 1

?     b = 2

a,b=b,a

18.

Python3和Python2中 int 和 long的区别?

python2中需要自己根据数值大小去判断该用int还是long

python3中取消了long类型数据,会自动判断

19.

xrange和range的区别?

python中有xrange会打印出所有值

python3中取消了xrange只有range,并且python回了保护内存不会立即打印出所有值

21.

列举布尔值为False的常见值?

0,None,‘ ‘,False,

22.

字符串、列表、元组、字典,集合每个常用的5个方法?

字符串:title(),join(),replace(),strip(),split(),eval()

元组:count(),index()

列表:insert(),extend(),append(),pop(),remove(),sort()

字典:get(),items(),values(),keys(),clear(),copy(),pop(),setdefault()

集合:add(),deference(),discard(),remove(),pop(),symmetric_difference(),union(),intersection_update

23.

lambda表达式格式以及应用场景?

lambda表达式主要是对简单的函数进行简单的表达,lamda [参数]:[返回值]

24.

pass的作用?

占用而已,不进行任何操作直接跳过

25.

*arg和**kwarg作用

*args:表示位置参数,**kwargs表示关键字参数,

在函数定义的过程中一起使用表示可以传入任何参数,

注意位置参数一定要在关键字参数的前面

26.

is和==的区别?

is :id相等==:值相等

27.

简述Python的深浅拷贝以及应用场景?

浅拷贝:python中的浅拷贝用copy.copy(),变量如果嵌套多个可变类型只拷贝变量的第一层,

嵌套的可变类型改变会影响所有拷贝的变量

深拷贝:python中的深拷贝用copy.deepcopy(),是一个迭代拷贝的过程一直拷贝到不能迭代为止,

相当于重新建立了一个内存空间保存赋值的变量,变量任何改变都是独立的并不会影响到其它个体

应用场景:数据备份,声明变量的属性

注意:切片是浅拷贝

28.

Python垃圾回收机制?

当一个变量被声明的时候会自带一个引用计数on_refcnt,每次被引用on_refcnt都会加1,每次引用被删除on_refcnt就会-1,当on_refcnt变为0的时候就会触发垃圾回收机制,变量被删除,相应的内存被释放python里面的垃圾回收方式主要有3个:引用计数为主,标记清除和分代收集为辅.{分代收集:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个"代",垃圾收集的频率随着"代"的存活时间的增大而减小.也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率.那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长.标记-清除:不改动真实的引用计数,而是将集合中对象的引用计数复制一份副本,改动该对象引用的副本.对于副本做任何的改动,都不会影响到对象生命走起的维护}

29.

Python的可变类型和不可变类型?

原文:https://www.cnblogs.com/dingyutao/p/9231084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值