陳新龍
有這樣一道奧數(shù)題:好事好+要做好二要做好事。請(qǐng)問(wèn),要做好事的值是多少?和我們用筆算更注重邏輯分析不同,編程解決這道題更多的是利用計(jì)算機(jī)運(yùn)算速度快的優(yōu)勢(shì),把所有可能都試一遍找到正確的解。
先考慮每個(gè)文字的范圍,簡(jiǎn)單認(rèn)為每個(gè)文字的值都是0-9,創(chuàng)建一個(gè)列表lisL1存放0-9。
分別用四個(gè)字母代替“要做好事”文字,通過(guò)循環(huán)遍歷的方法提取數(shù)值然后累加判斷是否能夠符合題目的要求。答案為0000和1098(如圖1)。
當(dāng)然這種方法也是效率最低的方法,下面我們用f'm這個(gè)命令,{‘m是把整數(shù)l轉(zhuǎn)換成一個(gè)字符串,:( Yld是用o補(bǔ)齊四位。由于“要做好事”四個(gè)字的范圍在0000-9999,將個(gè)位十位百位千位分別賦值給h,s,z,v。通過(guò)函數(shù)和{‘m的方法可以大大縮短我們的代碼數(shù)量,提高代碼的可讀性(如圖2)。
這樣自定義函數(shù)的方法效率也大大提高了,當(dāng)然我們還可以通過(guò)引入Python內(nèi)部函數(shù)來(lái)解決問(wèn)題,通過(guò)位數(shù)分解加快我們的計(jì)算速度,提高解題效率。