江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏省计算机二级python样卷

江苏省高等学校计算机等级考试

二级Python 语言考试(样卷)

(本试卷完成时间 120 分钟)

第一部分 计算机信息技术基础知识

选择题(共20 分,每题2 分)

第二部分 Python 程序设计

一、 选择题(共10 分,每题2 分)

1.以下哪一个是Python 合法的标识符?

A_name

B1name

Cstu-name

Dstu.name

2.以下关于Python 的赋值说法中错误的是哪一项?

APython 中的变量在使用前必须赋值,变量赋值后该变量才会被创建。

BPython 支持多元赋值和多重赋值。

CPython 赋值时大小写敏感。

DPython 中要首先声明变量的类型后才能给该变量赋值。

3.对于序列numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],以下相关操作和对应输出正确的是哪一

项?

A>>> numbers[0: 2]

[1, 2, 3]

B>>> numbers[0: -1]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

C>>> numbers[-2:]

[9, 10]

D>>> numbers[0::3]

[1, 3, 5, 7, 9]

4.以下不能作为字典的key 的是哪一个选项?

A2016

B'China'

ClistA = ['Name']

DtupleA = (123)

5.如果需要在文本文件test.txt 的中间部分添加一行字符串,以下open 语句的mode 位置

应该选择以下哪一项?

Aa

Br+

Cw+

Da+

二、填空题(共20 分,每空2 分)

1.执行如下代码,结果分别是(1) 和 (2) 。

>>> a = [5, 1, 3, 4]

>>> print sorted(a, reverse = True)

Out[]:____

>>> strs = ["a", "bb", "BB", "zz"]

>>> print sorted(strs)

Out[]:____

2.若输入字符串“baozi”,则程序运行结果的第一行是 (3) ,第二行是

4),第三行是 (5) 。

names = ["yunyun","sky","baozi","xiaoxiao","agui"]

numbers = [5555555,11111,123456,88888,123321]

data = dict(zip(names,numbers))

while True:

name = input("Please input the name:")

if data.get(name):

print(data[name])

break

else:

print('Enter the name again. ')

for (name, number) in data.items():

if(number < 100000):

print(name)

3.执行如下代码,结果分别是(6) 和 (7) 。

>>> import numpy as np

>>> a = np.arange(1, 5)

>>> np.power(a, 2).sum()

Out[]:____

>>> np.add(a, np.arange(4))

Out[]:array([____])

4.若输入131 2,则程序的运行结果是 (8)。

def foo(num, base):

if(num >= base):

foo(num // base , base)

print(num % base , end = ' ')

numA = int(input("Enter the first number: "))

numB = int(input("Enter the second number: "))

foo(numA, numB)

5.执行如下代码,则程序运行结果的第一行是[ 9],第二行是

10)。

def fun(m, n):

while n:

m, n = n, m % n

return m

arr = [24, 18, 120, 54, 36, 35, 72, 33]

print(arr[::-1])

hcf = fun(arr[0],arr[2])

for i in range(len(arr)):

if i > 2 and i % 2 == 0:

hcf = fun(hcf, arr[i])

print(hcf)

三、操作题(共50 分)

1. 完善程序(共12 分,每空3 分)

【要求】

1. 打开T 盘中的文件myf0.py,按以下程序功能完善文件中的程序。

2. 修改后的源程序仍保存在T myf0.py 文件中。

【程序功能】

定义函数countchar()统计字符串中26 个字母出现的次数(不区分大小写)。例如字符串“Hope

is a good thing.”的统计结果为:

[1, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0]

【待完善的源程序】

def countchar( 1):

list1 = [0]*26

for i in 2(0,len(str)):

if (str[i] >= 'a' 3str[i] <='z'):

list1[ord(str[i])- 4] += 1

print list1

if __name__ == "__main__":

str = "Hope is a good thing."

str = str.lower()

countchar(str)

2. 改错(共16 分,每个错4 分)

【要求】

1.打开T 盘中的文件myf1.py,按以下程序功能改正文件中程序的错误。

2.可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理

命令,但不能增加其他语句,也不能删去整条语句。

3.修改后的源程序仍保存在T myf1.py 中。

【程序功能】

在已排好序的列表中插入一个数让列表仍然有序。

