函式的使用涉及很多邏輯合理性的內容,優秀的**,邏輯清晰,**簡潔,函式呼叫恰當,記憶體占用小,cpu計算量小,方方面面涉及很多技巧和思維方式,需要程式設計師多讀**,多思考,勤試錯。
這篇**總覺得還有很多需要優化的地方,但總是邏輯不清,搞不明白修改**合適,怎麼修改?先貼上來,以後有思路再做調整。
需求是這樣的:從乙個列有員工資訊的檔案中查詢所需要的內容,給出這個檔案格式如下
id name age phone post1,ryan,28,135********,hr
2,...
3,...
import員工資訊表查詢redef
show(i,inquire,li,dic):
'''展示出使用者要求展示的內容,即select與where之間的內容
:param i: 迴圈檔案得來的每一行
:param inquire: 使用者輸入的語句
:param li: 放入篩選結果的列表
:param dic: 檔案每行內容分割後放入的字典
:return:
'''lis = re.split('
select|where.*|\s|,
', inquire)
lis = list(filter(lambda x: x, lis)) #
篩選出select與where之間的內容
for k in lis: #
迴圈select與where之間的內容
if k == '
*': #
如果是*
則把這一整行都放入列表
else:#
否則把字典中k的值放入列表
deffilt(i,inquire,li,dic):
'''篩選出符合條件的行,即符合where之後條件的內容
:param i: 迴圈檔案得來的每一行
:param inquire: 使用者輸入的語句
:param li: 放入篩選結果的列表
:param dic: 檔案每行內容分割後放入的字典
:return:
'''lis = re.split('
where
', inquire)
if'>
'in lis[1]:
lis8 = lis[1].split('
>')
if lis8[0].strip() in dic and int(dic[lis8[0].strip()]) > int(lis8[1].strip()):
show(i,inquire,li,dic)
if'<
'in lis[1]:
lis8 = lis[1].split('
if lis8[0].strip() in dic and int(dic[lis8[0].strip()]) < int(lis8[1].strip()):
show(i, inquire, li, dic)
elif'=
'in lis[1]:
lis8 = lis[1].split('='
)
if lis8[0].strip() in dic and dic[lis8[0].strip()] == lis8[1].strip():
show(i, inquire, li, dic)
elif
'like'in
lis[0]:
lis8 = lis[1].split('
like')
if lis8[1].strip() in dic and lis8[1].strip() in
dic[lis8[0].strip()]:
show(i, inquire, li, dic)
with open(
'staff_information
',encoding='
utf-8
') as f:
inquire = input('
請輸入語句:
').strip()
for i in
f: li =
lis = i.strip().split(','
) dic =
#把檔案內容分割後(注意每分割必先除去前後空字元),然後把每個元素放入乙個key是代表每列內容名字的字典中
filt(i, inquire, li, dic) #
過濾檔案內容並按使用者要求彷彿列表中
if li:print
(li)
#用胡輸入的查詢語句如下:
#select name,age where age >22
#select * where phone like 135
#selext name where post=hr
優雅的使用python
優雅的使用python,讓自己的code更pythonic test list 龍母 雪諾 提里昂 山姆 count 0 for name in test list print s的序號是 d name,count count 1龍母的序號是 0 雪諾的序號是 1 提里昂的序號是 2 山姆的序號是 ...
優雅的使用git
git config global user.name git config global user.email com 2.對於git遠端庫的訪問有兩種訪問協議,一種是https協議。另一種是ssh協議。當我們使用https協議的時候,當我們進行拉取或者推送的時候會提示我們輸入使用者名稱和密碼。另...
優雅的使用UITableView(Swift 中)
在優雅的使用uitableview oc 上 中,已經給大家分享了怎麼使用uitableview,優雅的構建乙個頁面。怎麼把優雅的使用uitableview oc 上 的思路搬到swift 泛型和any的區別 在swift中優雅的使用uitableview構建list頁面 再回憶一下這張圖 其中關鍵...