libinlibin 发表于 2017-3-1 13:30:13

python while 循环后跟着一个整数,循环机制是什么呢?如下代码?

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:   #temp 是100-999的一组数,是只100-999循环一次还是一直循环下去呢?
      sum = sum + (temp%10) ** 3
      temp //= 10             #如何保证每一个数循环三次后再进行下一个数的循环呢。
    if sum == i:
      print(i)

不如喝牛奶 发表于 2017-3-1 13:30:14

python的循环语句和C语言的思想很像,foriin range(100,1000)是指i作为一个变量从100开始执行循环内语句,然后加一直到999,i的作用是计数器。temp是判断i是否满足条件做的一系列操作,但是不能改动i的值,比如i为120进入循环,循环若是改变的i的值,那么本次循环结束后会判断改动后的i比如1200是否在100-999,不是则跳出for循环,120以后的数字将不会再考虑是否为水仙花数。对10取余操作是取操作数即temp的个位数,此时temp还是为三位数,然后地板除法后,temp中的个位数变为小数点后一位被舍去,temp变为两位数,其中十位数成为个位数,下次循环时再次取出个位数即原temp的十位数,第三次循环时小于10的数除以10是0余它本身,所以循环末尾temp的百位数被取出,且temp变为0,while循环结束。接下来就是判断,然后计数的i再加一。希望能帮到你。

xxpythonxx 发表于 2017-3-1 14:54:10

while temp:里,如果temp是0就结束了,temp//=10,三位数,除3次就是0。然后故事就结束了。{:10_279:}

libinlibin 发表于 2017-3-1 18:52:01

不如喝牛奶 发表于 2017-3-1 13:30
python的循环语句和C语言的思想很像,foriin range(100,1000)是指i作为一个变量从100开始执行循环内语 ...

谢谢,明白啦
页: [1]
查看完整版本: python while 循环后跟着一个整数,循环机制是什么呢?如下代码?