python算法練習(xí)之抓交通肇事犯
1.問題描述
一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目擊該事件,但都沒有記住車號(hào),只記下了車號(hào)的一些特征。甲說:牌照的前兩位數(shù)字是相同的:乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同:丙是數(shù)學(xué)家,他說:4位的車號(hào)剛好是一個(gè)整數(shù)的平方。請根據(jù)以上線索求出車號(hào)。
2.確定程序框架
根據(jù)流程,構(gòu)建程序框架如下:
if __name__ == '__main__': # i代表前兩位車牌號(hào)數(shù)字,j代表后兩位車牌號(hào)數(shù)字,k代表車牌號(hào) for i in range(10): for j in range(10): # 窮舉前兩位和后兩位車牌數(shù)字 # 判斷前兩位和后兩位數(shù)字是否相同 if i != j: # 組成4位車牌號(hào)碼 k = 1000 * i + 100 * i + 10 * j + j # 判斷k是否是某個(gè)數(shù)的平方,是就輸出
3.判斷車牌k是是否為某個(gè)數(shù)的平方,是就輸出
再次利用循環(huán)來實(shí)現(xiàn),循環(huán)變量 temp求平方后和車牌號(hào)k比較,相等則投到車牌號(hào),優(yōu)化算法,temp
的初值應(yīng)該從31
開始,因?yàn)樾∮?code>30的數(shù)的平方小于4位數(shù)。故該層循環(huán)為最內(nèi)層循環(huán),對(duì)每一個(gè)年牌號(hào)均作如此操作。
for temp in range(31, 100): if temp * temp == k: print("車牌號(hào)為:", k)
4.完整程序
根據(jù)上面的分析,完整程序如下:
if __name__ == '__main__': # i代表前兩位車牌號(hào)數(shù)字,j代表后兩位車牌號(hào)數(shù)字,k代表車牌號(hào) for i in range(10): for j in range(10): # 窮舉前兩位和后兩位車牌數(shù)字 # 判斷前兩位和后兩位數(shù)字是否相同 if i != j: # 組成4位車牌號(hào)碼 k = 1000 * i + 100 * i + 10 * j + j # 判斷k是否是某個(gè)數(shù)的平方,是就輸出 for temp in range(31, 100): if temp * temp == k: print("車牌號(hào)為:", k)
5.運(yùn)行結(jié)果
在Pycharm
運(yùn)行程序,結(jié)果如下
車牌號(hào)為: 7744
6.優(yōu)化算法
針對(duì)上述程序,如果已經(jīng)找到相應(yīng)的車牌號(hào),請讀者考慮循環(huán)是否還需要繼續(xù)呢?答案是肯定的,因?yàn)樗惴ㄔ谠O(shè)計(jì)窮舉循環(huán)的時(shí)候,并沒有在找到車牌的時(shí)候就退出循環(huán),而是繼續(xù)窮舉其他i、j的情況。我們可以改進(jìn)算法,設(shè)置一個(gè)“標(biāo)識(shí)變量”,該變量初值為0,一旦找到車牌號(hào),則改變該標(biāo)識(shí)變量的值為1,每次循環(huán)判斷一下標(biāo)識(shí)變量的值。如果值為1,則退出所有循環(huán),這樣能有效的減少循環(huán)次數(shù),
改進(jìn)的程序如下:
if __name__=="__main__": # i代表前兩位車牌號(hào)數(shù)字,j代表后兩位車牌號(hào)的數(shù)字,k代表車牌號(hào) flog = 0 # 循環(huán)標(biāo)識(shí)變量,為1時(shí)推出所有循環(huán) for i in range(10): if flog: break for j in range(10): # 窮舉前兩位和后兩位車牌數(shù)字 if flog: break # 判斷前兩位和后兩位數(shù)字是否相同 if i != j: # 組成4位車牌號(hào)碼 k = 1000 * i + 100 * i + 10 * j + j # 判斷k是否是某個(gè)數(shù)的平方,是就輸出 for temp in range(31, 100): if temp * temp == k: print("車牌號(hào)為: ", k) flog = 1 break
到此這篇關(guān)于python算法之抓交通肇事犯練習(xí)的文章就介紹到這了,更多相關(guān)python算法 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pytorch深度學(xué)習(xí)之Tensors張量
今天小編就為大家分享一篇Pytorch之Tensors張量的文章,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-10-10Django執(zhí)行源生mysql語句實(shí)現(xiàn)過程解析
這篇文章主要介紹了Django執(zhí)行源生mysql語句實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11python+numpy+matplotalib實(shí)現(xiàn)梯度下降法
這篇文章主要為大家詳細(xì)介紹了python+numpy+matplotalib實(shí)現(xiàn)梯度下降法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08pyqt5移動(dòng)鼠標(biāo)顯示坐標(biāo)的方法
今天小編就為大家分享一篇pyqt5移動(dòng)鼠標(biāo)顯示坐標(biāo)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python多進(jìn)程共享numpy 數(shù)組的方法
這篇文章主要介紹了Python多進(jìn)程共享numpy 數(shù)組的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07