程序错误!

程序错误!



[Copy to clipboard] [ - ]
CODE:
#!/usr/local/bin/python

def showMaxFactor(num):

    count = num / 2

    while count > 1:

        if num % count == 0:
            print 'largest factor of %d is %d' % (num, count)
            break

          count -= 1

        else:
            print num, "is prime"

for eachNum in range(10, 21):
    showMaxFactor(eachNum)

执行的时候出现错误,错误信息如下:

[Copy to clipboard] [ - ]
CODE:
%python program/python/maxfack.py
  File "program/python/maxfack.py", line 12
    count -= 1
             ^
IndentationError: unindent does not match any outer indentation level
%

这个程序我是照《Python核心编程》这书里直抄的,我反复核对过书中的这代码了,没发现哪里不同!

初学的,不懂之原谅!

缩进不对


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python

def showMaxFactor(num):

    count = num / 2

    while count > 1:

        if num % count == 0:
            print 'largest factor of %d is %d' % (num, count)
            break

        count -= 1

    else:
        print num, "is prime"

for eachNum in range(10, 21):
    showMaxFactor(eachNum)



QUOTE:
原帖由 retuor 于 2008-8-8 10:56 发表

#!/usr/bin/env python

def showMaxFactor(num):

    count = num / 2

    while count > 1:

        if num % count == 0:
            print 'largest factor of %d is %d' % (num, count)
  ...

看不懂??

我看到除了

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python

不同外其它的都相同。

不过改了以后还是出现同样的错误!!



QUOTE:
原帖由 maoaotuo 于 2008-8-8 10:48 发表
缩进不对

能不能给个明确一点的答案

是哪里的缩进问题??
count 跟 if 对齐

你把代码复制过去执行一下就知道了。


QUOTE:
原帖由 retuor 于 2008-8-8 11:06 发表
count 跟 if 对齐

你把代码复制过去执行一下就知道了。

谢谢!

搞掂了。

不过不懂的是为什么 count 要和 if 对齐才能执行呢??
python 用缩进来标识语句块,其他语言用花括号或 begin, end。 if 和 conut 都是在 while 语言块中的。框架大致为:

while xxx {
      if ....

      count -.....
}


而  break 等语句是在 if 块中的,所以要有更多缩进。

python 对缩进要求很严格。



QUOTE:
原帖由 retuor 于 2008-8-8 11:18 发表
python 用缩进来标识语句块,其他语言用花括号或 begin, end。 if 和 conut 都是在 while 语言块中的。框架大致为:

while xxx {
      if ....

      count -.....
}


而  break 等语句是在 if 块 ...

原来是这样!!

count不是只作为一个变量吗??
count 是个变量,但关键不在这里。

while 条件:
        do somethings
else:
        do some other things

当条件成立的时候,做某些事情。但 python 如何知道条件成立时应该执行什么呢?就是跟在 while 后,缩进了的那些了。

在你给出的例子里,当 while 的条件成立时,如果不跳出(break),则 count 要减 1. 所以 count 所在的语句要缩进一层。

在你原来的代码中,缩进了 1.5 层,这是不合法的。