python面试题
1、通过代码实现如下转换(进制之间转换)
# 二进制转换成十进制-->int
v = "0b1111011"
b = int(v,2)
print(b) # 123
# 十进制转换成二进制--->bin
v2 = 18
print(bin(int(v2)))
# 0b10010
# 八进制转换成十进制
v3 = "011"
print(int(v3))
# 11
# 十进制转换成八进制:---> oct
v4 = 30
print(oct(int(v4)))
# 0o36
# 十六进制转换成十进制:
v5 = "0x12"
print(int(v5,16))
# 18
# 十进制转换成十六进制:---> hex
v6 = 87
print(hex(int(v6)))
# 0x57
2、请编写一个函数实现将IP地址转换成一个整数
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
00001010
00000011
00001001
00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
answer
ip_addr = '192.168.2.10' # transfer ip to int def ip2long(ip): ip_list = ip.split('.') result = 0 for i in range(4): # 0,1,2,3 result = result + int(ip_list[i]) * 256 ** (3 - i) return result long = 3232236042
transfer int to ip
def long2ip(long):
floor_list = []
yushu = long
for i in reversed(range(4)): # 3,2,1,0
res = divmod(yushu, 256 ** i)
floor_list.append(str(res[0]))
yushu = res[1]
return '.'.join(floor_list)
a = long2ip(long)
print(a)
3、python递归的最大层数?
Python的最大递归层数是可以设置的,默认的在window上的最大递归层数是998; 可以通过sys.setrecursionlimit()进行设置,但是一般默认不会超过3925-3929这个范围
4、ascii、unicode、utf-8、gbk 区别?
#Ascii: 1个字节 支持英文 #unicode :所有字符(无论中文、英文等)1个字符:4个字节 #gbk : 1个字符,英文1个字节,中文2个字节。 #utf-8 :英文1个字节,欧洲字符:2个字节, 亚洲: 3个字节。
5、字节码和机器码的区别?
- C代码被编译成机器码(二进制),在机器上直接执行。 - Cpython编译你的python源代码,生成字节码。 - 机器码快的多,字节码更易迁移,也安全。
本文来自博客园,作者:CoderHao,转载请注明原文链接:https://www.cnblogs.com/codehao/p/12625372.html