核心编程里的习题的问题

(a)研究这段代码并描述这段代码想做什么.在所有的(#)处都要填写你的注释.
(b)这个程序有一个很大的问题,比如输入6,12,20,30,等它会死掉,实际上它不能处理任何的偶数,找出原因.
(c)修正(b)中提出的问题
  1. num_str = raw_input('Enter a number: ')

  2. num_num = int(num_str)

  3. fac_list = range(1, num_num+1)
  4. print "BEFORE:", fac_list

  5. i = 0

  6. while i < len(fac_list):
  7.    
  8.     if num_num % fac_list[i] == 0:
  9.         del fac_list[i]
  10.     i = i + 1

  11. print "AFTER:", fac_list
复制代码
问题是我运行的好好,没有死掉

作者: liaozd   发布时间: 2011-05-17

不同版本python在 while i < len(..) 时处理方式不一样

作者: windwiny   发布时间: 2011-05-18

本帖最后由 synchalt 于 2011-05-18 21:40 编辑
  1. while i < len(fac_list):
  2.    
  3.     if num_num % fac_list[i] == 0:
  4.         print i
  5.         del fac_list[i]
  6.     i = i + 1
  7. print "AFTER:", fac_list

  8. 输入6 输出:
  9. [1,2,3,4,5,6]
  10. 0
  11. 1
  12. 3
  13. [2,4,5]
  14. 题意好像是 想删掉能被本身整除的,,i[0] i[1] i[3]
  15. i[0]=1 i[1]=2 i[3] = 4<-----这个好像错了。i[5] = 6  没能删掉(至少i里面没打印出来。)
复制代码

作者: synchalt   发布时间: 2011-05-18