tft每日頭條

 > 圖文

 > python打印水仙花數

python打印水仙花數

圖文 更新时间:2024-11-20 04:31:08
什麼是水仙花數

水仙花數也被稱為超完全數字不變數、自戀數、自幂數、阿姆斯壯數或阿姆斯特朗數,嚴格的定義水仙花數,是指一個 3 位數,它的每個位上的數字的 3次幂之和等于它本身。如371 = 3^3 7^3 1^3,則371是一個水仙花數。

Python中的求解思路

根據水仙花數的定義,可以理出下面的編程思路:

  1. 新建一個空列表x,用以存儲所有的水仙花數
  2. 在For循環中,對100-999之間的任意一個整數i,逐個分解出其個位數a、十位數b和百位數c,比較a、b、c三個數字的3次幂之和是否等于i本身,若等于,則将i添加到列表x中
  3. 最後輸出的x即為求解的所有水仙花數

代碼如下圖所示:

python打印水仙花數(善用列表推導式)1

注意,在将一個整數i分解出個位數a、十位數b和百位數c時,個位數a是i除以10後得到的餘數,百位數c是i除以100後得到的餘數,而十位數則是先将i整除10後得到整數部分,再将整數部分除以10後得到的餘數數即為十位數,上面代碼運行結果如下,得到所有的水仙花數為[153,370,371,407]:

python打印水仙花數(善用列表推導式)2

使用列表推導式對代碼進行優雅的改進

上面代碼求解水仙花數時,實際代碼行數為第9-15行共7行代碼,太複雜了些,下面使用列表推導式作以下改進,代碼如下:

python打印水仙花數(善用列表推導式)3

将上面的7行代碼寫為第11行隻有1行代碼,運行結果仍然相同,即所有的水仙花數為[153,370,371,407],很明顯,代碼簡化了太多。

另外,關于列表推導式,其通用的書寫形式如下:

[表達式 for 變量 in 列表] 或者 [表達式 for 變量 in 列表 if 條件]

結論

列表推導式是Python語言中一項獨有的特性,使用推導式可以從一個數據序列根據一定的條件方便的構建出另一個新的數據序列。

從現在開始,善用列表推導式,做一個合格的優雅的pythoner吧。

歡迎加關注,共同交流。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved