打印水仙花数,只有一种方法Pytho

北京中科参与健康管理与商业医疗保险论坛 http://baidianfeng.39.net/a_zczz/180323/6122194.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)

实现了

这样,我们可以轻松实现。具体输出如下:

那么,还有没有别的方法呢?答案是肯定的!往下看……

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

上面是把三位数各个位数单独拿出来进行遍历,这样的话会有很多重复的组合,浪费时间(很难察觉),有没有好一点的for循环方案呢?

我们直接从-这些三位数中,将每个数字中个位、十位、百位数提取出来,按照水仙花数规则,将符合条件的三位数筛选出来即可。

代码如下:

for循环打印的另一种方式

forninrange(,0):

i=n//

j=n//10%10

k=n%10

ifn==i**3+j**3+k**3:

print(n)

同样可以实现。

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

对于一个三位数是可以转化为字符串类型的,遍历转化后的每一个字符,将字符再转化为整数后,求各位的立方和,然后同三位数比较,如果相等则打印输出即可。

for循环遍历的另一种方式

forninrange(,0):

s=str(n)

sum_num=0

foriins:

sum_num+=int(i)**3

ifsum_num==n:

print(n,end=)

这种方式也可以实现同样的效果。

04方法四:更加Pythonic表示

我们把方法三中的写法变得更加Pythonic一点

来看下代码:

另一种表示

foriinrange(,0):

ifsum(pow(int(d),3)fordinstr(i))==i:

print(i,end=\t)

轻松实现效果。为了避免重复代码,上述代码中截图有可能和后面代码内容不一致;再者,贴上代码方便大家复制粘贴测试,截图方便代码对齐。

05这就完了?

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


转载请注明:http://www.ordosmjjdfwzx.net/afhzp/8493.html


当前时间: