内容正文:
教科版(2019)必修一2.3周而复始的循环同步训练
一、选择题
1.现有近似求ex的公式如下:
实现上述功能的Python程序段如下:
x=int(input("请输入x="))
n=int(input("请输入n="))
e=1;p=1;i=0
while i<n:
print(e)
方框处的代码由以下三部分组成:
①i=i+1 ②p=p*i ③e+=x**i/p
下列选项中,代码顺序正确的是( )
A.①③② B.①②③ C.③①② D.③②①
2.有如下Python程序段:
import random
a=[0,0,0,0,0,0]
for i in range(6):
x = random.randint(1, 10)
if i % 2 == 0:
a[i] = 2 * x + 1
elif x % 2 == 0:
a[i] = x // 2
else:
a[i] = x - 1
执行该程序段后,a[0]~a[5]各元素可能的值是( )
A.3,3,9,0,19,8 B.5,0,9,4,13,10
C.9,3,11,5,17,7 D.3,2,7,4,22,6
3.计算两数的最小公倍数算法如下:
a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
k = 2
Lcd = 1
while a != 1 or b != 1:
if a % k == 0 or b % k == 0:
if : a = a // k
if : b = b // k
else:
print("最小公倍数为:", Lcd)
方框中的代码由以下四部分组成:
①Lcd = Lcd * k ②k = k + 1 ③b % k == 0 ④a % k == 0
则(1)(2)(3)(4)处代码顺序依次为( )
A.③④②① B.③④①② C.④③②① D.④③①②
4.有如下Python程序段:
import random
s1="PROGRESS";s2=""
f=[False]*8
for i in range(1,5):
t=random.randint(0,3)*2+1
while f[t]:
t=random.randint(0,3)*2+1
f[t]=True
s2=s2+s1[t]
print(s2) 执行该程序段后,显示的值不可能是( )
A.EGRS B.GERS C.SEOR D.RESG
5.现有鸡兔同笼,上有11头,下有28脚。试计算笼中鸡、兔各有多少只(设鸡有a只,兔有b只)。下列代码中不能正确计算鸡、兔数量的是( )
A. B.
C. D.
6.列表 a 为某学生一天主要运动消耗热量的情况,列表 b 为各项运动,为了求出这六项运动一共消耗多少热量,空白处代码正确的是( )
a={'慢走':95,'自行车':100,'羽毛球':122,'爬楼梯':180,'跳绳':245,'慢跑':221}
b=['慢走','自行车','羽毛球','爬楼梯','跳绳','慢跑'] s=0
for i in ① :
②
print('总消耗量为:'+ ③ )
A.①b ②s=a[i]+s ③ s B.①b ②s+=a[i] ③ str(s)
C.①a ②s=a[i]+s ③ s D.①a ②s+=a[i] ③ str(s)
7.有如下Python程序:
import random
a=[0,0,0,0,0,0]
for i in range(6):
a[i]=random.randint(1,10)
for i in range(0,6):
if i%2==0 and a[i]%2==0:
a[i]//=2
else:
a[i]+=1
print(a)
执行程序后,列表a各元素可能是( )
A.1,5,1,11,2,11 B.7,2,8,10,5,9 C.6,9,3,7,8,12 D.3,9,0,8,2,7
8.有如下Python程序段:
dic={1:"2023",2:["杭州亚运会"],3:"心心相融@未来",4:["Heart to Heart","@Future"]}
cnt=0
for i in range(3):
cnt+=len(dic[i+1])
print(cnt)
该程序段运行后,输出的结果是( )
A.16 B.12 C.10 D.3
9.有如下Python程序段:
s="PYTHON"
ch=""
i=0
while i<len(s):
n=int(input("请输入数字:"))
t=(n+1)%6
ch=ch+s[t]
i=i+1
print(ch)
运行程序后,依次输入3、1、4、5、2、6,输出ch的值是( )
A.THONPY B.OTNPHY C.YPNOHT D.TOPHNY
10.在Python语言 中,下面程序的屏幕输出结果是( )
s=1
for i in range(1, 9,2):
s=s*2
print (s)
A.2 B.8 C.16 D.32
11.某Python程序如下:
list1=[3,4,8,6,9]
c=0
i=0
while i<len(list1) :
if list1[i]%3==0:
c+=list1[i]
else:
c-=list1[i]
i+=1
print(c)
程序运行后,输出的结果是( )
A.5 B.6 C.7 D.9
12.阅读下列Python程序块,运行结果为( )
s=0
while s<=20:
print(s)
s=s+7
A. B. C. D.
13.下列程序运行后结果是( )
sum=0
for i in range(1,7,2):
sum = sum+i
print(sum)
A.4 B.7 C.9 D.16
14.有如下Python程序段:
s="VictoryOnTheWay"#'A'的ASCII值为65,"a"的ASCII码值为97
mx=""
pre=0
for i in range(1,len(s)):
if ord(s[i]) < 97:
if mx<s[pre:i]:
mx=s[pre:i]
pre=i
print(mx)
A.Victory B.On C.The D.Way
15.有如下Python程序段:
import random
s="12345678"
g=""
for i in range(3):
n=len(s)
pos=random. randint(1,n-1)
g+=s[pos]
s=s[0:pos]+s[pos+1:n]
print(g)
在该程序段执行时,变量g的值可能为( )
A."542" B."138" C."336" D."15"
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python程序执行与调试。根据while循环语句的结构,由于变量i的的初始值为0,所以在循环内需要先执行i=i+1,然后求表达式中的分母,p=p*i,最后执行累加表达式e+=x**i/p,所以选项B符合题意。故选B。
2.A
【详解】本题考查的是Python循环及选择语句。x = random.randint(1, 10)生成1~10的随机整数,阅读程序可知列表a中索引为0、2、4为奇数且值在3~21,故选项D不可能(a[4]=22>21);列表a中索引为1、3、5的值在0~9,故选项B不可能(a[5]=10>9);选项C中a[5]=7,倒推x的值可能是8(执行 a[i] = x - 1后得到7),8是偶数不是奇数不可能执行 a[i] = x - 1,那么x的值可能是14(执行 a[i] = x // 2后得到7),这与x的取值范围1~10相矛盾,故也不能执行 a[i] = x // 2,既a[5]不可能是7,选项C不可能,排除BCD,本题应选A。
3.D
【详解】本题考查的是Python循环语句。分析程序可知,采用的是分解质因数法来求最小公倍数。如果k是a的质因数,求下一个质因数前,则要将执行a // k;如果k是b的质因数,求下一个质因数前,则要将执行b // k;相同的质因数只取1个,各自独有的质因数全部乘上,得出的值就是最小公倍数,故(1)(2)(3)依次为④a % k == 0③b % k == 0①Lcd = Lcd * k,逐个验证是否为a、b质因数,故(4)处代码为 ②k = k + 1。选项D正确。
4.C
【详解】本题考查Python程序设计相关内容。由 t=random.randint(0,3)*2+1可知t可能是1,3,5,7,故s2中的字符可能是“RGES”,由while循环可知,字符不能重复。选项C字符中含有O不可能,故本题应选C。
5.C
【详解】本题考查枚举算法及Python程序实现。选项C中,//是整除运算符,因此当运算出现小数时会取整,因此可能会出现错误结果,如a=9时,28-2*9=10,b=(28-2*9)//4=2,验证脚:9*2+2*4=26,显然错误,正确结果是:鸡有8只,兔有3只。其余选项均可以,故选C。
6.B
【详解】本题考查Python循环结构的应用。a是字典数据类型,即各项运动对应的消耗热量,循环依次从b中取出各项运动,即①填b。循环体使用变量s统计消耗的热量,即②处填s+=a[i]。最后将s转换为字符型输出,故③处填str(s)。故选B。
7.A
【详解】本题考查的是Python循环语句。random.randint(1,10)生成1~10的随机整数。经 a[i]//=2或 a[i]+=1不可能为0、12,故选项C、D不可能;选项A中,a[0]=7,只能由a[i]+=1得到结果(如果由a[i]//=2得到,则初始a[0]=14,超出1~10),故初始a[0]=6,初始a[0]=6满足if条件,应执行a[i]//=2,与执行a[i]+=1矛盾了,故选项B不可能。本题应选A。
8.B
【详解】本题考查Python程序执行。分析程序,i依次取0、1、2,i+1依次对应1、2、3。for循环实现统计字典dic中键1、2、3对应键值长度之和,dic={1:"2023",2:["杭州亚运会"],3:"心心相融@未来",4:["Heart to Heart","@Future"]},则cnt=0+4+1+7=12。故选B。
9.B
【详解】本题考查Python程序的执行。依次输入3、1、4、5、2、6,执行t=(n+1)%6后对应t的值依次是4、2、5、0、3、1,将索引为t的元素s[t]依次拼接到变量ch中,得到ch的值是OTNPHY。故选B。
10.C
【详解】本题考查是Python循环语句。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop:计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。range(1, 9,2)生成的序列数是:1,3,5,7,故s=1*2*2*2*2=16,选项C正确。
11.B
【详解】本题考查的是Python循环与选择语句。阅读程序,可知程序功能是对列表list1中判断,如果能被3整除,则求和,否则减去该值。list1=[3,4,8,6,9],故c=3-4-8+6+9=6。故本题应选B。
12.A
【详解】本题考查Python循环结构的应用。s初值为0,循环条件是s<=20,先输出s的值再将s递增7,因此输出s的值依次是0、7、14。故选A。
13.C
【详解】本题考查Python循环结构的应用。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。变量i依次取1、3、5,因此sum=sum+i=0+1+3+5=9。故选C。
14.A
【详解】本题考查的是Python应用。阅读程序可知,从字符串s的i字母开始,如果是大写字母,并且mx<s[pre:i],则mx=s[pre:i],直到字符串s结束。s="VictoryOnTheWay",第一次碰到大写字母O,mx<s[pre:i]成立,mx=s[pre:i]="Victory";第二次大写字母W,"W">"Victory",不执行mx=s[pre:i],故最后输出:Victory。选项A正确。
15.A
【详解】本题考查Python程序执行与调试。s="12345678", n=len(s)=8, pos=random. randint(1,n-1)=random. randint(1,7),即pos是随机生成1~7之间的整数。然后执行g+=s[pos],再执行 s=s[0:pos]+s[pos+1:n],即s中去掉下标为pos的元素,一共循环3次,因此g中元素有3个,且没有重复,排除C、D选项。字符串索引从0开始,根据pos值可知取不到第一个元素"1",排除B选项,因此变量g的值可能为"542"。故选A。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$