知識點與收穫
成電微光工作室2020筆試第一題,下一屆想進入微光工作室的成電小夥伴可以來康康。
題目給出這樣一段txt檔案:
a:小夥子最近怎麼樣
b:最近在參加微光工作室的招新
a:感覺怎樣
b:感覺好多題有點難
a:那咋辦嘛
b:那咋辦嘛
a:那咋辦嘛
b:那咋辦嘛
a:那咋辦嘛
b:那我能咋辦嘛
a:好好學習,加油進微光啊
c:你們兩個上課講什麼話
b:那我去努力學習了,不談了,886*
要求製作乙個程式,使對話輸入後將每個人說的話分組,分別將每個人說的話存入到乙個txt檔案中,並且將每個人不重複的對話分別存入到乙個pkl檔案中,並以對應人名命名檔案
step1 讀入檔案
使用with open 與readlines配合的方法,將對話文字逐行讀出
step2 分辨人名的方法
首先可以考慮將每一句話當成乙個字串,運用切片得到的第乙個字元即是人名,事實上這樣可行。但是,這僅限於本題中名字為乙個英文本母的情況,那麼怎樣得到乙個普適的分辨方法呢?
使用spilt方法可以很好的解決問題,以冒號為分界可以一目了然地分離出人名與對話內容
step3 完成程式主幹要求
# 引入pkl模組。
with open("dialog.txt", mode="r", encoding='utf-8') as fi:
lines = fi.readlines()
# 將dialog中的內容全部逐行讀出。
dialog = {}
for line in lines:
s = line.split(':', 1)
# 以冒號為分界區別開人名與對話內容。
if s[0] not in dialog:
dialog[s[0]] = [s[0]+"-01.txt", s[0]+"-02.pkl", {}]
# 將每個人名與乙個列表對應儲存入字典,且使用if not in結構來確保人名不重複。
with open(dialog[s[0]][0], mode="a+") as fo:
fo.writelines(s[1])
# 以追加形式將對話內容逐行補充導各自的檔案尾部,完成題目的第二項要求。
if s[1] not in dialog[s[0]][2]:
dialog[s[0]][2][s[1]] = ""
# 將不重複的對話以鍵的形式存入字典,賦值為空(隨便賦值什麼應該都無所謂)。
with open(dialog[s[0]][1], mode="wb+") as fo:
pickle.dump(s[1], fo)
# 以追加形式將不重複對話逐行寫入pkl檔案,完成題目第三項要求。
pkl不便展示就不放圖了
1.開關讀寫檔案的方法,讀寫檔案的不同模式;
2.分辨復讀機的思想核心;
3.寫入中文出現亂碼時的基本解決方法。
python 2020演算法筆試題目 逛街
小q在週末的時候和他的小夥伴來到大城市逛街,一條步行街上有很多高樓,共有n座高樓排成一行。小q從第一棟一直走到了最後一棟,小q從來都沒有見到這麼多的樓,所以他想知道他在每棟樓的位置處能看到多少棟樓呢?當前面的樓的高度大於等於後面的樓時,後面的樓將被擋住 輸入描述 輸入第一行將包含乙個數字n,代表樓的...
python 2020演算法筆試題目 視野爭奪
小q在進行一場競技遊戲,這場遊戲的勝負關鍵就在於能否能爭奪一條長度為l的河道,即可以看作是 0,l 的一條數軸。這款競技遊戲當中有n個可以提供視野的道具 真視守衛,第i個真視守衛能夠覆蓋區間 xi,yi 現在小q想知道至少用幾個真視守衛就可以覆蓋整段河道。輸入描述 輸入包括n 1行。第一行包括兩個正...
10天帶你玩轉Python2020版
10天掌握python基礎語法,具備基礎的程式設計能力,建立程式設計思維以及物件導向程式設計思想。從python開發環境的搭建到pycharm使用!本課程將通過10天時間給大家講解linux作業系統相關的知識點,由淺入深帶領大家了解linux系統,最終通過對該系統日積月累的使用達到玩轉linux的目...