1. 程式人生 > 其它 >2021年9月,全國計算機等級考試二級Python備考筆記

2021年9月,全國計算機等級考試二級Python備考筆記

單項選擇題

第一題

第二題

第三題

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:701698587
歡迎加入,一起討論 一起學習!

第四題

第五題

第六題

第七題

第八題

第九題

第十題

第十一題

第十二題

第十三題

第十四題

第十五題

第十六題

第十七題

第十八題

第十九題

第二十題

第二十一題

第二十二題

第二十三題

第二十四題

第二十五題

第二十六題

第二十七題

第二十八題

第二十九題

第三十題

第三十一題

第三十二題

第三十三題

第三十四題

第三十五題

第三十六題

第三十七題

第三十八題

第三十九題

第四十題

程式設計題

第一題

程式碼如下:
x = eval(input())   #輸入為"65",由eval函式轉變為數值65
print("{:c}".format(x))  #輸出Unicode編碼為65,對應的字元為"A"

# 如果輸入的是"a",會出現如下錯誤提示:   
# File "<string>", line 1, in <module>
# NameError: name 'a' is not defined
# 原因:eval函式只能識別數字字串,對於輸入"a",只能被識別為一個變數名稱為a,
#       a 這個變數是不存在的,從而出現錯誤。
#       如果要避免這樣的意外出現,請嘗試使用try-catch語句完善程式碼。
# 本題目的考察點在於format函式的格式輸出規則。

第二題

程式碼如下:
s = input()           #從鍵盤獲取輸入,返回字串
print(s[::-1],end="") #字串逆序輸出,詳見程式碼後說明
print(len(s))         #輸出字串長度
'''
本題考查的是字串的一些基本知識。
反序字串的寫法是s[::-1]。
[x:y:z]切片索引,x是左端,y是右端,z是步長,在p[x,y)區間從左到右每隔z取值,預設z是1,可以省略引數z,步長為負號就是反向,從右到左取值。
'''

第三題

程式碼如下:
import random       #匯入random模組
random.seed(123)    #設定隨機數種子123,保證每次執行時生成的相同的隨機序列
for i in range(10): #遍歷迴圈
    print(random.randint(1,999), end=",")
    #輸出[1,999]上的隨機整數,以結尾英文逗號隔開
    #如:54,275,90,788,418,273,111,859,923,896,
    #因為隨機種子固定,每次執行會得到同樣的輸出。
'''
seed()方法改變隨機數生成器的種子,可以在呼叫其他隨機模組函式之前呼叫此函式。
  seed()方法的語法:
  import random
  random.seed([x])
  注意:seed()是不能直接訪問的,需要匯入random模組,然後通過random靜態物件呼叫該方法。
        引數x -- 改變隨機數生成器的種子seed。
random.randint(a,b)返回一個a至b區間(包含a和b)的整數。
'''

第四題

程式碼如下:
import turtle
turtle.pensize(2)
d = 0
for i in range(1,9):
    turtle.fd(100)
    d += 45
    turtle.seth(d)

第五題

程式碼如下:
#從鍵盤上獲取字串,按回車鍵結束輸入。形如:計算機 金融 計算機 建築 土木 土木 計算機
names = input("請輸入各個同學行業名稱,行業名稱之間用英文空格間隔(回車結束輸入):")
#str.split()函式可分割從鍵盤上獲取的字串,返回一個列表,預設預設分隔符為英文空格。
'''
 |  split(self, /, sep=None, maxsplit=-1)
 |      Return a list of the words in the string, using sep as the delimiter string.
 |      
 |      sep
 |        The delimiter according which to split the string.
 |        None (the default value) means split according to any whitespace,
 |        and discard empty strings from the result.
 |      maxsplit
 |        Maximum number of splits to do.
 |        -1 (the default value) means no limit.
'''
t = names.split()
d = {} #定義一個字典
for c in range(len(t)): #對列表t中每一個元素統計出現次數
    d[t[c]] = d.get(t[c],0)+1  #要掌握字典get方法的具體使用,詳見程式碼後面。
ls = list(d.items()) #將字典的items()轉換為列表,形如[("計算機",3),...]
ls.sort(key=lambda x:x[1], reverse=True) # 按照數量排序
for k in range(len(ls)):  #輸出排序後的統計結果
    zy,num = ls[k]
    #例如:ls[0]=("計算機",3),執行完該語句後,zy="計算機",num = 3
    print("{}:{}".format(zy,num))#按照格式輸出結果

第六題

程式碼如下:
fi = open("論語.txt", "r")
fo = open("論語-原文.txt", "w")
a=0
for line in fi:
    if a==1 and line.count("【註釋】")==0 and line.count("【原文】")==0:
        line = line.strip(" \n")
        if line.strip():#判斷line是否為空串
            fo.write('{}\n'.format(line))
    if line.count("【原文】")>0:
        a=1
    if line.count("【註釋】")>0:
        a=0
fi.close()
fo.close()

第七題

程式碼如下:
fi = open("論語.txt", "r")
fo = open("論語-原文.txt", "w")
a=0
for line in fi:
    if a==1 and line.count("【註釋】")==0 and line.count("【原文】")==0:
        line = line.strip(" \n")
        if line.strip():#判斷line是否為空串
            fo.write('{}\n'.format(line))
    if line.count("【原文】")>0:
        a=1
    if line.count("【註釋】")>0:
        a=0
fi.close()
fo.close()