zoukankan      html  css  js  c++  java
  • Python字符串_调试_术语列表

    一,调试

    使用索引来遍历一个序列中的值的时候,弄清楚遍历的开头和结尾很不容易。下面这个函数用来对比两个单词,如果一个是另一个的倒序就返回真,但这个函数代码中有两处错误:

    $ cat c.py

    #!/bin/python

    def is_reverse(word1, word2):

        if len(word1) != len(word2):

           return False

        i = 0

        j = len(word2)

        while j > 0:

              if word1[i] != word2[j]:

                 return False

              i = i + 1

              j = j - 1

        return True  

    print(is_reverse('pots', 'stop'))

    第一个 if 语句是检查两个词的长度是否一样。如果不一样长,当场就返回假。对函数其余部分,我们假设两个单词一样长,这里用到了守卫模式。

    i 和 j 都是索引: i从头到尾遍历单词 word1,而j逆向遍历单词word2,如果我们发现两个字母不匹配,就可以立即返回假。如果经过整个循环,所有字母都匹配,就返回真。

    如果我们用这个函数来处理单词『pots』和『stop』,打印结果,希望函数返回真,但得到的却是索引超出范围的错误:

    $ python3 c.py

    Traceback (most recent call last):

      File "c.py", line 13, in <module>

        print(is_reverse('pots', 'stop'))

      File "c.py", line 8, in is_reverse

        if word1[i] != word2[j]:

    IndexError: string index out of range

    为了改正这个错误,第一步就是在出错的那行之前先输出索引的值:

    $ cat c.py

    #!/bin/python

    def is_reverse(word1, word2):

        if len(word1) != len(word2):

           return False

        i = 0

        j = len(word2)

        while j > 0:

              print(i, j)        #增加这一行,打印索引值

              if word1[i] != word2[j]:

                 return False

              i = i + 1

              j = j - 1

        return True  

    print(is_reverse('pots', 'stop'))

    然后我再次运行函数:

    $ python3 c.py

    0 4

    。。。。。。

    IndexError: string index out of range

    索引值打印出来了,是0和4,但程序仍然报错索引值超出范围。

    第一次循环完毕的时候,j 的值是4,这超出了『pots』这个字符串的范围了(索引值是0-3)。最后一个索引应该是3,但现在打印出的索引值是4,所以报错。而j的初始值应该是 len(word2)-1才对。

    $ cat c.py

    #!/bin/python

    def is_reverse(word1, word2):

        if len(word1) != len(word2):

           return False

        i = 0

        j = len(word2)-1         #增加-1

        while j > 0:

              print(i, j)

              if word1[i] != word2[j]:

                 return False

              i = i + 1

              j = j - 1

        return True  

    print(is_reverse('pots', 'stop'))

    打印:

    $ python3 c.py

    0 3

    1 2

    2 1

    True

    二,术语列表

    对象: 一个值能够指代的东西。目前为止,你可以把对象和值暂且作为一码事来理解。

    序列: 一系列值的有序排列,每一个值都有一个唯一的整数序号。

    元素: 一列数值序列当中的一个值。

    索引: 一个整数值,用来指代一个序列中的特定一个元素,比如在字符串里面就指代一个字符。在 Python 里面索引从0开始计数。

    切片: 字符串的一部分,通过一个索引区间来取得。

    空字符串: 没有字符的字符串,长度为0,用两个单引号表示。

    不可更改: 一个序列中所有元素不能被改变的性质。

    遍历: 在一个序列中依次对每一个元素进行某种相似运算的过程。

    搜索: 一种遍历的模式,找到要找的内容的时候就停止。

    计数: 一种用来统计某种东西数量的变量,一般初始化为0,然后逐次递增。也可以使用len函数统计字符串长度作为初始值,而后递减。

    方法调用: 调用方法的语句。

    可选参数: 一个函数或者方法中有一些参数是可选的,非必需的。
    结束。

  • 相关阅读:
    类的静态成员
    QT上的Mysql编程
    将博客搬至CSDN
    ARM开发板系统移植-----rootfs的制作
    ARM开发板系统移植-----kernel的编译
    ARM开发板系统移植-----u-boot的编译
    Linux 消息队列编程
    Linux 共享内存编程
    Linux 信号量同步编程
    Linux 信号量互斥编程
  • 原文地址:https://www.cnblogs.com/liusingbon/p/13172096.html
Copyright © 2011-2022 走看看