370的时候,计算3和7的立方和与3、7、0的立方和是一样的,你的if判断在循环中,就会重复输出370。应该先算出3位数的立方和后在判断。
参考代码:
# 获取用户输入的范围
start = int(input("请输入起始数:"))
end = int(input("请输入结束数:"))
count = 0
# 遍历范围内的每个数
for num in range(start, end + 1):
# 将数转换为字符串,以便处理每个位上的数字
num_str = str(num)
# 计算每个位上数字的n次方之和
sum_of_powers = sum([int(digit) ** len(num_str) for digit in num_str])
# 判断是否是水仙花数
if num == sum_of_powers:
count += 1
print(num)
不知道你这个问题是否已经解决, 如果还没有解决的话:水仙花数是一个三位整数,如153是一个水仙花数,是因为该数
的百位的立方、十位的立方、个位的立方之和等于该数本身,如下所
示:
1^3 + 5^3+ 3^3=153
print("所有的三位数中的水仙花数如下图所示:")
n=0
for i in range(100,1000):
a = i//100 #取百位数
b = (i-a*100)//10 #取十步数
c = (i-a*100-b*10) #取个位数
if i == a**3+b**3+c**3:
print(i)
n+=1
print("共有",n,"个")