一:二級等級基本要求
掌握Python語言的基本語法規則。
掌握不少於2個基本的Python標准庫。
掌握不少於2個Python第三方庫,掌握獲取並安裝第三方庫的方法。
能夠閱讀和分析Python程序。
熟練使用IDLE開發環境,能夠將腳本程序轉變為可執行程序。
了解Python計算生態在以下方面(不限於)的主要第三方庫名稱:網絡爬蟲、數據分析、數據可視化、機器學習、Web開發等
二:給出題目
考生文件夾中有這樣一個csv文件(如下圖所示)
三:問題1
分析問題:打開csv文件后,將csv中的內容添加到列表中,然后根據用戶鍵盤輸入的星座輸出星座的日期范圍即可(詳情請看代碼注釋)。
代碼實現:
# !/usr/bin/env python # -*- encoding:utf-8 -*- # 作者:賴正華 def read_files(): """讀取文件""" files = open("C:\\WEXAM\\000000000000\\PY301-SunSign.csv","r",encoding="gbk") # 文件地址以文件所在位置為准 data = files.readlines() # 逐行讀取文件,並返回一個列表 lis = [] for i in data[1:]: # 遍歷讀取的文件列表,並去掉第一行 line = i.split(',') # 用","分隔開,並返回一個列表 lis.append(line) files.close() return lis def get_user_enter(lis): """獲得用戶輸入""" user = input("請輸入星座中文名稱(例如:雙子座):") for l in lis: if l[1] == user: print("{}的生日位於{}-{}之間".format(l[1],l[2],l[3])) if __name__ == "__main__": lis = read_files() get_user_enter(lis)
輸出示例:
四:問題2
分析問題:與問題1類似,在代碼中使用循環結構和分支結構相結合的方式,根據用戶鍵盤輸入的序號輸出星座的名稱。字符編碼和生日范圍。(詳情請看代碼注釋)
代碼實現:
# !/usr/bin/env python # -*- encoding:utf-8 -*- # 作者:賴正華 def read_files(): """讀取文件""" files = open("C:\\WEXAM\\000000000000\\PY301-SunSign.csv","r",encoding="gbk") # 打開文件,文件打開位置以文件所在位置為准 data = files.readlines() # 逐行讀取文件,並返回一個列表,每一行即為一個列表元素 lis = [] # 新建一個列表,用於存放分割后的新元素 for i in data[1:]: # 此操作去掉第0行 line = i.split(',') # 用','對每一行進行分割,並放入新的列表,方便后面計算。 lis.append(line) files.close() return lis # 讓函數返回列表 def get_user_enter(lis): """獲得用戶輸入""" while True: user = input("請輸入星座序號(例如:5):") # 獲得用戶輸入 if user == 'n': # 防止死循環 break else: new_user = user.split() # 對用戶輸入的內容進行分割,這里也是返回一個列表 for num in new_user: for line in lis: # 遍歷每一行(用','好分割過的) if int(num) == int(line[2][:-2]): # 這里用戶輸入的星座序號要和題目給出文件做計算,也是本題的關鍵和規律所在 m1,d1 = line[2][:-2],line[2][-2:] m2,d2 = line[3][:-2],line[3][-2:] print("{}({})的生日是{}月{}日至{}月{}日之間".format(line[1],line[4].strip('\n'),m1,d1,m2,d2)) if __name__ == "__main__": lis = read_files() get_user_enter(lis)
注:
if int(num) == int(line[2][:-2]): 這行代碼就是就是本題的規律,如果用戶輸入的序號與文件開始月日的月份相等(如:120就代表1月20日),那么該序號就是與之相對應的星座生日范圍,最后根據切片輸出
相應的內容即可。
輸出示例:
五:問題3
分析問題:寫出問題2后,問題3就簡單了很多,就是在問題2的基礎上,添加判斷用戶鍵盤輸入的序號是否在csv文件中(或者是列表在)。
代碼實現:
# !/usr/bin/env python # -*- encoding:utf-8 # 作者:賴正華 def read_files(): """讀取文件""" files = open("C:\\WEXAM\\000000000000\\PY301-SunSign.csv","r",encoding="gbk") data = files.readlines() lis = [] for i in data[1:]: line = i.split(',') lis.append(line) files.close() return lis def get_user_enter(lis): """獲得用戶輸入""" while True: user = input("請輸入星座序號(例如:5):") if user == 'n': break else: new_user = user.split() for num in new_user: if int(num) <= 0 or int(num) > 12: # 在問題2的基礎上,判斷用戶輸入序號是否在1-12之間。 print("輸入星座序號有誤!") for line in lis: if int(num) == int(line[2][:-2]): m1,d1 = line[2][:-2],line[2][-2:] m2,d2 = line[3][:-2],line[3][-2:] print("{}({})的生日是{}月{}日至{}月{}日之間".format(line[1],line[4].strip('\n'),m1,d1,m2,d2)) if __name__ == "__main__": lis = read_files() get_user_enter(lis)
輸出示例:
初次寫博客,內容粗糙!有看不懂的地方還請見諒!