友链提交
请认真填写以下信息,谢谢!

博客信息

HoshinoAi
(请填写完整的网址,例如:https://www.example.com)
(贵站展示本站链接的页面地址,一般是友链页面,填写后将自动验证友链关系有效性)
(用于抓取文章)
(用于接收通知)
菜单
本页目录

一、单选题

  1. 答案:C
    • 解析:在try块中,a ** b尝试对字符串'2''4'进行指数运算,这是不允许的,会引发类型错误,所以会执行except块中的代码,打印'程序出错!'
  2. 答案:A
    • 解析enumerate函数会将可迭代对象(这里是列表aa)组合为索引序列,返回一个包含索引和对应元素的元组列表。所以list(enumerate(aa))会得到[(0, '春'), (1, '夏'), (2, '秋'), (3, '冬')]
  3. 答案:D
    • 解析min(s)返回字符串s中的最小字符'1'max(s)返回字符串s中的最大字符'9'min(s) + max(s)相当于'1' + '9',结果为'19'
  4. 答案:C
    • 解析:要将字符串写入文件,应该使用文件对象的write方法,f.write('Hello Tom!')可以将字符串'Hello Tom!'写入文件。A选项f.write(['Hello'], [Tom!])的参数格式错误;B选项f.read('Hello', 'Tom!')是用于读取文件内容,而不是写入;D选项f.read('Hello Tom!')也是读取操作,不符合要求。
  5. 答案:C
    • 解析:A选项int('16', 10)将十进制字符串'16'转换为十进制整数,结果为16;B选项int('110', 2)将二进制字符串'110'转换为十进制整数,计算结果为(1×22 + 1×21 + 0×20 = 6);C选项int('11', 16)将十六进制字符串'11'转换为十进制整数,计算结果为(1×161 + 1×160 = 17);D选项int('1111', 2)将二进制字符串'1111'转换为十进制整数,计算结果为(1×23 + 1×22 + 1×21 + 1×2^0 = 15)。所以最大的数值是C选项。
  6. 答案:A
    • 解析:十六进制数转换为二进制数的方法是将每一位十六进制数转换为对应的4位二进制数。十六进制数7E中,7转换为二进制是0111E(即14)转换为二进制是1110,所以7E转换为二进制数是01111110,共7位。
  7. 答案:B
    • 解析int('13', 8)表示将八进制字符串'13'转换为十进制整数,计算方法为(1×81 + 3×80 = 11)。
  8. 答案:B
    • 解析:A选项,程序确实是按行读取文本文件中的内容,并将每行内容作为一个元素添加到列表res中,功能描述正确;B选项,readlines方法用于读取文件的所有行并返回一个包含每行内容的列表,这里用法正确,如果改成readline只能读取一行内容,不符合程序功能需求,所以该选项说法错误;C选项,从代码中可以看出文件是直接通过文件名打开的,没有指定路径,通常情况下会在程序代码文件所在的文件夹下查找文件,所以该文本文件和程序代码文件在同一文件夹下的说法合理;D选项,'r'模式是以只读方式打开文件,不允许修改文件内容,描述正确。
  9. 答案:B
    • 解析:A选项,写入文本文件的一般步骤确实是打开文件、写入内容、关闭文件,描述正确;B选项,f.write('\n'.join(s))会将列表s中的元素用换行符连接后写入文件,而f.write(' '.join(s)+'\n')会将列表s中的元素用空格连接后再加上换行符写入文件,两者功能不同,该选项说法错误;C选项,write方法的参数是一个字符串,writelines方法的参数可以是字符串列表(或其他可迭代的字符串序列),描述正确;D选项,代码通过'\n'.join(s)将列表中的诗句用换行符连接后写入文件,实现了将列表中的诗句按行写入文本文件的功能,描述正确。
  10. 答案:C
  • 解析:A选项,if…elif…else…主要用于条件判断,而不是专门的异常处理结构;B选项,异常处理可以使程序在遇到异常时采取相应措施,避免程序因异常而突然终止,但不能保证程序在任何情况下都不会终止运行,例如遇到无法处理的严重系统错误等情况;C选项,通过异常处理语句,当程序输入错误等异常情况发生时,可以捕获异常并进行处理,让程序继续执行后续可能的操作,而不是直接崩溃,描述正确;D选项,当遇到错误语句时,程序会先尝试执行try代码块中的语句,如果发生异常则根据异常类型判断是否与except块匹配,若匹配则执行except块中的语句,而不是直接执行try代码块语句(如果错误导致try块中的语句无法正常执行下去,则会中断try块的执行并跳转到相应的except块)。
  1. 答案:C
  • 解析list(scores)会将字符串scores中的每个字符作为一个元素创建列表,因为字符串scores = "9,7,8,9,6,5",所以结果为['9', ',', '7', ',', '8', ',', '9', ',', '6', ',', '5']
  1. 答案:D
  • 解析:A选项,len("13" + "4") = len("134") = 3,不大于14,结果为False;B选项,min("banana")返回字符串'banana'中的最小字符'a'ord('a') = 97,不小于65,结果为False;C选项,sum([13, 14, 16]) = 43,不等于53,结果为False;D选项,any(["a", "b", "", "d"])只要列表中有一个元素为True(非空字符串在布尔上下文中为True),则返回True,这里列表中有非空字符串,所以结果为True
  1. 答案:C
  • 解析:A选项,bool函数在没有参数时,返回False,而不是出错;B选项,ascii函数返回一个表示对象的可打印字符串,ord函数返回字符的ASCII码值,功能不同;C选项,filter函数用于过滤序列,根据指定的函数条件过滤掉不符合条件的元素,一般由两个参数组成,即函数和序列,描述正确;D选项,map函数用于对可迭代对象中的每个元素应用指定的函数,而不是画地图。
  1. 答案:A
  • 解析range(8)等价于range(0, 8),表示生成一个从0开始(包含)到8结束(不包含)的整数序列。B选项range(1, 8)生成的序列是从1开始到7结束;C选项range(0, 8, 2)生成的序列是0, 2, 4, 6;D选项range(1, 9)生成的序列是从1开始到8结束。
  1. 答案:D
  • 解析map(int, ['20', '2', '3'])会将列表中的每个字符串元素转换为整数,然后将转换后的整数分别赋值给xyz,即x = 20y = 2z = 3,所以x + y + z = 20 + 2 + 3 = 25
  1. 答案:A
  • 解析:A选项,如果把第一个x += 1改成break,那么当找到第一个满足条件的x时就会跳出循环,程序只会输出一个结果,而不是像原程序那样不断寻找所有满足条件的数,所以该选项说法正确;B选项,括号内应填入的代码是x % 3 == 2 and x % 5 == 3 and x % 7 == 2,用于判断x是否满足“三三数之剩二,五五数之剩三,七七数之剩二”的条件,该选项说法正确;C选项,原程序中while x > 0x在循环中不断增加,没有终止条件,所以是个死循环,该选项说法正确;D选项,由于是死循环且不断寻找满足条件的数,所以会有无穷多个输出,该选项说法正确。本题要求选择说法不正确的选项,所以答案是A。
  1. 答案:B
  • 解析:A选项,二维数据不仅仅是由两个一维数据组成,它可以由多个一维数据组成;B选项,二维数据由多个一维数据组成,描述正确;C选项,二维数据的每一个一维数据之间可以采用多种方式分隔,不一定只能用逗号,例如在某些情况下可以用制表符等;D选项,二维数据很适合以表格的形式进行存储,这样可以清晰地表示行和列的数据关系。
  1. 答案:C
  • 解析read方法用于读取文件的全部内容并返回一个字符串;readline方法用于读取文件的一行内容;readlines方法用于读取文件的所有行并返回一个包含每行内容的列表,所以如果要将整个文件里的内容读取到一个列表中,应该使用readlines方法;flush方法用于刷新文件缓冲区,与读取文件内容到列表无关。
  1. 答案:C
  • 解析abs(-1.00)返回-1.00的绝对值,结果为1.0(浮点数形式)。A选项-1.00是原数,不是绝对值;B选项1是整数形式,这里结果应该是浮点数1.0;D选项1.00虽然数值正确,但通常abs函数返回的浮点数形式为1.0。
  1. 答案:C
  • 解析divmod(y, x)返回的结果是(y // x, y % x),即y除以x的商和余数。A选项(x // y, x % y)顺序错误;B选项(x % y, x // y)顺序错误;D选项(y % x, y // x)顺序错误。
  1. 答案:C
  • 解析input函数返回用户输入的内容,无论用户输入的是数字还是其他字符,都以字符串形式返回。所以输入89.5后,a的数据类型是str
  1. 答案:A
  • 解析range(4)生成的序列是[0, 1, 2, 3]list(range(4))将其转换为列表,结果为[0, 1, 2, 3]
  1. 答案:A
  • 解析:暴力破解通过反复尝试各种可能的密码来进行破解,这种方法是列举所有可能的情况,属于枚举算法。解析算法是用数学公式或表达式来解决问题;排序算法用于对数据进行排序;对分查找算法要求数据有序,且不适合用于密码破解这种情况(因为密码空间通常很大,无法预先确定有序范围)。
  1. 答案:C
  • 解析:冒泡排序的第一轮会比较相邻的元素,如果顺序不对则交换。原始列表"6,1,3,2,8",第一轮比较过程为:比较6和1,交换得到"1,6,3,2,8";比较6和3,交换得到"1,3,6,2,8";比较6和2,交换得到"1,3,2,6,8";比较6和8,不交换。所以第一轮过后排序的结果是"1,3,2,6,8"
  1. 答案:C
  • 解析:二进制数转换为十六进制数的方法是从右到左每4位一组,不足4位在左边补0,然后将每组二进制数转换为对应的十六进制数。二进制数11110010可分为1111 0010,对应的十六进制数为F2

二、判断题

  1. 答案:正确
    • 解析:这段代码的功能是不断要求用户输入一个整数,直到用户输入正确的整数为止。在try块中尝试将用户输入转换为整数,如果转换成功则执行else块并结束程序,如果转换失败则执行except块提示用户重新输入,while True循环会一直执行直到遇到break语句,所以代码能够正常运行。
  2. 答案:正确
    • 解析:在顺序查找法中,平均查找次数的计算公式为((n + 1) / 2),其中n是数列中的元素个数。这是因为在最坏情况下,需要查找n次才能找到元素(元素在最后一个位置),在最好情况下,只需要查找1次(元素在第一个位置),平均下来就是((n + 1) / 2)次。
  3. 答案:错误
    • 解析:十进制数转十六进制数后,位数不一定变少。例如十进制数10转换为十六进制是0xA,位数没有变化;十进制数100转换为十六进制是0x64,位数也没有变少;只有当十进制数比较大且十六进制表示相对简洁时,位数才可能变少,但不是绝对的。
  4. 答案:正确
    • 解析:二进制数1101011011转换为十六进制数,从右到左每4位一组,可分为0011 0101 1011,对应的十六进制数为35B
  5. 答案:正确
    • 解析:使用open函数打开文件后,为了确保文件资源被正确释放,避免数据丢失或其他问题,应该在操作完成后调用close方法关闭文件。虽然在某些情况下(如使用with语句)可以自动管理文件的关闭,但显式调用close方法是一种良好的编程习惯,尤其是在不使用with语句等自动管理机制时,必须手动关闭文件。
  6. 答案:正确
    • 解析:这段代码首先以只读方式打开fruits.csv文件,然后使用read方法读取文件内容,strip方法去除字符串两端的换行符,split方法以逗号为分隔符将字符串分割成列表,最后关闭文件,实现了将文件中的数据读取到列表中的功能。
  7. 答案:错误
    • 解析:使用with语句打开文件时,当with块结束时,文件会自动关闭,不需要显式调用f.close()方法。所以代码中不缺少关闭文件的语句,这段代码在文件操作的资源管理方面是正确的。
  8. 答案:错误
    • 解析sort方法和sorted函数都可以用于对列表进行排序,它们的默认排序顺序都是升序。sort方法会直接对原列表进行排序,而sorted函数会返回一个新的排好序的列表,原列表不变。
  9. 答案:正确
    • 解析round函数属于数学函数,用于对浮点数进行近似保留小数位数的操作。例如round(3.14159, 2)会将3.14159保留两位小数,结果为3.14。
  10. 答案:正确
  • 解析sum函数可以对可迭代对象(如列表、元组等)中的元素进行求和操作,只要可迭代对象中的元素是数值类型(如整数、浮点数等)。例如sum([1, 2, 3])会计算列表中元素的和为6,sum((4, 5, 6))会计算元组中元素的和为15。

三、编程题

  1. 计算平均分

    • 思路:首先使用csv模块打开score.csv文件,读取文件中的数据(跳过标题行)。然后循环遍历每一行数据,将语文、数学、英语成绩分别转换为浮点数并累加到对应的变量中,同时记录行数。最后计算各科成绩的平均分并输出。
  2. 图书借阅管理

    • 思路:首先创建一个图书管理字典library,并添加一些图书信息。然后获取图书管理字典的所有键(图书编号)并转换为列表blist。接着通过二分查找算法,根据用户输入的图书名称在blist中查找对应的图书编号。在查找过程中,不断调整查找范围(min_vmax_v),直到找到图书或确定图书不存在。如果找到图书且有库存,则借阅成功,库存减1;如果图书已无库存,则提示借阅失败。最后输出查找过程中使用的二分查找轮数。
  3. 身高排序

    • 思路:使用冒泡排序算法对学生名单按照身高从高到低进行排序。外层循环控制排序的轮数,内层循环用于比较相邻元素的身高,如果前面的学生身高小于后面的学生身高,则交换他们的位置(包括姓名和身高信息)。最后循环输出排序后的学生名单。