|
发表于 2020-1-30 19:09:14
|
显示全部楼层
本帖最后由 bluesky0476 于 2020-4-16 09:26 编辑
看了半天,明白了,以下是我的理解,为了便于读懂,写得比较详细----------
i在range(100,1000)中,为100-999,i 依次取其中的值,取一个值,把值赋予temp ,即 temp=i ,然后进行一次while 循环运算 ;
sum初始值赋予0,既是对sum进行定义,同时sum也必须为0;
一、以153为例( 即i=153时):
1、temp % 10 : 取个位数(三位数除以10的余数), 如153 运算后取3;
2、sum = 0+3的3次方 =27 ----此时sum为个位的立方和;
3、temp=temp//10: 使位数左移一位,如153/10=15余3,取15;
4、此时,sum==27,i==153,sum!=i,不print(i);
5、返回while循环,此时,while 15(非0),循环继续执行;
6、sum = 27 + (15%10)**3 ,即sum= 27 + 5**3 = 152,----此时sum= 个位数立方和 + 十位数立方和 ;
7、temp=temp//10,即15 // = 10,运算后为temp=1;
8、返回while循环,此时,while 1(非0),循环继续执行;
9、sum =152 + (1%10)**3= 152+1 =153,此时sum= 个位数立方和 + 十位数立方和 + 百位数立方和 (注:1%10=1,因为1除以10,商为0,余数为1,此时取余数1);
10、temp=temp//10 , 即temp=1/10,结果为0,余1,此时temp取0 ;
11、此时,sum ==153,i==153,sum==i----print(i)
12、此时temp为0,继续返回while循环,为 while temp 变为 while 0 , 即i=153时的循环停止。
二、以154为例( 即i=154时):
1、temp % 10 : 取个位数(三位数除以10的余数), 如154 运算后取4;
2、sum = 0+4的3次方 =64 ----此时sum为个位的立方和;
3、temp=temp//10: 使位数左移一位,如154/10=15余4,取15;
4、此时,sum==64 ,i==154 ,sum!=i,不print(i);
5、返回while循环,此时,while 15(非0),循环继续执行;
6、sum = 64 + (15%10)**3 ,即sum= 64 + 5**3 = 189,----此时sum = 个位数立方和 + 十位数立方和 ;
7、temp=temp//10,即15 // = 10,运算后为temp=1;
8、返回while循环,此时,while 1(非0),循环继续执行;
9、sum =189 + (1%10)**3= 189+1 =190,此时sum= 个位数立方和 + 十位数立方和 + 百位数立方和 (注:1%10=1,因为1除以10,商为0,余数为1,此时取余数1);
10、temp=temp//10 , 即temp=1/10,结果为0,余1,此时temp取0 ;
11、此时,sum==190,i==154,sum!=i----不执行print(i)
12、此时temp为0,继续返回while循环,为 while temp 变为 while 0 , 即i=154时的循环停止。 |
|