免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3182 | 回复: 10
打印 上一主题 下一主题

程序错误! [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-08 10:39 |只看该作者 |倒序浏览


  1. #!/usr/local/bin/python

  2. def showMaxFactor(num):

  3.     count = num / 2

  4.     while count > 1:

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

  8.           count -= 1

  9.         else:
  10.             print num, "is prime"

  11. for eachNum in range(10, 21):
  12.     showMaxFactor(eachNum)

复制代码

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

  1. %python program/python/maxfack.py
  2.   File "program/python/maxfack.py", line 12
  3.     count -= 1
  4.              ^
  5. IndentationError: unindent does not match any outer indentation level
  6. %
复制代码


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

初学的,不懂之原谅!

[ 本帖最后由 gtuiw 于 2008-8-8 10:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-08 10:48 |只看该作者

回复 #1 gtuiw 的帖子

缩进不对

论坛徽章:
0
3 [报告]
发表于 2008-08-08 10:56 |只看该作者

  1. #!/usr/bin/env python

  2. def showMaxFactor(num):

  3.     count = num / 2

  4.     while count > 1:

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

  8.         count -= 1

  9.     else:
  10.         print num, "is prime"

  11. for eachNum in range(10, 21):
  12.     showMaxFactor(eachNum)
复制代码

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
4 [报告]
发表于 2008-08-08 11:01 |只看该作者
原帖由 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)
  ...

看不懂??

我看到除了
  1. #!/usr/bin/env python
复制代码
不同外其它的都相同。

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

[ 本帖最后由 gtuiw 于 2008-8-8 11:04 编辑 ]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
5 [报告]
发表于 2008-08-08 11:03 |只看该作者
原帖由 maoaotuo 于 2008-8-8 10:48 发表
缩进不对



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

是哪里的缩进问题??

论坛徽章:
0
6 [报告]
发表于 2008-08-08 11:06 |只看该作者
count 跟 if 对齐

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

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
7 [报告]
发表于 2008-08-08 11:11 |只看该作者
原帖由 retuor 于 2008-8-8 11:06 发表
count 跟 if 对齐

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


谢谢!

搞掂了。

不过不懂的是为什么 count 要和 if 对齐才能执行呢??

论坛徽章:
0
8 [报告]
发表于 2008-08-08 11:18 |只看该作者
python 用缩进来标识语句块,其他语言用花括号或 begin, end。 if 和 conut 都是在 while 语言块中的。框架大致为:

while xxx {
      if ....

      count -.....
}


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

python 对缩进要求很严格。

[ 本帖最后由 retuor 于 2008-8-8 11:20 编辑 ]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
9 [报告]
发表于 2008-08-08 11:30 |只看该作者
原帖由 retuor 于 2008-8-8 11:18 发表
python 用缩进来标识语句块,其他语言用花括号或 begin, end。 if 和 conut 都是在 while 语言块中的。框架大致为:

while xxx {
      if ....

      count -.....
}


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


原来是这样!!

count不是只作为一个变量吗??

论坛徽章:
0
10 [报告]
发表于 2008-08-08 11:45 |只看该作者
count 是个变量,但关键不在这里。

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

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

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

在你原来的代码中,缩进了 1.5 层,这是不合法的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP