python基础试题(2)

1.Python和Java、PHP、C、C#、C++等其他语言的对比?
python是一种脚本语言,它的运行需要python解释器,属于解释型的语言,python本身就是由C语言开发出来的,而且是开源的,由此可见C语言的强大,;C语言属于中级语言,它介于高级和低级语言之间,C是编译型的语言,它的运行必须经过编译器的处理才能形成最终的执行代码,C语言的应用非常广泛,C语言最主要的用途就是系统底层的应用。
简单的说,它们都是编程语言。是在第三代和第四代编程语言。 都和C有关系。 底层解释器都是C写的。都存在进程管理和数据交换。都支持网络编程,数据库编程。 相互之间可以通讯。
php相对最容易。是函数式编程, java虽然是面向对象的,使用特定的模式后,也可以支持类函数式编程。 C语言是函数式的。 python也是。 但是原则上,它们都同时支持面向对象的编程思维。只是表达方式比较特别。
java的工具强大,是一个工程语言。容易学,学精难,工具丰富 ,大多数人在用。是目前最主流的网络服务编程语言。
python仍然是脚本语言之王。 易学,易用,难精通。接口非常丰富。无所不能。

2.简述解释型和编译型编程语言?
解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。
用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统,把源高级程序编译成为机器语言文件,翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,
部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。
3.Python解释器种类以及特点?
 CPython
当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命令行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。
 IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
 PyPy
PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。
 Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
在Python的解释器中,使用广泛的是CPython,对于Python的编译,除了可以采用以上解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写Python解释器来执行Python代码,十分的方便!

4.位和字节的关系?
8位(bit)=1字节,1024字节=1KB
5.b、B、KB、MB、GB 的关系?
6.请至少列举5个 PEP8 规范(越多越好)。

1、缩进,4个空格的缩进(编译器都可以完成此功能),不适用Tab,更不能混合使用Tab和空格;
2、每行最大长度为79,换行可以使用反斜杠。最好使用圆括号,换行点再操作符的后边敲回车;
3、不要再一句import中多个库。比如import os,sys(不推荐);
4、模块命名尽量短小,使用全部小写的方式,可以使用下划线;
5、包命名尽量短小,使用全部小写的方式。不可以使用下划线;
6、类的命名使用CapWords的方式,模块内部使用的类采用--CapWords的方式;
7、函数命名使用全部小写的方式,可以使用下划线;
8、异常命名使用CapWords+Error后缀的方式;
9、常量命名使用全部大写的方式,可以使用下划线;
10、类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线;
11、类方法第一个参数必须是self,而静态方法第一个参数必须是cls;
 

7.通过代码实现如下转换

#二进制转换成十进制:v = “0b1111011”
#十进制转换成二进制:v = 18
#八进制转换成十进制:v = “011”
#十进制转换成八进制:v = 30
#十六进制转换成十进制:v = “0x12”
#十进制转换成十六进制:v = 87
print(int('0b1111011', 2)) # 123
print(bin(18)) # 0b10010
print(int('011', 8)) # 9
print(oct(30)) # 0o36
print(int('0x12', 16)) # 18
print(hex(87)) # 0x57

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

10.3.9.12 转换规则为:
10            00001010    
3            00000011
 9            00001001
12            00001100
#再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

def func(s):
    l = s.split('.')
    ret = []
    for item in l:
        item = str(bin(int(item)))[2:]
        if len(item) < 8:
            n = 8 - len(item)
            item = ''.join(['0'*n, item])
        ret.append(item)
    print(ret)

    temp = ''.join(ret)
    print(temp)
    print(int(temp, 2))
    return ret

func('10.3.9.12')

运行结果:
['00001010', '00000011', '00001001', '00001100']
00001010000000110000100100001100
167971084

9.python递归的最大层数?

#代码说话:
def foo(n):
    print(n)
    n += 1
    foo(n)

foo(1) # 998左右,998以后就会报错

import sys
sys.setrecursionlimit(100000)

def bar(n):
    print(n)
    n += 1
    bar(n)

bar(1) # python3中在8663左右

10.求结果:

v1 = 1 or 3
v2 = 3 or 1
v3 = 1 and 3
v4 = 3 and 1 # 短路原则
v5 = 0 and 2 and 1
v6 = 0 and 2 or 1
v7 = 0 and 2 or 1 or 4
v8 = 0 or False and 1

print(v1, v2, v3, v4, v5, v6, v7,v8)
结果:
1 3 1 0 1 1 False

11.ascii、unicode、utf-8、gbk 区别?
ascii 只支持英文字符 1字符1字节
unicode 通用编码,支持大部分语言,但比较占空间
utf-8 可变长编码,节省内存,ascii码是其子集
gbk 支持中文字符的编码

12.字节码和机器码的区别?
机器码是电脑CPU直接读取运行的机器指令,是电脑的CPU可直接解读的数据,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到;
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。

13

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值