函数insert 的形参data 指向的是原始的有序列表,num 为待插入的新数,函数的功能是找

到列表中正确的插入位置进行插入,让新列表仍然有序。

【测试数据与运行结果】

测试数据:

Enter a new number:11

屏幕输出:

The new sorted list is: [11, 13, 22, 31, 48, 54, 71, 91, 94]

测试数据:

Enter a new number:38

屏幕输出:

The new sorted list is: [13, 22, 31, 38, 48, 54, 71, 91, 94]

测试数据:

Enter a new number:a

Please enter a digit! (输出)

Enter a new number:123

屏幕输出:

The new sorted list is: [11, 13, 22, 31, 48, 54, 71, 91, 94, 123]

【含有错误的源程序】

def insert(data, num):

length = length(data)

data.append(num)

for i in range(length) + 1:

if num < data[i]:

for j in range(length,i,-1):

data[j] = data[j+1]

data[i] = num

break

if __name__ == "__main__":

data = [13,22,31,48,54,71,91,94]

while True:

try:

num = int(input("Enter a new number:"))

insert(data, num)

print("The new sorted list is:",data)

continue

except ValueError:

print("Please enter a digit!")

3. 编程(共22 分)

【要求】

1.打开T 盘中的文件myf2.py,在其中输入所编写的程序,输出结果数据文件取名myf2.out

2.数据文件的打开、使用、关闭均用Python 标准库中缓冲文件系统的文件操作函数实现。

【程序功能】

判断所给出的数字是否是素数并且按要求变化后的数字是否是默尼森数。

P 是素数且M 也是素数,并且满足等式M=2P-1,则称M 为默尼森数。

【编程要求】

1.将测试数据放到一个列表中,结果放到一个新的列表中。

2.编写函数isprime(x),函数功能为判断整数x 是否是素数,如果是则返回True,否则返回

False

3.编写函数ismonisen(x),函数基于isprime(x)函数,函数功能为判断x 是否是默尼森数,

如果是则返回True,否则返回False

4.调用ismonisen(x)函数,对测试数据进行判断,将测试数据中变化后的所有默尼森数保存

到一个新的列表中,并输出(中间用一个空格分隔)到屏幕及文件myf2.out 中。最后将考

生本人准考证号字符串输出到文件myf2.out 中。

【测试数据与运行结果】

测试数据:

2, 7, 11, 13, 21

屏幕输出:

3 127 8191

参考答案:

第一部分 计算机信息技术基础知识

选择题

第二部分 Python 程序设计

一、选择题

1A 2D 3C 4C 5B

二、填空题

1[5, 4, 3, 1]

2['BB', 'a', 'bb', 'zz']

3123456

4sky xiaoxiao

5xiaoxiao sky

630

71, 3, 5, 7

81 0 0 0 0 0 1 1

933, 72, 35, 36, 54, 120, 18, 24

1012

三、操作题

1.完善程序

def countchar( str):

list1 = [0]*26

for i in range(0,len(str)):

if (str[i] >= 'a' and str[i] <='z'):

list1[ord(str[i])- ord('a')] += 1 # ord("a")97 也正确

print(list1)

if __name__ == "__main__":

str = "Hope is a good thing."

str = str.lower()

countchar(str)

2.改错

def insert(data, num):

length = len(data)

data.append(num)

for i in range(length):

if num < data[i]:

for j in range(length,i,-1):

data[j] = data[j-1]

data[i] = num

break

if __name__ == "__main__":

data = [13,22,31,48,54,71,91,94]

while True:

try:

num = int(input("Enter a new number:"))

insert(data, num)

print("The new sorted list is:",data)

break

except ValueError:

print("Please enter a digit!")

3.编程

import math

def isprime(x):

if x==1:

return False

k = int(math.sqrt(x))

for j in list(range(2,k+1)):

if x % j == 0:

return False

return True

def ismonisen(x):

if isprime(x) and isprime(2**x-1):

return True

else:

return False

if __name__ == "__main__":

num_list = [2, 7, 11, 13, 21]

result_list = []

for num in num_list:

if ismonisen(num):

temp = 2 ** num - 1

print(temp, end = ' ')

result_list.append(str(temp)+' ')

with open("T:\\myf2.out", "w") as fp:

fp.writelines(result_list)

fp.write("\nMy exam number is: 0112400123