内容正文:
教科版(2019)必修一2.4可以复用的代码同步作业
一、单选题
1.有如下 Python 程序段:
def sym(d1, d2):
s1 = d1.split(",") # 以“,” 将字符串分割成列表
s2 = d2.split(",")
if len(s1) != len(s2):
return False
stk = []
i=0
j=0
while i < len(s1):
stk.append(s1[i])
i += 1
while stk != [] and stk[-1] == s2[j]:
stk.pop() #删除列表 stk 中的最后一个元素
j += 1
return stk == [] and i == j
L1 = "@,a,b,3,c,d"
L2 = input()
print(sym(L1, L2))
执行该程序段后,若输出结果为 True,则 L2 输入的值可能是( )
A.a,b,c,d,3 B.c,d,3,b,@,a C.b,a,@,3,d,c D.d,c,3,@,a,b
2.有如 Python 程序段:
import random
def find(x, y):
m = (x+y+1)//2
if a[m] == key:
return m
if a[m] > key:
y = m-1
else:
x = m + 1
return find(x, y)
a = [2, 4, 6, 8, 10, 12, 14, 16]
key=random.choice(a) #从序列的元素中随机挑选一个元素
i = 0;j = len(a) - 1
xb = find(i, j)
print(xb, key)
上述程序执行完后,函数find被调用的最多次数是( )
A.3 B.4 C.5 D.6
3.定义如下函数:
def move(n,a,b,c):
if n==1:
print(a,"->",c) return
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
执行语句 move(2,"A","B","C"),输出的第一行内容是( )
A.a -> c B.A -> C C.a -> b D.A -> B
4.“最强大脑”游戏问题的算法分析:显示游戏规则,显示物品以及编号,屏幕停留10秒;随机出题,给出物品,回答编号;判断回答是否正确,如果正确,则答对的题数加1。重复以上步骤,直到答完5道题;显示答对的题数。( )
import random;import time;import os
print("你好,现在你有 10 秒钟的时间记忆下列物品及其编号")
things= ["苹果","香蕉","橙子","梨子","猕猴桃","柚子","猴魁","铁观音","彩蛋","复活节"] for i in range(10) :
print(i,":", ① ); #在屏幕上显示编号及物品名称
time.sleep(10) #延时 10 秒
os.system("cls") #清屏幕,隐去编号及物品
n=0 #记录答对的题数,初值为 0
t2=random.sample( ② ,5) #随机抽出 5 个物品
for i in t2: #出 5 题
ans=int(input(i + "的编号是:"))#输入编号答题技术
if i== ③ :
n=n+1 #如果回答正确,答对的题数加 1
print("
你一共答对了",n,"次")#屏幕显示答对的题数
input("
按回车键结束程序")
A.①things[i] ② things ③things[ans]
B.① things ② things ③ things[i]
C.①things[i] ② things[i] ③ things[ans]
D.①things[ans] ② things[ans] ③ things[i]
5.有一组正整数,要求对其中的奇偶数进行交换。交换后偶数在前,奇数在后,并保持相对顺序 不变。将划线处的代码补充完整,正确的是( )
a=[5,10,21,7,24,14,9,11,36,37]
n=len(a) ;b=[0]*n
num=0;k=0
while k <10:
if ① :
b[num]=a[k]
num+=1
else:
②
k+=1
for j in range(n-num,n):
③
print(a)
A.①a[k]%2==1 ②a[k-num]=a[k] ③a[j]=b[j-n+num]
B.①a[k]%2==0 ②b[k-num]=a[k] ③a[j]=b[j+num]
C.①a[k]%2==0 ②a[k-num]=a[k] ③a[j]=b[j+num]
D.①a[k]%2==1 ②b[k-num]=a[k] ③a[j]=b[j-n+num]
6.有如下VB程序段:
Function fact(n As Integer) As String
If n = 1 Then
fact = fact & 1
Else
fact = fact(n \ 2) & n Mod 2
End If
End Function
Private Sub Command1_Click()
Dim x As String, i As Integer, r As Integer, x = Text1.Text
For i = 1 To Len(Text1.Text)
If Mid(x, i, 1) = "." Then Exit
Next i
r = Val(Mid(x, i + 1, Len(Text1.Text) - i))
Text2.Text = fact(r)
End Sub
在文本框Text1 中输入 2019.70,则执行程序段,在文本框 Text2 中显示的内容是( )
A.1000110 B.70 C.350 D.100011
7.小敏利用 Python 编写了一个根据输入半径 r,求解圆面积 s 的程序。
1 r=float(input("输入半径:"))
2 S=pi*r*r
3 print(" 面积为 : ",s)
程序运行时,输入半径的值为 6,程序出现以下错误提示,程序出错的原因是( )
输入半径:6
Traceback(most recent call last):
File “C:/Users/lenovo/Desktop/圆的面积.py",line 2,in <module>
S=pi*r*r
NameError: name 'pi ' is not defined
A.序第 2 行代码中的变量 pi 未定义
B.程序中变量的数据类型是字符型,不能用于计算
C.程序第 1行代码多了一个右括号
D.程序第 3 行代码中双引号应该改成单引号
8.运行以下程序代码后的结果是( )
a=17.95
b= -18
m= int(a)
if abs (b) > m:
m = b
else:
m = a
print ("m=",m)
A.-18 B.18 C.m= -18 D.m= 18
9.小明学习了算法后,写了以下两段代码来求斐波那契数列的第6项:
a= 1
b=1
for i in range(2, 6) :
c=a+b
a=b
b=c
print(c)
def f(n) :
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
print(f(6))
算法一
算法二
下列说法正确的是( )
A.两种算法的时间复杂度均为0(1)
B.算法一是迭代算法,算法二是递归算法,相比之下,算法二的时间效率更高
C.执行算法二代码,f(4)共被调用了2次
D.执行算法一代码,当i=4这-遍循环刚结束时,a的值等于5
10.有如下Python程序段:
def sp(a,i):
if "a"<=a[i]<= "z" :
a=a[:i]+a[i+1:]
elif "0"<=a[i]<= "9":
a=a[:i]+str((int(a[i])+3)%10)+a[i+1:]
return a
s="cfi3H8qwz4";i=0
while i<len(s):
s=sp(s,i)
i+=1
执行上述程序段后,s的值为( )
A.”f3H1w4” B.”3H84” C.”6H17” D.”f6H1w7”
11.以下Python程序段执行后,结果为2,横线处的代码为 ( )
def f(list):
m=list[0]
for i in range(1,len(list)):
if :
m=list[i]
return m
s=[4,5,2,6,5,8]
print(f(s))
A.m<list[i] B.m>list[i] C.m==list[i] D.m!=list[i]
12.在Python程序设计语言中,可以返回列表、元组、字典、集合、字符串对象中元素个数的数是( )。
A.int(x) B.min(x)
C.abs(x) D.len(x)
二、判断题
13.random.randint(1,10)语句作用在1到10中随机生成一个数字。
14.numpy是一个科学计算包,其中包括很多数学函数。
15.用户自定义函数是用户自己写的一段程序。一般包括函数名、参数、 返回值、函数体等四部分。其中,函数名和参数是必不可少的部分。
三、填空题
16.请在空格处填写正确的代码,使程序完善。
实现功能:用辗转相除法求解两个正整数的最大公约数。
x = int(input('请输入第一个正整数:'))
y = int(input('请输入第二个正整数:'))
m = max(x,y) #找出x,y中 最大值
n = min(x,y) #找出x,y中的最小值
r = m%n #求得最大值除以最小值后的余数
while r!=0: #如果余数不等0,则进行以下循环
m = #把最小值赋给m
n = #把余数赋给n
r = m%n #求得最大值除以最小值后的余数
print('这两个数的最大公约数为:', )
input("运行完毕,请按任意键退出....")
17.某Python程序段如下:
def isprime(x):
for i in range(2, x//2 + 1):
if x % i == 0:
return False
return True
s = 0
for i in range(2, 19):
if isprime(i):
s += i
print(s)
运行该程序段,输出结果是 。
18.在统计全班同学数学科目的最高分时,我们可以使用电子表格软件提供的 函数。
答案解析部分
1.【答案】C
2.【答案】B
3.【答案】D
4.【答案】A
5.【答案】A
6.【答案】A
7.【答案】A
8.【答案】C
9.【答案】C
10.【答案】A
11.【答案】B
12.【答案】D
13.【答案】正确
14.【答案】正确
15.【答案】错误
16.【答案】n;r;n
17.【答案】58
18.【答案】max
学科网(北京)股份有限公司
$$