999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python多法巧求“自冪數(shù)”

2021-06-28 10:46:22牟曉東
電腦報(bào) 2021年14期
關(guān)鍵詞:方法

牟曉東

在編程語言的教材中常出現(xiàn)一道求解“水仙花數(shù)”的經(jīng)典問題,即某個(gè)三位整數(shù)每個(gè)數(shù)位上數(shù)字的三次冪之和等于它本身,比如“153 = 1^3 + 5^3 + 3^3”。其實(shí),水仙花數(shù)只是“自冪數(shù)”的一種,類似的還有四位數(shù)的“四葉玫瑰數(shù)”(各數(shù)位四次方之和等于本身的數(shù))、五位數(shù)的“五角星數(shù)”、六位數(shù)的“六合數(shù)”等。Python語法靈活,可以使用多種方法來完成自冪數(shù)的求解,在此略舉幾種水仙花數(shù)的編程方法:

1.“整除”和“求余”數(shù)位分解法

在Python中,運(yùn)算符“//”代表“整除”運(yùn)算,即求“整商”;而運(yùn)算符“%”則是進(jìn)行“求余”,利用這兩種運(yùn)算符可以將一個(gè)多位數(shù)的各位數(shù)字“分解”提取。在判斷一個(gè)三位數(shù)是否為水仙花數(shù)時(shí),首先構(gòu)建循環(huán)結(jié)構(gòu)“for i in range(100,1000):”,百位上的數(shù)字提取方法是通過“bai_wei = i//100”求“整商”來完成,比如計(jì)算“365//100”,結(jié)果就是“3”;十位上的數(shù)字提取方法是“shi_wei = (i%100)//10”,即先以100為除數(shù)進(jìn)行“求余”,再將這個(gè)中間結(jié)果除以10求“整商”,比如計(jì)算“(365%100)//10”,會(huì)先得到余數(shù)65,然后計(jì)算“65//10”得到6;個(gè)位上的數(shù)字提取方法是“ge_wei? = i%10”,即除以10求余數(shù),比如“365%10”的結(jié)果是5。

循環(huán)中的if判斷條件是“bai_wei**3 + shi_wei**3 + ge_wei**3 == i:”,即各數(shù)位上的數(shù)字的三次方之和與該數(shù)相等。最后,通過print打印輸出變量i的數(shù)值,結(jié)果得到四個(gè)水仙花數(shù):153、370、371和407(如圖1)。

2.三層循環(huán)嵌套法

因?yàn)樗苫〝?shù)是對一個(gè)三位數(shù)進(jìn)行判斷,所以直接構(gòu)建三層循環(huán)嵌套來實(shí)現(xiàn)從100到999的順序遞增。最外層的“for bai_wei in range(1,10):”控制百位數(shù)字循環(huán),注意要從1開始(range()中的起始值和終止值參數(shù)為“左閉右開”區(qū)間);中間層的十位數(shù)字循環(huán)是“for shi_wei in range(0,10):”;內(nèi)部的個(gè)位數(shù)字循環(huán)是“for ge_wei in range(0,10):”,變量my_data是計(jì)算存儲(chǔ)每個(gè)三位數(shù)的數(shù)值大小,即“bai_wei*100+shi_wei*10+ge_wei”;判斷條件與之前相同,最后也是打印輸出結(jié)果,同樣會(huì)得到四個(gè)水仙花數(shù):153、370、371和407(如圖2)。

3.map()函數(shù)映射法

如果充分利用Python中的各種內(nèi)置函數(shù),比如map()映射函數(shù),可以非常巧妙地快速“提取”出每個(gè)多位數(shù)上各數(shù)位的數(shù)字。首先,同樣是通過“for i in range(100,1000):”構(gòu)建出循環(huán)結(jié)構(gòu);然后使用“序列解包”的方式,同時(shí)為三個(gè)變量賦值——“bai_wei,shi_wei,ge_wei = map(int,str(i))”,借助map()函數(shù)將每個(gè)三位數(shù)先通過“str(i)”轉(zhuǎn)換為字符串,再將int()函數(shù)映射至剛剛生成的字符串序列(迭代對象),就“還原”得到了三個(gè)整型數(shù)字,分別賦值給三個(gè)對應(yīng)的變量。

