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源代码,生成字节码。
- 机器码快的多,字节码更易迁移,也安全。
posted @ 2020-04-03 11:22  CoderHao  阅读(152)  评论(1编辑  收藏  举报