#s2-7 四叶玫瑰数
运用此代码可以计算出4位数当中的所有四叶玫瑰数
n = 0 #统计个数的计数器,初值为0
# 请在下面编写代码
# ********** Begin ******** #
num=0
for i in range(1000,9999):
sum = 0 #初始值
num=str(i)
for i in num: # n= '123' 遍历 i='2'
sum += int(i)**4 #sum = 36
if sum == eval(num):
n=n+1
print(sum)
# ********** End ********** #
print('共有{}个四叶玫瑰数'.format(n))
输出的结果为
1634
6688
8208
9474
共有4个四叶玫瑰数
然而手动计算后你会发现6688不属于四叶玫瑰数
6688=6^4 +6^4 + 8^4
6688≠6^4 +6^4 + 8^4 + 8^4
并且同源的代码可以验证此问题
n = input() #输入数据
result = '都不是'
if len(n) == 3:
sum = 0 #初始值
for i in n: # n= '123' 遍历 i='2'
sum += int(i)**3 #sum = 36
if sum == eval(n):
result = '水仙花数'
#请在下面补充代码,完成程序功能
########## Begin ########
elif len(n)==4:
sum = 0 #初始值
for i in n: # n= '123' 遍历 i='2'
sum += int(i)**4 #sum = 36
if sum == eval(n):
result = '四叶玫瑰数'
print(result)
########## End ##########
输入6688得到
6688
都不是
由此可知6688确实不属于四叶玫瑰数,但第一个源代码能以同源于第二个的源代码计算出不属于四叶玫瑰数的6688。多次修改查找后并无发现代码上面的问题。
有同学知道这是为什么呢?究竟是哪里出错了。
根据评论区小伙伴的帮助指出是if缩进具有问题。