五色水仙

首页 » 常识 » 常识 » 打印水仙花数,只有一种方法Pytho
TUhjnbcbe - 2024/7/30 23:32:00
白癜风该怎么治疗 http://pf.39.net/bdfyy/bdfal/160316/4790116.html
今天,我们来和大家探讨一个入门级的话题:使用Python打印输出水仙花数水仙花所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。要用到公式如:是一个水仙花数,因为=1的三次方+5的三次方+3的三次方。

01方法一:for循环打印输出(三位数组合遍历)

三位数中,每一位数的范围应该是0-9之间的数。我们遍历三位数中的每一位数字,当数字组合成三位数时符合水仙花数的条件时,将该数字打印输出。代码如下:for循环打印输出水仙花数foriinrange(1,10):forjinrange(0,10):forkinrange(0,10):ifi*+j*10+k==i**3+j**3+k**3:print(i*+j*10+k)实现了这样,我们可以轻松实现。具体输出如下:370371407那么,还有没有别的方法呢?答案是肯定的!往下看……

02方法二:for循环打印输出(三位数直接遍历)

上面是把三位数各个位数单独拿出来进行遍历,这样的话会有很多重复的组合,浪费时间(很难察觉),有没有好一点的for循环方案呢?我们直接从-这些三位数中,将每个数字中个位、十位、百位数提取出来,按照水仙花数规则,将符合条件的三位数筛选出来即可。代码如下:for循环打印的另一种方式forninrange(,0):i=n//j=n//10%10k=n%10ifn==i**3+j**3+k**3:print(n)同样可以实现。

03方法三:for循环打印输出(三位数转化字符串遍历)

对于一个三位数是可以转化为字符串类型的,遍历转化后的每一个字符,将字符再转化为整数后,求各位的立方和,然后同三位数比较,如果相等则打印输出即可。for循环遍历的另一种方式forninrange(,0):s=str(n)sum_num=0foriins:sum_num+=int(i)**3ifsum_num==n:print(n,end=)这种方式也可以实现同样的效果。

04方法四:更加Pythonic表示

我们把方法三中的写法变得更加Pythonic一点来看下代码:另一种表示foriinrange(,0):ifsum(pow(int(d),3)fordinstr(i))==i:print(i,end=\t)轻松实现效果。为了避免重复代码,上述代码中截图有可能和后面代码内容不一致;再者,贴上代码方便大家复制粘贴测试,截图方便代码对齐。

05这就完了?

这还远远不够,我们知道,水仙花数是自幂数的一种,它也叫阿姆斯特朗数。对于自幂数的打印输出,还有很多内容哦,如何使用Python实现呢?我们内容会有所涉及,大家
1
查看完整版本: 打印水仙花数,只有一种方法Pytho