3、某二叉树共有730个结点,其中度为1的结点有30个,则叶子结点个数为()。
A.351
B.1
C.350
D.不存在这样的二叉树
【您的选择】D 恭喜您答对了!
【题目解析】
在二叉树中,总结点数=叶子结点数+度为1的结点数+度为2的结点数,所以度为0和度为2的结点,共有730-30=700个,而二叉树又有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以度为0的结点个数加上度为2的结点个数之和一定是奇数,不可能是700,所以选D。
13、以下关于Python字符串的描述中,错误的是()。
A.在Python字符串中,可以混合使用正整数和负整数进行索引和切片
B.Python字符串采用[N:M]格式进行切片,获取字符串从索引N到M的子字符串(包含N和M)
C.字符串'C:\python.py'中第一个\表示转义符
D.空字符串可以表示为""或''
【您的选择】D 很抱歉,您答错了!
【正确答案】 B
【题目解析】
Python字符串采用[N:M]格式进行切片,获取字符串从索引N到M的子字符串(包含N,不包含M)。本题选B选项。
19、以下代码的输出结果是()。
def demo( b = 2, a = 4):
global z
z += a * b
return z
z = 10
print(z, demo())
A.10 18
B.18 18
C.UnboundLocalError
D.18 None
在 print(z, demo()) 中,先打印的是 z 的初始值,然后再调用函数并打印函数的返回值,这样的顺序解释了为什么输出结果是 10 18
26、当用户输入2时,下面代码的输出结果是()。
try:
n=input("请输入一个整数:")
def fun (n):
return n**5
fun(n)
except:
print("程序执行错误")
A.10
B.32
C.程序没有任何输出
D.程序执行错误
【您的选择】B 很抱歉,您答错了!
【正确答案】 D
【题目解析】
input()函数从控制台获得用户的一行输入,无论用户输入什么内容,input()函数都以字符串类型返回结果。当用户输入2时,n='2',这是字符2,不是数字2,不能进行数值运算,故程序会执行except后面的语句,输出程序执行错误。本题选D选项。
32、以下代码的输出结果是()。
L1 =['abc', ['123','456']]
L2 = ['1','2','3']
print(L1 > L2)
A.TypeError: '>' not supported between instances of 'list' and 'str'
B.True
C.False
D.1
【您的选择】C 很抱歉,您答错了!
【正确答案】 B
【题目解析】
本题考查的是两个列表的大小比较方法,列表比较大小可采用从左到右依次比较元素大小,若产生结果则不需继续比较。本题第一个元素是‘abc’和‘1’比较,字符串比较大小也是采用此方法,所以‘a’比‘1’字符大,则L1大于L2。所以本题答案选B。
7、基本路径测试是属于()。
A.黑盒测试方法且是静态测试
B.黑盒测试方法且是动态测试
C.白盒测试方法且是动态测试
D.白盒测试方法且是静态测试
【您的选择】D 很抱歉,您答错了!
【正确答案】 C
【题目解析】
白盒测试法主要有逻辑覆盖、基本路径测试等。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。基本路径测试根据软件过程性描述中的控制流确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对一条独立执行路径进行测试。因此基本路径测试属于动态测试。
以下语句的输出结果是:
dd ={'chinese':200,'pe':187,'Gana':930}
print(sorted(dd.keys()))
A.报错
B.['Gana','chinese','pe']
C.'Gana','chinese','pe'
D.dict_keys(['Gana','chinese','pe'])
按照键的字典序排序是指按照字母顺序对键进行排序,其中字母表的顺序是 A, B, C, ..., Z, a, b, c, ..., z。在这个顺序中,大写字母优先于小写字母。
对于给定的字典 dd = {'chinese': 200, 'pe': 187, 'Gana': 930},其键包括 'chinese', 'pe', 和 'Gana'。根据字典序排序规则:
'Gana' 开始于大写字母 'G',排在小写字母 'c' 和 'p' 的前面,因此在排序时会排在最前面。
接着是 'chinese',以小写字母 'c' 开头。
最后是 'pe',以小写字母 'p' 开头。
因此,对 dd.keys() 应用 sorted() 函数后,得到的排序结果是 ['Gana', 'chinese', 'pe']。
这种排序顺序是Python字典的默认行为,它不是基于键的插入顺序而定,而是根据键的字典序进行排序。
I/O方式中的程序中断方式是指()。
A.当出现异常情况时,计算机将停机
B.当出现异常情况时,计算机将启动I/O设备
C.当出现异常情况时,CPU暂时停止当前程序的运行,转向执行相应的服务程序
D.当出现异常情况时,CPU将终止当前程序的运行
randint(a,b)取值范围
random.randint(a,b)前闭后闭
在python中的random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: [a,b]
np.random.randint(a,b)前闭后开
range()前闭后开
基本操作
41、在考生文件夹下有个文件PY101.py,在横线处填写代码,完成如下功能。接收用户输入的一个小于20的正整数,在屏幕上逐行递增显示从01到该正整数,数字显示的宽度为2,不足位置补0,后面追加一个空格,然后显示'>'号,'>'号的个数等于行首数字。例如: 输入∶ 3 输出: 01 > 02 >> 03 >>>
#
# 在____________上补充代码
#
n = input('请输入一个正整数:')#10
for i in range(eval(n)):#9
print('{:02}'.format(i+1),end="")
for j in range(i+1):
print(">",end="")
print("")
在考生文件夹下有个文件PY101.py,在横线处填写代码,完成如下功能。接收用户输入的一个小于20的
正整数,在屏幕上逐行递增显示从01到该正整数,数字显示的宽度为2,不足位置补0,后面追加一个空格,然后显示’>’号,’>'号的个数等于行首数字。例如: 输入:3输出:
01>
02>>
03>>>
n = input('请输入一个正整数:')
for i in range(eval(n)):
print('{:02}'.format(i+1),end="" )
print(">"*(i+1))
简单应用
1画图 2计算题
f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:
num = len(name.split(" "))
#print(len(num))
if num==1:
n+=1
print("有效票{}张".format(n))
如果不用num会怎么样,结果相同,但是代码不一样
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
f = open("vote.txt")
names = f.readlines()
f.close()
n = 0
for name in names:
if len(name.split(" ")):
n+=1
print("有效票{}张".format(n))
综合应用
46、考生文件夹下存在三个Python源文件,分别对应三个问题,请按照文件内说明修改代码,实现以下功能:
二千多年前希腊的天文学家希巴克斯命名十二星座,它们是水瓶座、双鱼座、白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座。给出一个CSV文件(PY301-SunSign.csv),内容示例如下:
序号,星座,开始月日,结束月日,Unicode1,
1水瓶座,120,218,9810
2,双色座,219,320,9811
3,白羊座,321,419,9800
4,金牛座,420,520,9801
5,双子座,521,621,9802...(略)
以第1行为例,120表示1月20日,218表示2月18日,9810是Unicode码。
问题1(5分)︰在PY301-1.py文件中修改代码,读入CSV文件中数据,获得用户输入。根据用户输入的星座名称,输出此星座的出生日期范围。参考输入和输出示例格式如下:
请输入星座中文名称(例如,双子座)︰双子座双子座的生日位于521-621之间
问题1
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
import os
n=input("请输入中文名称 例如: 双子座")
ls = []
items={}
with open("PY301-SunSign.csv","r") as f:
lines=f.read()
lines=lines.split("\n")
for i in range (1,13):
line=lines[i].split(",")
print(line)
xuhao=line[0]
name=line[1]
qishi=line[2]
jieshu=line[3]
uni=line[4]
items[name]={"序号":xuhao,"星座":name,"开始月日":qishi,"结束月日":jieshu,"Unicode":uni}
#print(items)
if n in items:
print("seach",items[n])
print("{}的生日位于{}-{}之间".format(items[n]["星座"],items[n]["开始月日"],items[n]["结束月日"]))
else:
print("没有找到")
问题2(10分)∶在PY301-2.py文件中修改代码,读入CSV文件中数据,获得用户输入。用户键盘输入一组范围是1-12的整数作为序号,序号间采用空格分隔,以回车结束。屏幕输出这些序号对应的星座的名称、字符编码以及出生日期范围,每个星座的信息一行。本次屏幕显示完成后,重新回到输入序号的状态。 参考输入和输出示例格式如下:请输入星座序号(例如,5) : 5 10
双子座(9802)的生日是5月21日至6月21日之间
天蝎座(9807)的生日是10月24日至11月22日之间
题目2
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
ls = []
ns=input("请输入星座序号(例如,5) : 5 10")
ls = []
items={}
with open("PY301-SunSign.csv","r") as f:
lines=f.read()
lines=lines.split("\n")
for i in range (1,13):
line=lines[i].split(",")
print(line)
xuhao=line[0]
name=line[1]
qishi=line[2]
jieshu=line[3]
uni=line[4]
items[xuhao]={"序号":xuhao,"星座":name,"开始月日":qishi,"结束月日":jieshu,"Unicode":uni}
#print(items)
for n in ns.split():
print(n)
if n in items:
print("seach",items[n])
print(items[n]["星座"])
print("{}({})的生日是{}月{}日至{}月{}日之间".format(items[n]["星座"],items[n]["Unicode"],items[n]["开始月日"][0],items[n]["开始月日"][-2:],items[n]["结束月日"][0],items[n]["结束月日"][-2:]))
else:
print("没有找到")
问题3(5分)︰在问题2的基础上,在PY301-3.py文件中修改代码,对键盘输入的每个序号做合法性处理。如果输入的数字不合法,请输出“输入星座编号有误!”,继纹输出后续信息,然后重新回到输入序号的状态。 参考输入和输出示例格式如下: 请输入星座序号(例如,5) : 5 14 11 双子座(9802)的生日是5月21日至6月21日之间
输入星座序号有误!
射手座(9808)的生日是11月23日至12月21日之间