473951841 发表于 2017-4-23 22:33:39

蛇语十八讲第1题水仙花求纠错(感觉思路不同于甲鱼老师)

找所有水仙花数

temp = ['0']

result = 0

t = 0

count = 0

while count < 1000:

   

      while t < len(temp):
          k = int(temp)
          result += k**3
          t+=1

      l = list(temp)
      m = l
      

      if result==int(m):

            print(int(m))

      j = int(m)
      j += 1
      trans= str(j)
      temp = list(trans)
      count+=1

打算用int形式对数字增减,用List输出各个位数并三次方求和,再转化成int与int形式的数字比较,输出只有0,求指教
      
      
      

            

      





thexiosi 发表于 2017-4-24 18:31:38

本帖最后由 thexiosi 于 2017-4-24 18:44 编辑

hi

代码中可能存在如下bug:
第八行 result += k**3,每一次循环,变量result的值总会累加(上一轮的循环值加入运算):第一轮循环 result=0 + 0**3 、第二轮循环 result =0 + 1**3 、第三轮循环 result = 1 + 2**3,第四轮循环 result = 9 + 3**3...,鉴于此,第12行 if result==int(m) ,除第一轮循环成立外,其余不会成立,因此只会打印 0 。

473951841 发表于 2017-4-25 20:28:38

thexiosi 发表于 2017-4-24 18:31
hi

代码中可能存在如下bug:


是的,但是1.即便如此至少也会打印0和1吧~
               2.我重新修改了一下把result = 0加在了每次循环开始,而且特地从2开始,但这次直接没有输出了

temp = '2'
t = 0
count = 0


while count < 1000:
      result = 0
      while t < len(temp):
                k = int(temp)
                result += k**3
                t+=1         

      m = temp
      

      if result==int(m):
                print(int(m))



      j = int(m)
      j += 1
      temp= str(j)
      count+=1               

thexiosi 发表于 2017-4-26 09:28:11

473951841 发表于 2017-4-25 20:28
是的,但是1.即便如此至少也会打印0和1吧~
               2.我重新修改了一下把result = 0加在了每次 ...

恩 你的分析比我更全面 我今天再试试
页: [1]
查看完整版本: 蛇语十八讲第1题水仙花求纠错(感觉思路不同于甲鱼老师)