1.在不考虑计算机运行资源(如内存)的限制,以下 python3 代码的预期运行结果是:(B)
import math
def sieve(size):
sieve= [True] * size
sieve[0] = False
sieve[1] = False
for i in range(2, int(math.sqrt(size)) + 1):
k= i * 2
while k < size:
sieve[k] = False
k += i
return sum(1 for x in sieve if x)
print(sieve(10000000000))
A.455052510
B.455052511
C.455052512
D.455052513
解析:
本题计算量较大可以尝试将数值减小,例如sieve(10)==4,sieve(100)==25,sieve(1000)==168;根据结果得知该题为求出100亿内的质数个数。判断n是不是素数,只需整除一遍2至n的算术平方根即可,如果出现整除的情况,则不是素数;可以认为因数是成对出现的,比如10就是分界点,所有成对的因数分布在10的左右,2到10的所有数就已经包含了所有可能的因数对。
2.下面的python3函数,如果输入的参数n非常大,函数的返回值会趋近于以下哪一个值:(B)
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
A.4 / 3
B.(math.pi - 2) / (4 - math.pi)
C.math.e ** (6 / 21)
D.math.tan(53 / 180 * math.pi)
解析:
以xy坐标轴(0,0)和(1,1)为圆心分别画两个圆,x,y取值范围为0≤x≤1,0≤y≤1,r1=x²+y² ,r2=(1-x²)+(1-y²),求两圆相交阴影占总面积比例:c1/c2=2*(Π/4-1/2)/1*1-2*(Π/4-1/2)=Π-2/4-Π。
3.当使用import导入模块时,按python查找模块的不同顺序可划分为以下几种:
①环境变量中的PYTHONPATH
②内建模块
③python安装路径
④当前路径,即执行Python脚本文件所在的路径
其中查找顺序正确的一组是:(C)
A.①④②③
B.②①④③
C.②④①③
D.①②③④
解析:
Python搜索模块的顺序为:内建模块>当前路径,即执行Python脚本文件所在的路径>环境变量中的PYTHONPATH>python安装路径,故答案为C。
4.下列程序打印结果为:(B)
import re
str1 = "Python's features"
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print(str2.group(1))
A.Python
B.Pyth
C.thon’s
D.Python‘s features
解析:
re模块正则匹配功能使用:re.match(正则表达式,要匹配的字符串,[匹配模式])。
正则表达式r'(.*)on(.*?).*'
r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符);
()符号包住的数据为要提取的数据,通常与.group()函数连用;
.匹配单个任意字符;
*匹配前一个字符出现0次或无限次;
?匹配前一个字符出现0次或1次;
(.*)提取的数据为str1字符串中on左边的所有字符,即Pyth;
(.*?)提取的数据为str1中on右边,空格前面,即's;
.group(0)输出的是匹配正则表达式整体结果;
.group(1) 列出第一个括号匹配部分;
.group(2) 列出第二个括号匹配部分。
5.以下这段代码的输出结果为:(D)
import numpy as np
a = np.repeat(np.arange(5).reshape([1,-1]),10,axis = 0)+10.0
b = np.random.randint(5, size= a.shape)
c = np.argmin(a*b, axis=1)
b = np.zeros(a.shape)
b[np.arange(b.shape[0]), c] = 1
print(b)
A.Hello World!
B.一个 shape = (5,10) 的随机整数矩阵
C.一个 shape = (5,10) 的 one-hot 矩阵
D.一个 shape = (10,5) 的 one-hot 矩阵
解析:
repeat(np.arange(5).reshape([1,-1]), 10, axis = 0)首先np.arange(5),生成一数组[0,1,2,3,4],reshape([n,-1])意思是将原数组重组为n行x/n列的新数组,所以数组共有5个元素,重组为1行5列的数组,因为axis=0,所以是沿着横轴方向重复,增加行数,所以原数组增加10行,数组每个元素都+10;随机生成大小为a.shape的数组,数组元素为[0,5)区间范围的整数;a*b组成的新数组,给出每行最小值的下标;生成a.shape大小的全零数组;b.shape[0]表示b的行数,b[np.arange(10), c]=1表示np.arange(10)生成的数组中,所有c对应的位置全置为1。