一个range函数理解错误导致程序运行不正确的例子

原创 2013年12月05日 22:31:57

    最近入手python,在网上看到有人用经典排序算法练手,本人也打算效仿,谁知一开始在最简单的插入算法上卡壳,花了一点时间才弄明白原因,原代码如下:


def insert_sort( array ):

    len = len( array )

    for i in range( 1, len ):

        temp = array[i]

        j = i - 1

        for j in range( j, -1, -1 ):

            if array[j] <= temp:

                break

            else:

                array[j+1] = array[j]

        array[j+1] = temp


    调试发现问题出在array[j+1] = temp上,当j等于0时且array[0] > temp时候,array[0]后移到array[1],而j却不会继续减小到-1,所以array[0]无法被赋值。比较一下两个语句片段就会明白其中原因:

c语言:

   int  j = 10;

    for ( j = 10; j >=0; --j )

    {

        printf( "%d", j );

    }

    printf( "%d', j );


python:

j = 10

for j in range(10, -1, -1):

    print( "%d" %j )

print( "%d", %j )


c语言输入: 10 9 8 7 6 5 4 3 2 1 0 -1

python输出:10 9 8 7 6 5 4 3 2 1 0 0

python的range函数到了边界会自动停止步进。所以上面的代码做一下修改就可以了:

def insert_sort( array ):

    len = len( array )

    for i in range( 1, len ):

        temp = array[i]

        j = i - 1

        while j >= 0:

            if array[j] <= temp:

                break

            else:

                array[j+1] = array[j]

            j -= 1

        array[j+1] = temp



    

相关文章推荐

64位操作系统下IIS报“试图加载格式不正确的程序”错误

缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误。   原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不...

VS2012加载DLL编译出现试图加载格式不正确的程序; 以及运行出现Mixed mode assembly is built against version 'v2.0.50727' of the

VS2012加载DLL编译出现试图加载格式不正确的程序;以及运行出现Mixed mode assembly is built against version 'v2.0.50727' of theru...

C# 001 --- 正确的删除一个控件的事件函数 --- 解决错误: “A”不包含“B”的定义,并且找不到可接受类型为“A”的第一个参数的扩展方法“B”(是否缺少 using 指令或程序集引用?)

先添加一个控件。比如添加一个GroupBox控件。当然,这个控件你不需要任何事件函数,但是如果你已经双击这个控件,开始编辑这个控件的事件函数了,那么这个时候要删除这个控件的事件函数需要2步:Step ...

结构体的定义位置不正确导致的错误

今天遇到一个结构体数组的定义错误,MDK编译器报错为: error: expression must be a pointer to a complete object type 本以为是函数形参...

程序运行错误

  • 2009年01月02日 14:27
  • 997KB
  • 下载

一种解决运行程序报“应用程序配置不正确”的问题

在我们开发工程中,可能有些情况下,不能在本机进行调试。这个时候我们一般会使用VM(vmware)建立一个虚拟机环境,然后把编译过的程序放在该虚拟机环境下执行调试。可是在某些情况下,不管我们编译的是de...

[Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确

win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确1.问题描述承接了一个项目,给甲方交接的时候,在它的电脑中运行出现了这个错误。 应用程序无法启动,因为应用程序的并行配置不正...

VC运行时库与应用程序配置不正确,程序无法启动”的解决方法资料收集

转:  http://dearymz.blog.163.com/blog/static/205657420096675044722/  VC项目属性 →配置属性→C/C++→代码生成→运行时库 可以...

转载VS2008 编译出来的exe文件,运行遇到“应用程序配置不正确,程序无法启动”的问题

首先感谢这位几仁兄的几篇博客:   http://hi.baidu.com/fairysky/blog/item/130dda13db7b050a5aaf53be.html   http:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个range函数理解错误导致程序运行不正确的例子
举报原因:
原因补充:

(最多只允许输入30个字)