常见的编程错误
2.1 试图访问一个未赋值的变量,会产生运行时错误。
2.2 ==,!=, >=和<=这几个运算符的两个符号之间出现空格,会造成语法错误。
2.3 !=,<>, >=和<=这几个运算符中,假如两个字符的顺序弄反了(分别写成=!,><, =>,=<),会造成语法错误。
2.4 切不可将相等运算符"=="同赋值运算符"="弄混了。其实按正统逻辑,在读的时候,相等与算符才应读成"...等于..."。赋值运算符则应该读成"...获得...",”获得...的值“或者"被赋值为..."。有人喜欢把相等运算符读成"等于等于"。在python中,如果在条件语句中使用了错误的赋值符号,会造成语法错误。
2.5 忘记在if结构中插入冒号(:)使语法错误。
2.6 忘记对if结构的主体进行缩进(缩排)使语法错误
2.7 如果一个区域包含的代码行没有统一进行缩进,python解释器会认为那些行属于其他区域,因而造成语法或逻辑错误
3.1 将关键字用作标识符是语法错误
3.2 没有对从属于if或else这两种suite的全部语句进行正确缩进,会造成语法错误。
3.3 忘记对suite中的所有语句进行缩进,会导致语法或逻辑错误
3.4 除以零是严重的逻辑错误
3.5 所有控制结构至少要包含一个语句。不包含语句的控制结构会导致语法错误。
3.6 在while结构主体中,如果没有提供最终会造成while条件编程false的一项行动,会造成"无限循环"这种逻辑错误--重复结构永远不能终止
3.7 如将关键字while评成While,会导致语法错误(python区分大小写)所有python保留关键字,比如while,if,elif和else等等,都只能采用小写字母。
3.8 选择合法数据作为哨兵值,会造成逻辑错误。
3.9 将所有浮点数都假设为是精确的,会导致不正确的结果。浮点数在大多数计算机中只是近似值。
3.10 在条件语句中用符号=来判断相等性是语法错误
3.11 用运算符==赋值是逻辑错误
3.12 在赋值符号左边的变量初始化之前试图使用增量赋值是错误的
3.13 由于浮点值可能是近似值,所以如果用浮点变量控制循环计数,可能导致不准确的计数器值,不能准确检测终止条件。程序应该用整数值控制循环计数。
3.14 如果忘记range函数返回的序列的第一个值是0(前提是提供了下界),可能导致值相差1的错误。
3.15 如果忘记range函数返回的序列的最后一个值比函数的end参数值小1,可能会导致值相差1的错误。
3.16 创建一个没有主体语句的for结构是语法错误。
4.1 使用math模块的函数时,忘记导入math模块属于运行时错误。只有导入模块,才能使用其中的函数和变量。
4.2 用import语句导入模块后,如果忘记为它的函数附加模块名前缀,就会造成运行时错误。
4.3 忘记在函数参数列表后添加冒号:是语法错误。
4.4 函数调用中的圆括号是python运算符,是它导致了函数调用。如遗漏圆括号,函数不会被调用。通常,控制权会转交给语句。如print语句包含一个无圆括号的函数调用,会显示函数的内存位置。如用户希望将函数调用的结果指派给函数,没有圆括号的函数调用就会将函数本身同变量绑定。
4.5 函数主体没有缩进是语法错误。
4.6 用局部命名空间中的一个标识符遮蔽模块或内建命名空间中的一个标识符,可能引起逻辑错误。
4.7 如遗漏基本条件,或错误编写递归调用,就会造成最终无法会汇聚于基本条件,从而导致无穷递归,最终耗尽内存。这类似于重复(非递归)方案中的无限循环问题。
4.8 让用于解决非递归算法的一个函数调用自身(无论直接还是间接)是逻辑错误。
4.9 默认参数必须全部靠右。省略非靠右的参数是语法错误。
4.10 在函数调用中错误放置或遗漏非关键字参数的值是错误的。
5.1 注意“序列第7个元素”和“序列元素7”的差异。序列下标自0开始,所以“序列第七个元素”的下标是6.相反,“序列元素7”的下标就是7,即c[7],而且实际是序列的第8个元素。如果混淆这两种说法,就会导致“相差1”错误。
5.2 引用序列之外的元素是错误的。
5.3 将列表或字典用作一个字典的“键”是语法错误。
5.4 试图访问不存在的字典键会引发KeyError异常,这是一种运行时错误。
6.1 运行脚本的web服务器不理解.py扩展名时,忘记在CGI脚本第一行添加预编译指令(#!),是错误的。
6.2 忘记在HTTP标头之后添加空行是错误的。