江蘇計算機等級考試二級python考試樣卷 |
江蘇省高等學校計算機等級考試 二級Python 語言考試(樣卷) (本試卷完成時間 120 分鐘) 第一部分 計算機信息技術基礎知識 選擇題(共20 分,每題2 分) 略 第二部分 Python 程序設計 一、 選擇題(共10 分,每題2 分) 1. 以下哪一個是Python 合法的標識符? A._name B.1name C.stu-name D.stu.name 2. 以下關于Python 的賦值說法中錯誤的是哪一項? A.Python 中的變量在使用前必須賦值,變量賦值后該變量才會被創建。 B.Python 支持多元賦值和多重賦值。 C.Python 賦值時大小寫敏感。 D.Python 中要首先聲明變量的類型后才能給該變量賦值。 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 的是哪一個選項? A.2016 B.'China' C.listA = ['Name'] D.tupleA = (123) 5. 如果需要在文本文件test.txt 的中間部分添加一行字符串,以下open 語句的mode 位置 應該選擇以下哪一項? A.a B.r+ C.w+ D.a+ 二、填空題(共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' (3) str[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 程序設計 一、選擇題 (1) A (2)D (3)C (4) C (5)B 二、填空題 (1)[5, 4, 3, 1] (2)['BB', 'a', 'bb', 'zz'] (3)123456 (4)sky 或xiaoxiao (5)xiaoxiao 或sky (6)30 (7)1, 3, 5, 7 (8)1 0 0 0 0 0 1 1 (9)33, 72, 35, 36, 54, 120, 18, 24 (10)12 三、操作題 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 |