接下來仍是使用相同的判斷語句和print()輸出語句,同樣會(huì)得到四個(gè)水仙花數(shù):153、370、371和407(如圖3)。

4.總結(jié)

前兩種方法的代碼量相似,數(shù)位分解法的難點(diǎn)在于使用整除和求余進(jìn)行組合運(yùn)算,使用一層循環(huán)結(jié)構(gòu),得到各數(shù)位上的數(shù)字;循環(huán)嵌套法需要構(gòu)建與數(shù)位個(gè)數(shù)相同的循環(huán)數(shù),必須要特別注意循環(huán)遞進(jìn)中的代碼格式縮進(jìn)。map()函數(shù)映射法比較巧妙,借助str()和int()進(jìn)行字符串與整型轉(zhuǎn)換,代碼量非常精簡。

如果題目不是求解水仙花,而是位數(shù)更多的自冪數(shù),比如“五角星數(shù)”,前兩種方法就分別需要多構(gòu)建兩個(gè)“整除求余”和兩層循環(huán),代碼量和復(fù)雜度都會(huì)增加不少;而map()函數(shù)映射法只需要簡單地增加“wan_wei”和“qian_wei”兩個(gè)變量即可,然后修改for循環(huán)中的range()起始值(10000,100000)和if條件中的各位數(shù)的冪指數(shù)(由3改為5),代碼量增加得也非常少(仍為4行),最終運(yùn)行得到三個(gè)五角星數(shù):54748、92727和93084(如圖4)。

如果再復(fù)雜些,比如求解八位的“八仙數(shù)”、九位的“重陽數(shù)”,大家不妨對比測試一下不同方法的編程效率。

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 亚洲精品天堂在线观看| 日韩在线成年视频人网站观看| 91精品国产一区自在线拍| 色综合手机在线| 日韩精品毛片人妻AV不卡| 欧美综合区自拍亚洲综合绿色| 国产亚洲现在一区二区中文| 毛片网站观看| 精品福利国产| 欧美国产日韩在线观看| 亚洲第一区精品日韩在线播放| 国产91视频免费| 无码又爽又刺激的高潮视频| 亚洲人成色77777在线观看| 国产99精品视频| 男女精品视频| 999精品在线视频| 国产超碰一区二区三区| 精品国产成人av免费| 美女高潮全身流白浆福利区| 国产精品无码翘臀在线看纯欲| 国产国拍精品视频免费看| 国产十八禁在线观看免费| 久久精品无码中文字幕| 高清欧美性猛交XXXX黑人猛交| 99激情网| 国产精品美女网站| 狠狠躁天天躁夜夜躁婷婷| 亚洲欧美另类色图| 国产99在线| 丁香综合在线| 国产18页| 精品人妻AV区| 亚洲福利片无码最新在线播放| 中国丰满人妻无码束缚啪啪| 91香蕉国产亚洲一二三区 | 国产成人精彩在线视频50| julia中文字幕久久亚洲| 91麻豆国产视频| 亚洲第一成人在线| 特级毛片8级毛片免费观看| 国产噜噜在线视频观看| 一级全黄毛片| 亚洲中文字幕久久精品无码一区| 亚洲娇小与黑人巨大交| 国产女人喷水视频| 色婷婷综合在线| 白浆免费视频国产精品视频| 亚洲男女天堂| 日韩欧美中文| 2021亚洲精品不卡a| 无码AV动漫| 国产成人盗摄精品| 五月激情婷婷综合| 国产乱人伦AV在线A| 99久久免费精品特色大片| 亚洲制服丝袜第一页| YW尤物AV无码国产在线观看| 综1合AV在线播放| 福利一区在线| 日韩在线2020专区| 欧美黄色网站在线看| 久久成人免费| 欧美激情二区三区| 国产男人的天堂| 中文精品久久久久国产网址| 亚洲午夜天堂| 国产精品微拍| 亚洲AV人人澡人人双人| 国产亚洲成AⅤ人片在线观看| 99这里精品| 波多野结衣亚洲一区| 这里只有精品在线播放| 在线观看免费AV网| 国禁国产you女视频网站| 欧美三级自拍| 极品国产在线| 久久精品国产精品青草app| 精品国产网站| 91无码人妻精品一区| 国产成人高清精品免费| 波多野结衣在线se|