Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的代码给了我错误的顺序_Python_Loops_For Loop_While Loop_Range - Fatal编程技术网

Python 我的代码给了我错误的顺序

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

我想知道100-1000之间的数字,每个数字^3的交叉和等于数字本身

例如

我的代码给出了数字,但不是升序。我做错了什么

守则:

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]