python算法練習(xí)之抓交通肇事犯
1.問(wèn)題描述
一輛卡車(chē)違反交通規(guī)則,撞人后逃跑?,F(xiàn)場(chǎng)有三人目擊該事件,但都沒(méi)有記住車(chē)號(hào),只記下了車(chē)號(hào)的一些特征。甲說(shuō):牌照的前兩位數(shù)字是相同的:乙說(shuō):牌照的后兩位數(shù)字是相同的,但與前兩位不同:丙是數(shù)學(xué)家,他說(shuō):4位的車(chē)號(hào)剛好是一個(gè)整數(shù)的平方。請(qǐng)根據(jù)以上線(xiàn)索求出車(chē)號(hào)。
2.確定程序框架

根據(jù)流程,構(gòu)建程序框架如下:
if __name__ == '__main__':
# i代表前兩位車(chē)牌號(hào)數(shù)字,j代表后兩位車(chē)牌號(hào)數(shù)字,k代表車(chē)牌號(hào)
for i in range(10):
for j in range(10): # 窮舉前兩位和后兩位車(chē)牌數(shù)字
# 判斷前兩位和后兩位數(shù)字是否相同
if i != j:
# 組成4位車(chē)牌號(hào)碼
k = 1000 * i + 100 * i + 10 * j + j
# 判斷k是否是某個(gè)數(shù)的平方,是就輸出
3.判斷車(chē)牌k是是否為某個(gè)數(shù)的平方,是就輸出
再次利用循環(huán)來(lái)實(shí)現(xiàn),循環(huán)變量 temp求平方后和車(chē)牌號(hào)k比較,相等則投到車(chē)牌號(hào),優(yōu)化算法,temp的初值應(yīng)該從31開(kāi)始,因?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("車(chē)牌號(hào)為:", k)
4.完整程序
根據(jù)上面的分析,完整程序如下:
if __name__ == '__main__':
# i代表前兩位車(chē)牌號(hào)數(shù)字,j代表后兩位車(chē)牌號(hào)數(shù)字,k代表車(chē)牌號(hào)
for i in range(10):
for j in range(10): # 窮舉前兩位和后兩位車(chē)牌數(shù)字
# 判斷前兩位和后兩位數(shù)字是否相同
if i != j:
# 組成4位車(chē)牌號(hào)碼
k = 1000 * i + 100 * i + 10 * j + j
# 判斷k是否是某個(gè)數(shù)的平方,是就輸出
for temp in range(31, 100):
if temp * temp == k:
print("車(chē)牌號(hào)為:", k)
5.運(yùn)行結(jié)果
在Pycharm運(yùn)行程序,結(jié)果如下
車(chē)牌號(hào)為: 7744
6.優(yōu)化算法
針對(duì)上述程序,如果已經(jīng)找到相應(yīng)的車(chē)牌號(hào),請(qǐng)讀者考慮循環(huán)是否還需要繼續(xù)呢?答案是肯定的,因?yàn)樗惴ㄔ谠O(shè)計(jì)窮舉循環(huán)的時(shí)候,并沒(méi)有在找到車(chē)牌的時(shí)候就退出循環(huán),而是繼續(xù)窮舉其他i、j的情況。我們可以改進(jìn)算法,設(shè)置一個(gè)“標(biāo)識(shí)變量”,該變量初值為0,一旦找到車(chē)牌號(hào),則改變?cè)摌?biāo)識(shí)變量的值為1,每次循環(huán)判斷一下標(biāo)識(shí)變量的值。如果值為1,則退出所有循環(huán),這樣能有效的減少循環(huán)次數(shù),
改進(jìn)的程序如下:
if __name__=="__main__":
# i代表前兩位車(chē)牌號(hào)數(shù)字,j代表后兩位車(chē)牌號(hào)的數(shù)字,k代表車(chē)牌號(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): # 窮舉前兩位和后兩位車(chē)牌數(shù)字
if flog:
break
# 判斷前兩位和后兩位數(shù)字是否相同
if i != j:
# 組成4位車(chē)牌號(hào)碼
k = 1000 * i + 100 * i + 10 * j + j
# 判斷k是否是某個(gè)數(shù)的平方,是就輸出
for temp in range(31, 100):
if temp * temp == k:
print("車(chē)牌號(hào)為: ", k)
flog = 1
break
到此這篇關(guān)于python算法之抓交通肇事犯練習(xí)的文章就介紹到這了,更多相關(guān)python算法 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車(chē)票
這篇文章主要為大家詳細(xì)介紹了基于Python3.6+splinter實(shí)現(xiàn)自動(dòng)搶火車(chē)票,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python?Fire實(shí)現(xiàn)自動(dòng)生成命令行接口
命令行程序是平時(shí)寫(xiě)一些小工具時(shí)最常用的方式,隨著命令行程序功能的豐富,也就是參數(shù)多了以后,解析和管理參數(shù)之間的關(guān)系會(huì)變得越來(lái)越繁重,而本次介紹的?Fire?庫(kù)正好可以解決這個(gè)問(wèn)題,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧2023-09-09
OpenCV-Python實(shí)現(xiàn)多模板匹配
模板匹配就是在一幅圖像中尋找另一幅模板圖像最匹配,本文主要實(shí)現(xiàn)了多模板匹配,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
TensorFlow實(shí)現(xiàn)從txt文件讀取數(shù)據(jù)
今天小編就為大家分享一篇TensorFlow實(shí)現(xiàn)從txt文件讀取數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python中的flask框架Jinja?模板入門(mén)教程
這篇文章主要介紹了?python中的flask框架Jinja?模板入門(mén),Jinja?模板其實(shí)是?html?文件,一般情況下放在?Flask?工程的?/templates?目錄下,對(duì)python?flask?Jinja?模板相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04
Python實(shí)現(xiàn)獲取nginx服務(wù)器ip及流量統(tǒng)計(jì)信息功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取nginx服務(wù)器ip及流量統(tǒng)計(jì)信息功能,涉及Python針對(duì)nginx服務(wù)器信息操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05
python實(shí)現(xiàn)發(fā)送form-data數(shù)據(jù)的方法詳解
這篇文章主要介紹了python實(shí)現(xiàn)發(fā)送form-data數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了Python發(fā)送form-data數(shù)據(jù)的相關(guān)操作步驟、實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下2019-09-09
Python數(shù)據(jù)操作方法封裝類(lèi)實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)操作方法封裝類(lèi),結(jié)合具體實(shí)例形式分析了Python針對(duì)數(shù)據(jù)庫(kù)的連接、執(zhí)行sql語(yǔ)句、刪除、關(guān)閉等操作技巧,需要的朋友可以參考下2017-06-06

