python笔记题,python常见笔试题

1.(10分) -- 浮点数

print(99.9 - 90)

print(99.9-90.9 == 9.0)

print(99.9-90.0 == 9.9)

print(66.6-60.6 == 6.0)

以上三句代码分别输出结果是什么?python中浮点数间怎么判断是否相等

答案:

9.900000000000006 浮点数在计算机里面的表示

True 浮点数部分一样

False 精度的问题

False ?

浮点数用二进制表示

66.6 = 1000010.100110011001100110011001100110011001100110011

60.6 = 111100.10011001100110011001100110011001100110011001101

部分浮点数会无限循环下去,有效数字,取指定的位数

2.请输出下面代码的数据结果,并阐明原因(10分) --- 对象存储

def f(x, l=[]):

for i in range(x):

l.append(i*i)

print(l)

f(2)

f(3, [3, 2, 1])

f(3)

答案:

[0, 1] # 常识

[3, 2, 1, 0, 1, 4] # 当调用函数时默认参数有传值时,直接用传的值,此时和默认的数值无关

[0, 1, 0, 1, 4] # 函数默认值如果是容器对象,是可能会被修改的

3. 以下函数的输出结果是?为什么 (10分) --- 类继承

class A(object):

x = 1

class B(A):

pass

class C(A):

pass

print(A.x, B.x, C.x)

B.x = 2

print(A.x, B.x, C.x)

A.x = 3

print(A.x, B.x, C.x)

答:

1 1 1 # 子类未定义变量时,默认继承父类的变量

1 2 1 # 子类给变量赋值后,会覆盖父类的同名变量,但是不会影响父类变量的值

3 2 3 # 子类未定义变量时,默认继承父类的变量

4. 以下函数的输出结果是?为什么 (10分)-- 变量作用域

session_cache = [10000, 10001, 10002]

def add_session(session_id):

session_cache.append(session_id)

def add_session2(session_id):

session_cache += [session_id]

add_session(10003)

print(session_cache)

add_session2(10004)

print(session_cache)

答案:

函数内引用全局变量,但未声明时,如果是做赋值操作,则会报错

对列表做.append时不会报错;

5.以下代码输出结果是什么?请说明原因(10分) --- 迭代删除

get_node_index = lambda x: int(x % 10)

temp = [n for n in range(10)]

for i in range(len(temp)):

if get_node_index(temp[i]):

del temp[i]

print(temp)

答案:

在循环里面删除列表的元素时,此时列表的长度会发生变化;

比如原来列表是10个元素,删除1个,变成了9个, temp[9](第10个元素)此时发现不存在,即会报错

6. 以下代码输出结果是什么?请说明原因 (10分) --- 闭包迭代

def test():

return [lambda x: i*x for i in range(5)]

for ret in test():

print(ret(2))

答案:

python延迟绑定,去最后的数字

8

8

8

8

8

(10分) --- 循环引用

a.py文件

import b

def f():

return b.x

print(f())

b.py文件

import a

x=1

def g():

print(a.f())

此时在第三个python文件中import a, 会报错吗?为什么

假使在第四个文件中import b, 又会报错吗?请说明原因

答案:

import机制 : python里import x模块时, 会在系统里面去查找之前是否import过,如果import过,则不会再import, 所以不会产生持续的递归

报错不是因为递归退不出来,而是因为某些变量或者代码执行出错(一般是找不到定义)

8.以下代码输出结果是什么?请说明原因 (10分) --- 异常捕获执行顺序

a = 1

try:

a += 1

except:

a += 1

else:

a += 1

finally:

a += 1

print(a)

考点: try中的else和finally

以下输出结果是什么?请说明原因 (10分) -- 初始化

i = 5

def f2(k=i):

print(k)

i = 6

f2()

答案:5 函数的参数默认值只会执行一次

以下代码输出结果是?请说明原因(10分) --- 数组的内存存储

temp = [[]]*3 # temp=[[], [], []]

temp[0].append(10)

temp[1].append(20)

temp[2].append(30)

print(temp)

答案:

[[10, 20, 30], [10, 20, 30], [10, 20, 30]]

列表(列表的元素也为一个容器对象)时得到的多个元素实际上都是指向的同一个容器对象

容器对象: 列表,字典,集合,...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值