下面是关于“python打印n位数‘水仙花数’(实例代码)”的完整攻略,包括示例说明:
什么是水仙花数
所谓“水仙花数”,是指一个n位数(n >= 3),它的每个位上数字的n次幂之和等于它本身。例如,153是一个3位的水仙花数,因为$1^3 + 5^3 + 3^3 = 153$。要注意的是,本题需要输出所有n位的水仙花数。
思路分析
要完成这个任务,我们需要遍历所有n位数,对于每个数判断它是否为水仙花数。具体的实现思路为:
- 输入要判断的数位数n
- 遍历所有n位数
- 判断该数是否为水仙花数
- 如果是水仙花数,则将其输出
接下来,让我们一步步地实现这个程序。
代码实现
我们先来看完整的代码:
n = int(input('请输入要判断的数位数n:'))
if n <= 0: # n不能为负数或0
print("输入有误!")
else:
for i in range(10**(n-1), 10**n):
temp = i
sum = 0
while temp > 0:
sum += (temp % 10) ** n
temp = temp // 10
if sum == i:
print(i)
代码比较简洁,主要分三个部分进行:
- 输入要判断的数位数n
- 遍历所有n位数,并判断是否为水仙花数
- 输出所有n位的水仙花数
接下来我们来详细解释代码中各个部分的含义。
首先是第1部分,在程序中使用input
来读取用户输入,并用int
将字符串转换为整数。读取到用户输入后,需要判断用户输入的n是否有效:
n = int(input('请输入要判断的数位数n:'))
if n <= 0:
print("输入有误!")
如果输入不合法,即n<=0,则输出“输入有误!”。
接着是第2部分,遍历所有n位数,并判断是否为水仙花数。在程序中,我们使用range
来遍历所有的n位数。同时,我们需要一个变量temp来保存当前正在判断的数值,还需要一个变量sum来保存对该数值各位数的n次幂之和。具体而言,判断一个数是否为水仙花数的步骤如下:
- 将该数值赋值给temp
- 将sum赋值为0,开始计算各位数的n次幂之和
- 不断地从temp中取出最低位数字,计算该位数的n次幂,并累加到sum中
- 将temp除以10,将下一位数取出,并继续计算
- 如果sum等于该数值i,则说明该数是水仙花数,可以输出
实现代码:
for i in range(10**(n-1), 10**n):
temp = i
sum = 0
while temp > 0:
sum += (temp % 10) ** n
temp = temp // 10
if sum == i:
print(i)
最后是第3部分,输出所有n位的水仙花数。在循环中,如果发现了一个水仙花数,那么我们就把它打印出来:
if sum == i:
print(i)
输出的结果就是程序运行后输出的所有n位水仙花数。
示例说明
假如我们要求3位数的水仙花数,可以把代码复制到Python的交互式环境中,然后输入3,得到以下输出结果:
请输入要判断的数位数n:3
153
370
371
407
我们可以验证一下,确实有4个3位的水仙花数。
再来一个例子,如果要求4位数的水仙花数,依然是将代码复制到Python的交互式环境中,然后输入4,得到以下输出结果:
请输入要判断的数位数n:4
1634
8208
9474
同样可以验证这3个4位水仙花数的正确性。
到这里,我们就完成了Python打印n位数“水仙花数”的任务。如果有任何问题,欢迎指正。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python打印n位数“水仙花数”(实例代码) - Python技术站