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