水滴石穿007 发表于 2021-5-14 17:58:02

这篇作业我怎么都做不对,求老师们帮我看看问题出哪里


此图是python 18讲作业的第一题,是我求助的原问题

这是我的代码,我看了很久也不知道哪里出现了问题,各位老师能不能帮我改改?{:10_266:} {:10_266:}

def flower():
    for each in range(100,1000):
      i = 2
      while i:
            result = 0
            result += (each//(10**i))**3
            each -= (each//(10**i))*(10**i)
            i -= 1
      if result == each:
            print(each)

输出结果为
>>> flower()
0
1
8
0
1
8
0
1
8
0
1
8
0
1
8
0
1
8
0
1
8
0
1
8
0
1
8
            

txxcat 发表于 2021-5-14 17:58:03

for each in range(100,1000):
    i = 2
    j = each         #each值在下面循环里会更改,所以不能直接代入
    result = 0      #在循环里定义,值每次都重置为0
    while i>=0:       # 你的循环到第三次i=0就跳出循环了
      result += (j//(10**i))**3
      j -= (j//(10**i))*(10**i)      #改成j =j%(10**i)更好
      i -= 1
    if result == each:
      print(each)

suchocolate 发表于 2021-5-14 18:31:52

题目是啥来着,很久没看视频了。

水滴石穿007 发表于 2021-5-14 18:40:07

原题目是: 寻找水仙花数      @suchocolate
   
题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。

以下是标准答案
def Narcissus():
    for each in range(100, 1000):
      temp = each
      sum = 0
      while temp:
            sum = sum + (temp%10) ** 3
            temp = temp // 10# 注意这里用地板除

      if sum == each:
            print(each, end='\t')

print("所有的水仙花数分别是:", end='')
Narcissus()

水滴石穿007 发表于 2021-5-14 18:40:41

不好意思各位 图好像没插入成功{:10_250:}{:10_266:}{:10_266:}{:10_266:}

水滴石穿007 发表于 2021-5-14 18:41:13

suchocolate 发表于 2021-5-14 18:31
题目是啥来着,很久没看视频了。

您好 我回复在下一楼了

水滴石穿007 发表于 2021-5-14 19:21:35

txxcat 发表于 2021-5-14 17:58


十分感谢{:10_254:}
页: [1]
查看完整版本: 这篇作业我怎么都做不对,求老师们帮我看看问题出哪里