亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2021-06-28 10:46:22牟曉東
        電腦報(bào) 2021年14期
        關(guān)鍵詞:運(yùn)算符水仙花三位數(shù)

        牟曉東

        在編程語(yǔ)言的教材中常出現(xiàn)一道求解“水仙花數(shù)”的經(jīng)典問(wèn)題,即某個(gè)三位整數(shù)每個(gè)數(shù)位上數(shù)字的三次冪之和等于它本身,比如“153 = 1^3 + 5^3 + 3^3”。其實(shí),水仙花數(shù)只是“自冪數(shù)”的一種,類似的還有四位數(shù)的“四葉玫瑰數(shù)”(各數(shù)位四次方之和等于本身的數(shù))、五位數(shù)的“五角星數(shù)”、六位數(shù)的“六合數(shù)”等。Python語(yǔ)法靈活,可以使用多種方法來(lái)完成自冪數(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ù)字提取方法是通過(guò)“bai_wei = i//100”求“整商”來(lái)完成,比如計(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ù)相等。最后,通過(guò)print打印輸出變量i的數(shù)值,結(jié)果得到四個(gè)水仙花數(shù):153、370、371和407(如圖1)。

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

        因?yàn)樗苫〝?shù)是對(duì)一個(gè)三位數(shù)進(jìn)行判斷,所以直接構(gòu)建三層循環(huán)嵌套來(lái)實(shí)現(xiàn)從100到999的順序遞增。最外層的“for bai_wei in range(1,10):”控制百位數(shù)字循環(huán),注意要從1開(kāi)始(range()中的起始值和終止值參數(shù)為“左閉右開(kāi)”區(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ù)字。首先,同樣是通過(guò)“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ù)先通過(guò)“str(i)”轉(zhuǎn)換為字符串,再將int()函數(shù)映射至剛剛生成的字符串序列(迭代對(duì)象),就“還原”得到了三個(gè)整型數(shù)字,分別賦值給三個(gè)對(duì)應(yīng)的變量。

        接下來(lái)仍是使用相同的判斷語(yǔ)句和print()輸出語(yǔ)句,同樣會(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)換,代碼量非常精簡(jiǎn)。

        如果題目不是求解水仙花,而是位數(shù)更多的自冪數(shù),比如“五角星數(shù)”,前兩種方法就分別需要多構(gòu)建兩個(gè)“整除求余”和兩層循環(huán),代碼量和復(fù)雜度都會(huì)增加不少;而map()函數(shù)映射法只需要簡(jiǎn)單地增加“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)。

        如果再?gòu)?fù)雜些,比如求解八位的“八仙數(shù)”、九位的“重陽(yáng)數(shù)”,大家不妨對(duì)比測(cè)試一下不同方法的編程效率。

        猜你喜歡
        運(yùn)算符水仙花三位數(shù)
        擺三位數(shù)
        老祖?zhèn)魇诨具\(yùn)算符
        積是三位數(shù)還是四位數(shù)
        水仙花
        擺三位數(shù)
        養(yǎng)水仙花
        三位數(shù)密碼
        C++運(yùn)算符重載剖析
        表達(dá)式求值及符號(hào)推導(dǎo)
        C++中運(yùn)算符的重載應(yīng)用
        国产成人一区二区三区| 国产精品永久免费视频| 亚洲AV电影天堂男人的天堂| 亚洲AⅤ樱花无码| 免费一区二区三区av| 亚洲国产区中文在线观看| 国产亚洲av无码av男人的天堂| 日韩人妻无码精品久久| 日韩手机在线免费视频| 日韩精品永久免费播放平台| 美利坚亚洲天堂日韩精品| 最新中文字幕一区二区| 国产婷婷色一区二区三区在线| 台湾佬综合网| 午夜久久精品国产亚洲av| 国产一区二区三区精品成人爱| 国内精品免费一区二区三区| 亚洲va中文字幕| 色丁香在线观看| 国产丝袜美腿诱惑在线观看| 青青草在线免费播放视频| 亚洲精品tv久久久久久久久久| 国产成人无码av在线播放dvd| 国产精品亚洲综合色区韩国| 国产精品美女主播在线| 亚洲中文字幕无码av永久| 中国老妇女毛茸茸bbwbabes| 国产午夜成人久久无码一区二区| 久久久久久一本大道无码| 性色av色香蕉一区二区蜜桃| 日韩乱码人妻无码中文字幕久久| 久久精品国产亚洲vr| 亚洲女同人妻在线播放| 秋霞在线视频| 久久久无码一区二区三区| 日韩精品一区二区三区四区视频| 在线观看免费日韩精品| 天天躁狠狠躁狠狠躁夜夜躁| 日韩在线观看网址| 亚洲精品国产av日韩专区| 亚洲欧美精品suv|