第一题
lists ``=` `[``1``, ``2``, ``3``, ``4``]
tmp ``=` `0
for` `i,j ``in` `enumerate``(lists):
``tmp ``+``=` `i ``*` `j
print``(tmp)
解题步骤:
知识点:enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
也就是说返回的值为: enumerate(lists)返回的是[(下标,元素),(下标,元素)]
结果为:tmp=01+12+23+34=20
第二题
class` `A(``object``):
``pass
class` `B(A):
``pass
b ``=` `B()
选项为:
A isinstance(b, A) == True
B isinstance(b, object) == True
C issubclass(B, A) == True
D issubclass(b, B) == True
知识点:
abc isinstance(object,classinfo),用于判断object是否是classinfo的一个实例,或者object是否是classinfo类的子类的一个实例,如果是返回True.
issubclass(class,classinfo),用于判断class是否是classinfo类的子类,如果是返回True.
结果 D为错
第三题
import` `random
def` `foo(n):
``random.seed()
``c1 ``=` `0
``c2 ``=` `0
``for` `i ``in` `range``(n):
``x ``=` `random.random()
``y ``=` `random.random()
``r1 ``=` `x ``*` `x ``+` `y ``*` `y
``r2 ``=` `(``1` `-` `x) ``*` `(``1` `-` `x) ``+` `(``1` `-` `y) ``*` `(``1` `-` `y)
``if` `r1 <``=` `1` `and` `r2 <``=` `1``:
``c1 ``+``=` `1
``else``:
``c2 ``+``=` `1
``return` `c1 ``/` `c2
解题步骤:
知识点:特卡洛方法是一种利用随机数和概率统计理论进行数值计算的方法。简单来说,它通过生成大量的随机样本来估算某个问题的结果。
比如我们想要计算一个复杂形状的面积,但无法用传统的几何方法求解。使用蒙特卡洛方法,我们可以在该形状内部随机生成大量点,并统计落在形状内部和外部的点的数量。然后,通过落在形状内部的点数与总点数的比例,乘以表示整个区域的面积,就可以估算出该复杂形状的面积。
蒙特卡洛方法的优点是适用于各种复杂问题,不需要求解解析解,只需要生成随机样本并进行统计。通过增加样本数量,可以提高结果的准确性。
这段代码是一个函数 foo(n)
,它接受一个参数 n
,用来指定循环的次数。
在该函数中,首先通过 random.seed()
初始化随机数生成器。然后定义了两个计数变量 c1
和 c2
,用于统计满足条件的点和不满足条件的点的数量。
接下来使用一个循环来进行模拟。每次循环,生成两个随机数 x
和 y
,范围为 [0, 1),代表了一个二维平面上的一个点的坐标。然后计算该点到两个圆心的距离的平方,分别代表了该点与两个圆的关系。
-
r1 = x * x + y * y
表示该点与以原点为圆心的圆的距离的平方。 -
r2 = (1 - x) * (1 - x) + (1 - y) * (1 - y)
表示该点与以 (1, 1) 为圆心的圆的距离的平方。
如果 r1
和 r2
都小于等于 1,则说明该点落在两个圆内部,将 c1
加一;否则,将 c2
加一。
最后,函数返回 c1 / c2
的结果,即满足条件的点的数量除以不满足条件的点的数量的比值。
举个例子,假设 n
的值为 1000,表示进行 1000 次循环。函数会随机生成 1000 个二维平面上的点,并计算这些点与两个圆的关系。统计满足条件的点和不满足条件的点的数量,最后返回满足条件的点的数量除以不满足条件的点的数量的比值。
第四题
请问经过该编码的字符串的解码顺序是( )
urllib.quote(line.decode(``"gbk"``).encode(``"utf-16"``))
解题步骤:
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk
题目中的代码是一个编码过程: 编码:decode() 解码:encode() url编码:urllib.quote()
line.decode("gbk") 可知 line 是 gbk 编码的
编码过程:
line -> 解码 gbk -> 编码 utf-16 -> 编码 url
解码过程(与编码过程相反): 解码 url -> utf-16 -> gbk
第五题
在python3.x执行下列选项的程序,不会抛出异常的是()
A
b = 1
def fn():
nonlocal b
b = b + 1
print(b)
fn()
B
tup = (('onion','apple'),('tomato','pear'))
for _,fruit in tup:
print(fruit)
C
a = [b for b in range(10) if b % 2 == 0]
print(b)
D
lis = [1,2,'a',[1,2]]
set(lis)
解题步骤:
A: nonlocal关键字是用来在函数或者其他作用域中使用非全局变量。(简单的来说就是只能用在嵌套函数中,并且你的外层函数中定义了相关的局部变量,否则就会报错)
B: 两次解包。第一次是for item in tuple,第二次是分别用 _ , fruit 对 item 解包[【将tup里的两个元组拆开分别赋值给_和fruit两个变量】。
C: python3.x中,使用列表生成式,中间变量b在生成列表后被销毁,因此再次使用变量b会报错;
D: 选项,集合元素不能是列表这类不可散列对象,因此会报错。