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
賺錢方法
捕魚
主站蜘蛛池模板: 日韩欧美视频第一区在线观看| 1024国产在线| 国产麻豆永久视频| 亚洲综合在线网| a色毛片免费视频| 色噜噜综合网| 久久免费看片| 精品自窥自偷在线看| 亚洲精品国产日韩无码AV永久免费网 | 性69交片免费看| 日本福利视频网站| 成人中文在线| 无码高潮喷水在线观看| 四虎成人在线视频| 伊人中文网| 激情综合婷婷丁香五月尤物| 91青青在线视频| 国产欧美日韩在线在线不卡视频| 国产一区二区福利| 精品国产免费观看| 国产精品成人一区二区不卡| 国产91丝袜在线播放动漫 | 狠狠做深爱婷婷久久一区| 国产麻豆精品在线观看| 天天色综合4| 中文字幕在线播放不卡| 国产91在线|日本| 久久久久无码国产精品不卡| 一区二区三区四区精品视频 | 欧美特黄一级大黄录像| 亚洲综合色婷婷| 伊人中文网| 欧美亚洲欧美区| 欧美视频在线观看第一页| 国产玖玖玖精品视频| 71pao成人国产永久免费视频| 永久在线播放| 国产第二十一页| 91精品国产综合久久香蕉922| 久久免费精品琪琪| 日韩国产无码一区| 国产香蕉在线视频| 欧美日韩亚洲国产主播第一区| 亚洲成人在线免费| 国产综合网站| 在线观看国产一区二区三区99| 久久精品亚洲中文字幕乱码| 精品免费在线视频| 毛片久久网站小视频| 国产精品一区二区不卡的视频| 免费高清自慰一区二区三区| 伊人久久婷婷五月综合97色| 国产sm重味一区二区三区| 色香蕉网站| 久久毛片基地| 香蕉久久国产超碰青草| 婷婷色丁香综合激情| 日韩毛片免费视频| 成人欧美日韩| 无码免费的亚洲视频| 日韩欧美中文字幕在线精品| 亚洲 欧美 日韩综合一区| 精品福利视频网| 在线观看国产精美视频| 亚洲AV色香蕉一区二区| 国产精品免费电影| 色天天综合| 国产精品黄色片| 99伊人精品| av一区二区三区高清久久| 亚洲国产亚综合在线区| 男女性午夜福利网站| 最新亚洲人成无码网站欣赏网| 国产一区二区三区日韩精品| 国产剧情无码视频在线观看| 真人免费一级毛片一区二区| 91亚洲免费视频| 欧美成一级| 超薄丝袜足j国产在线视频| 四虎永久免费网站| 在线国产91| 久青草国产高清在线视频|