当前位置:首页>python>一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

  • 2026-09-10 12:51:44
一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

初学Python时,最让人崩溃的往往不是逻辑有多复杂,而是——明明代码看起来没问题,运行时却报错。

今天我们就来聊聊Python代码书写时的那些硬规则,以及违反它们会引发什么样的报错。记住这些,能帮你省下大量调试时间。

缩进:Python的“命根子”

场景1:IndentationError

错误写法:

age = 18

if age >= 18:

print("成年人")  # 这一行没有缩进

运行结果:IndentationError: expected an indented block

错误原因:Python用缩进表示代码块。if语句下面的代码必须缩进,否则不知道它属于谁。

正确写法:

age = 18

if age >= 18:

    print("成年人")  # 缩进4个空格

场景2:混用Tab和空格

错误写法:

if True:

    print("Hello")  # 这一行用了4个空格

print("World")  # 这一行用了Tab

运行结果:TabError: inconsistent use of tabs and spaces in indentation

错误原因:Tab和空格混用。虽然看起来都是缩进,但在Python眼里它们是不同的。

解决方法:统一用4个空格。

冒号:不要忘记它

场景3:if语句漏了冒号

错误写法:

age = 18

if age >= 18  # 漏了冒号

    print("成年人")

运行结果:SyntaxError: invalid syntax

正确写法:

if age >= 18:  # 冒号不能少

    print("成年人")

哪些地方需要冒号?

if语句后:if condition:

for循环后:for i in range(5):

while循环后:while condition:

函数定义后:def func():

else/elif后:else:、elif condition:

引号:成对出现

场景4:引号不匹配

错误写法:

name = "张三  # 只有左引号,没有右引号

print(name)

运行结果:SyntaxError: EOL while scanning string literal

其中:EOL是End Of Line的意思——字符串还没结束就到行尾了。

正确写法:

name = "张三"  # 两边引号完备

print(name)

场景5:字符串里要加引号

错误写法:

message = "他说:"你好""  # 想输出:他说:"你好"

这里有两个问题:外面的双引号和里面的双引号冲突了。

正确写法:

# 方法1:外面用单引号,里面用双引号

message = '他说:"你好"'

# 方法2:外面用双引号,里面用转义符

message = "他说:\"你好\""

# 方法3:用三引号

message = """他说:"你好" """

括号:配对的艺术

场景6:括号不匹配

错误写法:

result = (5 + 3 * 2  # 只有左括号

print(result)

运行结果:SyntaxError: unexpected EOF while parsing

EOF是End Of File——文件结束了,括号还没配对上。

正确写法:

result = (5 + 3 * 2)  # 括号完备

print(result)

场景7:函数调用漏括号

错误写法:

name = "张三"

print name  # print后面漏了括号

运行结果:SyntaxError: Missing parentheses in call to 'print'

正确写法:

    name = "张三"
    print (name)  

变量命名:不能随心所欲

场景8:数字开头

错误写法:

2name = "张三"  # 变量名以数字开头

运行结果:SyntaxError: invalid decimal literal

正确写法:

name = "张三"  # 变量名不以数字开头

场景9:用了保留字

错误写法:

if = 10  # if是Python的保留字

class = "英语班"  # class也是保留字

运行结果:SyntaxError: invalid syntax

Python保留字列表:

False, None, True, and, as, assert, async, await, break,

class, continue, def, del, elif, else, except, finally,

for, from, global, if, import, in, is, lambda, nonlocal,

not, or, pass, raise, return, try, while, with, yield

场景10:用了非法字符

错误写法:

my-name = "张三"  # 变量名包含减号

运行结果:SyntaxError: cannot assign to operator

正确命名规则:

只能包含字母、数字、下划线

不能以数字开头

不能是保留字

区分大小写(age和Age不同)

运算符号:别写错了

场景11:赋值写成了等于

错误写法:

x = 5

if x = 5:  # 应该用==,不是=

    print("x等于5")

运行结果:SyntaxError: invalid syntax

区别:

=是赋值:把右边的值给左边

==是等于:判断两边是否相等

场景12:整除写反了

除法符号写法:

result = 5 // 2  # 这是整除,结果是2

result = 5 / 2   # 这是除法,结果是2.5

result = 5 \ 2   # 反斜杠?Python没有这个运算符

中文标点:看不见的敌人

场景13:用了中文逗号

错误写法:

fruits = ["苹果", "香蕉", "橙子"]  # 用了中文逗号,

运行结果:SyntaxError: invalid character ',' (U+FF0C)

场景14:用了中文引号

错误写法:

name = “张三”  # 用了中文双引号

运行结果:SyntaxError: invalid character '“' (U+201C)

解决方法:写代码时一定要切换到英文输入法。中英文标点看起来很像,但Python只认英文标点。

常见错误速查表

错误信息
常见原因
解决方法
IndentationError
缩进错误检查代码块是否缩进一致
TabError
Tab和空格混用统一用4个空格
SyntaxError: invalid syntax
语法错误检查冒号、括号、引号、运算符
NameError
变量未定义检查变量名拼写
TypeError
类型错误检查是否字符串和数字直接运算
ValueError
值错误检查输入转换是否合法
EOFError
输入意外结束
检查括号是否匹配

调试小技巧

1. 从第一行错误开始看:错误信息会告诉你哪行代码出问题,先看哪行。

2. 检查上一行:有时候错误是上一行引起的(比如漏了括号)。

3. 注释法:把怀疑出错的代码注释掉,看程序能不能运行。

4. print大法:在关键位置加print,输出变量值,看程序执行到哪里。

5. 用编辑器语法高亮:如果代码颜色不对,很可能有语法错误。

结束之前

这些书写规则,刚开始会觉得繁琐,写多了就成了肌肉记忆。

记住:Python的错误提示其实很友好,它会告诉你哪行错了、什么错。学会读错误信息,调试就会事半功倍。

下次遇到报错,不要慌,先看看它说什么——它可能已经告诉你答案了。

你在写代码时最常犯什么错误?欢迎在评论区分享你的“血泪史”。

动手试试吧

找出以下代码程序的错误:

#第一个

age = 20

if age >= 18:

print("成年人")

print("可以上网")

#第二个

score = 85

if score >= 60

    print("及格")

else

    print("不及格")

#第三个

name = input("请输入姓名)

if name = "张三"

    print("你好,张三")

【上周答案公布】进制转换练习

练习一:手动进制转换详解

第1题:二进制 101101 转十进制

答案:45

第2题:十进制 47 转二进制

答案:101111

第3题:二进制 11101101 转十六进制

题目:将二进制数 11101101 转换为十六进制。

答案:ED

注意:十六进制中,10-15分别用A-F表示,不要写成数字。

练习二:观察规律

题目:观察二进制数 1, 10, 11, 100, 101, 110, 111, 1000 分别对应十进制的哪些数字?你能发现什么规律?

解答:分别对应1-10。

练习三:用Python验证

1. bin(25) 输出什么?11001

2. int("1101", 2) 输出什么?13

3. hex(255) 输出什么?0xff

精彩回顾:

一起学Python(001):为什么文科生也要学Python?

一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?

欢迎【点赞】+【转发】❤️

最新文章

随机文章