Python 我的代码给了我错误的顺序
我想知道100-1000之间的数字,每个数字^3的交叉和等于数字本身 例如 我的代码给出了数字,但不是升序。我做错了什么 守则:Python 我的代码给了我错误的顺序,python,loops,for-loop,while-loop,range,Python,Loops,For Loop,While Loop,Range,我想知道100-1000之间的数字,每个数字^3的交叉和等于数字本身 例如 我的代码给出了数字,但不是升序。我做错了什么 守则: numbers=list(range(101,1000)) for item in numbers: sum=0 sum2="" while item: d=item%10
numbers=list(range(101,1000))
for item in numbers:
sum=0
sum2=""
while item:
d=item%10
item=item//10
sum=(sum+d**3)
sum2=sum2+str(d)
if sum==int(sum2):
print(sum2)
结果:
371
153
407
您应该将正在迭代的数字与立方数字之和进行比较:
numbers = list(range(101, 1000))
for item in numbers:
sum = 0
number = item
while number:
d = number % 10
number = number // 10
sum = (sum + d ** 3)
if sum == item:
print(item)
这将产生:
153
370
371
407
您可以采用更简单的方法:
numbers=list(range(101,1000))
for num in numbers:
product = sum([int(x)**3 for x in str(num)])
if product == num:
print(num)
输出:
153
370
371
407
这里有一个简单的单行程序来解决您的特定问题:
[n for n in range(101, 1000) if sum([int(v)**3 for v in list(str(n))]) == n]
拿一个简单的数字,比如e。G17作为物品,看看sum2会发生什么。非常感谢!!!这解决了我的问题。总而言之,您将number=item放在while循环之前,这样您就有了第二个变量(number),可以在循环中更改,同时还有“item”,您最终将其与“sum”进行比较。我觉得我太笨了,无法理解您的代码。但一旦我在编码方面有了进步,我会再看一遍:)谢谢!
[n for n in range(101, 1000) if sum([int(v)**3 for v in list(str(n))]) == n]