内容正文:
第四章 程序设计基础
一、选择题
1.王伟东同学准备用下列的变量名来进行编程,在程序运行中不会报错的是( )
A.we_1 B.3we C.he&w D.input
2.下列有关字符串的说法正确的是( )
A.是不可变的数据 B.只能使用直双引号创建
C.是1个或多个字符组成的序列 D.可使用“{}”对字符串“切片”
3.下列程序的基本结构属于( )
a=9
b=a+1
c=a+b
print(a,b,c)
A.顺序结构 B.分支结构 C.循环结构 D.树形结构
4.变量a,b均为布尔类型,Python表达式功能如下:若变量a,b值相同时表达式结果值为假,变量a,b值不相同时值为真。下列Python表达式描述错误的是( )
A.a!=b B.(a==True and b==False) or (a==False and b==True)
C.(a or b) and (a!=b) D.(a==True and b==False) and (a==False and b==True)
5.在Python中,不同的数据,需要定义不同的数据类型,可用方括号“[]”来定义的是( )
A.列表 B.元组 C.集合 D.字典
6.定义如下函数:
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(3,”A”, ”B”, ”C”),输出的第一行内容是( )
A.B->C B.A->C C.C->A D.A->B
7.有如下Python程序:
def hill(n):
if n==1 or n==2:
return 1
elif n==3:
return 2
else:
return hill(n-1)+hill(n-3)
x=int(input())
print(hill(x))
执行该程序,若输入的值为7,输出的结果是( )
A.7 B.8 C.9 D.10
8.将两个链表a和b按照间隔次序合并为一个链表,并将结果保存到链表a中,具体合并方式为:
原始链表a: 原始链表b:
合并后的链表a:
部分程序如下:
# 读取链表a和b,均存储在列表data中,其中ha表示a的头指针,hb表示b的头指针
p, q = ha, hb
while p!=-1 and q!=-1:
r = data[q][1]
q = r
填入方框处的可选代码有:①data[p][1] = data[q][1] ②data[q][1] = data[p][1] ③data[p][1] = q ④data[q][1] = p ⑤p = data[p][1] ⑥p = data[q][1]
已知链表b的长度不超过链表a,则下列选项中,代码顺序正确的是( )
A.①④⑤ B.②③⑥ C.①④⑥ D.②③⑤
9.运行下列代码,输出结果是:
A.d B.win C.winow D.window
10.在Python中,要读取一个文本文件的内容,可以使用以下哪个语句?( )
A.open() B.read() C.write() D.append()
11.有如下Python程序段:
from random import randint
s, i, ans=1,0,0
k= randint (10,24) # randint(10,24)随机生成10到24(含10和24)之间的整数
for j in range (len (nums)):
s=s * nums [j]
while s >= k:
s=s / nums [i]
i+=1
ans +=j -i+1
若nums的值为[2,3,4,5],执行如下程序段后,变量ans的值不可能是( )
A.4 B.5 C.6 D.7
12.小爱同学在jhyzoj上编写求1-n之间所有数和的程序如图a所示,本地调试报错信息如图b所示。
小爱同学求助编程大牛的你,她的程序代码运行到程序第( )行报错。
A.1 B.3 C.4 D.5
13.在Python中,要使用( )转换为浮点数。
A.for B.int C.str D.float
14.有如下Python 程序段:
import random
a=[]
for i in range(10):
a.append(random.randint(1,100))
i=0
while i <10:
if i==0:
i=i+1
elif a[i-1]<=a[i]:
①
else:
a[i],a[i-1]=a[i-1],a[i]
②
print(a)
执行该程序段实现了随机生成一个数组,并将其元素递增输出的功能。划线处的代码应该是( )
A.① i+=1 ② i=1 B.① i-=1 ② i=1
C.① i+=1 ② i+=1 D.① i-=1 ② i-=1
15.在Python中,以下运行结果为真的是( )
A.3*2>5 and 4//2>2 B.1+1!=2 or 2-1==1
C."python"<"C++" D.not 3>2
16.某校打造智慧食堂,引入了智能结算系统。管理员通过网页平台进行师生账户管理、菜品管理、查询记录。师生在用餐前仅需将盛有菜的碗碟放到结算台,结算台的读写器读取碗碟中的电子标签信息并计算价格,摄像头采集到人脸信息,结算台的软件将人脸信息和消费价格一同发送给服务器,服务器进行人脸识别并返回扣费结果至结算台。
查询菜品信息的部分程序如下:
@app.route("/index")
def menu_list():
conn=sqlite3.connect("db.db")
cur=conn.cursor()
cur.execute("select * from menus")
food=cur.fetchall()
cur.close()
conn.close()
return render_template("list.html",food=food)
下列说法不正确的是( )
A.连接的数据库文件名是db.db B.查询的数据表名是food C.当前视图函数是menu_list() D.当前路由是"/index"
17.有如下VB程序段:
s ="cbafedgh"
m=3:c="":n= Len(s)
For i =1 To n
j=(i-1)Mod 3 + 1
If m> n Then Exit For '退出For循环
c=c+ Mid(s,m-j+1,1)
If j Mod 3 =0 Then m =m+3
Next i
If i < n Then c = Mid(s,i,n-i + 1)+c
执行该程序段后,变量c的值是( )
A.abcdef B.abcdefgh C.ghabcdef D.hgabcdef
18.有如下Python程序段:
a=[10,20,30]
a.append(40)
a.insert(1,50)
a[3]=10
a.remove(10)
del a[1:3]
print(a.pop())
程序运行后的输出结果为( )
A.20 B.30 C.40 D.50
二、填空题
19.Python内置了许多常用函数,如sum(x),max(x),int(x)等,其中int(x)函数用于将变量x转换成 。
20.下列程序,运行结果为( )
import math
x=16
if x<0:
y=abs(x)
else:
y=math.sqrt(x)
print(y)
21.阅读如下一段程序,回答以下问题。
x=20
if x>=10:
value=4*x
else:
value=5*x
print(value)
该程序采用 结构,程序输出结果是
22.已知a=2,b=1,以下Python程序段运行结束后,b的值是 。
23.阅读下列程序,写出运行结果
sum=0
for k in range(1,11):
if k%2==0:
sum=sum+k
print(sum)
程序运行后输出结果是: 。
三、判断题
24.Python类不支持多重继承。( )
25.在Python语言中,若n=6,m=3,则表达式m+3==n and n-3>=m的值为False。( )
26.def块中的代码不是主程序的一部分,会跳过该段代码.( )
27.在Python语言中,数据的输出是通过output()函数实现的。( )
28.Python语言的变量名要区分英文字母的大小写。( )
四、操作题
29.小王使用Flask 框架实现了一个简单的 Web 应用,启动程序后, 打开浏览器输入相应网址, 访问的结果如图a、图 b,在 Python 界面看到访问记录如图c
图 a
图b
图 c
程序代码如下所示
from flask import Flask,request
app = Flask(__name__)
@app.route('/')
def index():
return '我的第一个网络应用'
@app.route(' ① ')
def add():
name = request.args.get("xm")
cont = request.args.get(" ② ")
return name + '的选课: '+cont
if __name__=='__main__':
app.run()
请回答下列问题
(1)该系统网络应用软件的实现架构是 (单选,填字母:A .B/S 架构 / B . C/S 架构)
(2)根据图b,请在划线处填入合适的代码① ②
(3)根据程序代码,路由与视图函数共有 对
(4)根据图c可知,该应用的调试模式状态是 (单选, 填字母: A .打开 / B .关闭)
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题主要考查Python变量的命名。变量的命名规则有:只能以字母或下划线开头,不能包含特殊符号,不能是关键字。因此在程序运行中不会报错的是we_1,故本题选A选项。
2.A
【详解】本题考查Python字符串相关内容。字符串是一种数据类型,用于表示文本数据,字符串是由一系列字符组成的,可以是字母、数字、符号等。在Python中,字符串是不可变的,这意味着一旦创建,就不能修改其内容。A选项,是不可变的数据,选项说法正确。B选项,可使用三种引号( ' 或 ″ 或''')来创建字符串,选项说法错误。C选项,字符串是0个或多个字符组成的序列,选项说法错误。D选项,使用“[]”对字符串“切片”,选项说法错误。故本题答案是A选项。
3.A
【详解】本题主要考查Python程序基本结构。程序基本结构有:顺序结构、分支结构、循环结构,由图可知,该程序的基本结构是顺序结构,故本题选A选项。
4.D
【详解】本题考查Python基础。
选项D,变量a和b值不同时,逻辑表达式(a==True and b==False)和(a==False and b==True)必然有一个为逻辑假,故选项D返回逻辑假与题意不符。故正确答案为:选项D。
5.A
【详解】本题主要考查Python数据类型。列表用方括号“[]”来定义,元组可以用圆括号“()”来定义,集合可以用大括号“{}”来定义,字典用大括号“{}”来定义,故本题选A选项。
6.B
【详解】本题考查Python程序设计相关内容。该函数为递归函数,描述的是汉诺塔游戏:有三根相邻的柱子,标号为A、B、C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,借助B柱子,将所有盘子一个一个移动到柱子C上,并且每次移动时,同一根柱子上都不能出现大盘子在小盘子上方的情况。本题盘子个数为3,调用move函数时,move(3,“A”, “B”, “C”)运行过程为:。第一行内容是A->C。故本题答案是B选项。
7.C
【详解】本题考查Python函数相关内容。分析程序可知,该函数调用为递归调用。x值为7,则hill(7)=hill(6)+hill(4),分别计算:(1)hill(6)=hill(5)+hill(3)=hill(4)+hill(2)+hill(3)=hill(3)+hill(2)+hill(2)+hill(3)=2+1+1+2=6。(2)hill(4)=hill(3)+hill(1)=2+1=3。所以hill(7)=6+3=9。故本题答案是C选项。
8.B
【详解】本题考查Python程序设计相关内容。本题涉及到链表的相关知识。
根据代码指针情况,链表的初始情况如上图所示。循环体中,要把D和E连接到ha链表中,D链接到A和B之间,E链接到B和C之间。所以第一步让D节点的指针域指向B节点,即执行data[q][1]=data[p][1],如下图1步骤①第二步要让A节点的指针域指向q,即执行代码data[p][1]=q,如下图1步骤②,至此D节点已经链入ha链表。接下来我们要做的工作是为接入E节点做准备,首先让p指向B节点(因为E要链接到B后面),此时B节点没有指针直接指向,但他的地址是q指针指向的D节点的指针域的值,即可以执行p=data[q][1]。接下来把q指针指向r,即执行代码q=r(题中已有代码),接下来第二次循环即可实现把q指针指向的E节点链接到p指针指向的B节点后面。操作顺序为②③⑥。
故本题答案为B选项。
9.B
【详解】本题主要考查Python程序执行。分析程序可知,变量c依次从字符串“window”中取字符,如果c的值是“d”,则循环结束,如果不是则输出该字符,故输出结果是:win,故本题选B选项。
10.B
【详解】本题主要考查Python文件操作函数。open ()是文件打开函数,read ()是文件读函数、write ()是文件写函数,append()是追加函数。故本题应选B。
11.A
【详解】本题考查Python程序。初始化变量s=1,i=0,ans=0。生成随机数k,范围在10到24之间。遍历nums列表,对于每一个元素执行以下操作:更新s的值为s*nums[j]。通过while循环,如果s>=k,则将s除以nums[i]并增加i的值。计算ans的值为ans+(j-i+1)。具体步骤:j=0,ans+=0-0+1=1;j=1,ans+=1-0+1=2;j=2,如果k=10,那么s>=10,s=24/2=12,i=1;s=12/3=4,i=2,跳出循环;如果k=24,那么s=24,s>=24,s=24/2=12,i=1,跳出循环;ans+=2-i+1,根据不同的k值,i的值不同,如果k=10,那么i=2,ans+=2-2+1=1;如果k=24,那么i=1,ans+=2-1+1=2;此时ans的值最少增加1。j=3,如果k=10,s=4*5=20,s>=10,s=20/4=5,i=3,跳出循环;如果k=24,s=12*5=60,s>=24,s=60/3=20,i=2,跳出循环;ans+=3-i+1,根据不同的k值,i的值不同,如果k=10,那么i=3,ans+=3-3+1=1;如果k=24,那么i=2,ans+=3-2+1=2;此时ans的值最少增加1。从上面的分析可以看出:当j=0和j=1时,ans的值已经为3。当j=2和j=3时,ans至少增加1。所以,ans的值最小是5(3+1+1),即不可能是4。
12.B
【详解】本题考查的是Python程序调试运行。由图a可知,错误是因为i再之前没有赋值,导致错误。故她的程序代码运行到程序第3行报错。选B。
13.D
【详解】本题考查的是Python函数。float()函数用于将整数和字符串转换成浮点数。故本题应选D。
14.A
【详解】本题主要考查Python程序执行与调试。分析程序,该程序段实现了随机生成一个数组,并将其元素递增输出的功能,如果a[i-1]<=a[i],满足升序,不用交换,i递增,继续下一个元素的比较,即①处填i+=1;如果不满足a[i-1]<=a[i],则交换以完成升序,同时i赋值为1从头开始继续比较判断,即②处填i=1,故本题选A选项。
15.B
【详解】本题考查Python表达式。A选项,3*2=6,6>5为真,4//2=2,2>2为假,and运算中全真才为真,所以3*2>5 and 4//2>2为假。B选项,1+1=2,1+1!=2为假,2-1=1,2-1==1为真,or运算中一真则真,所以1+1!=2 or 2-1==1为真。C选项,在Python中比较字符串大小是按照字符的ASCII码值比较,'p'的ASCII码值大于'C'的ASCII码值,所以"python"<"C++"为假。D选项,3>2为真,not真为假,所以not 3>2为假。故答案为:B。
16.B
【详解】本题考查Python应用。在程序中执行的查询语句是"select * from menus",表名是"menus",而不是"food"。故答案为:B。
17.C
【详解】本题考查执行VB程序相关的知识点
第一次循环 m-j+1 = 3,截取s中的a赋值给c
第二次循环 i=2,j=2,m-j+1=2,c=ab
第三次循环 i=3,j=3,m-j+1=1,c=abc,m=6
第四次循环 i=4,j=1,m-j+1=6,c= abcd
第五次循环 i=5,j=2,m-j+1=5,c= abcde
第六次循环 i=6,j=3,m-j+1=4,c = abcdef ,m=9
第七次循环 i=7,j=1,退出循环 c= ghabcdef
故本题选C
18.C
【详解】本题考查的是python程序的列表的操作。程序注释见下图:
故本题选项C正确。
19.整型
【详解】本题主要考查Python常用函数的描述。sum函数用于求和,max函数用于求最大值,int函数用于转换为整型。
20.4.0
【详解】本题主要考查Python程序的执行。x=16,不满足if判断条件,执行else部分y=math.sqrt(x)=4.0,故运行结果是4.0。
21. 分支 80
【详解】本题主要考查Python分支结构的应用。①分析程序可知,该程序采用分支结构。②当输入x=20时,满足if条件,执行value=4*x=80,故输出结果是80。
22.4
【详解】本题考查的是Python循环语句。初始a=2,b=1。
a>=b成立,第一次循环,执行b=a*b=2*1=2;
a>=b成立,第二次循环,执行b=a*b=2*2=4;
a>=b不成立,跳出循环,故b的值是4。
23.30
【详解】本题考查的是Python循环语句。sum=0,变量i的范围是1~10,如果是偶数,则执行sum=sum+i,故程序执行完,sum=sum+i=0+2+4+6+8+10=30。
24.错误
【详解】本题考查Python基础。
实际上,Python 类是支持多重继承的。多重继承允许一个类继承自多个父类,这使得类可以继承多个父类的属性和方法。在 Python 中,这通过使用逗号分隔的基类列表在类定义时指定。故错误。
25.错误
【详解】本题主要考查Python表达式的运算。逻辑运算符or两边值均为假时值才为假,否则值为真;逻辑运算符and两边值均为真时值才为真,否则值为假,not是取反。若n=6,m=3,则表达式m+3==n值为True,表达式 n-3>=m值为True,则表达式m+3==n and n-3>=m的值为True,故表述错误。
26.对
【详解】本题考查Python相关知识。def是自定义函数,是用户自己编写的一段程序,一般包括函数名,参数,返回值和函数体等四部分,其中参数和返回值可根据需要进行定义。def块中的代码不是主程序的一部分,会跳过该段代码。题干说法正确。
27.错误
【详解】本题考查的知识点是Python语言中的输出语句。在Python语言中,实现数据的输出是使用print函数,故答案为错误。
28.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
29. A /sub xk 2 B
【详解】本题主要考查Python程序Flask框架的应用。
(1)通过浏览器访问Web服务器,所以该系统网络应用软件的实现架构是B/S架构,选A选项。
(2)由图b可知,路由是/sub,故第一空填/sub。变量cont获取选课信息,故第二空填xk。
(3)根据程序代码,路由与视图函数共有2对。
(4)根据图c “Debug mode:off”可知,该应用的调试模式状态是关闭,故选B选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$