Skip to content

第 1 章 第一个程序:Hello, World!

学习目标

  • 完成 Python 的安装并验证版本
  • 能用三种方式运行 Python:交互式解释器、脚本文件、编辑器
  • 会使用 print 输出文本与数值
  • 认识注释与缩进
  • 能读懂第一条报错信息

1.1 认识 Python

Python 是一种解释型、面向对象的编程语言。所谓「解释型」,是指代码由解释器逐行读取并执行,不需要像 C 语言那样先编译成机器码。你写下的每一行代码,解释器读到哪一行,就执行哪一行。

本书所有示例基于 Python 3.10 及以上版本,统称为 Python 3。本书约定命令行统一使用 python3 命令(Windows 上若只有 python 命令,下文所有 python3 替换为 python 即可)。

1.2 安装 Python

  1. 打开官方网站 https://www.python.org/downloads/,下载对应操作系统的最新 Python 3 安装包。
  2. Windows:安装时务必勾选 Add Python to PATH(把 Python 加入环境变量),否则命令行找不到 python3 命令。
  3. macOS:安装官方安装包,或使用 Homebrew(brew install python)。
  4. Linux:多数发行版自带 Python 3,可用系统包管理器安装。

安装完成后,在终端(Windows 为「命令提示符」或 PowerShell)输入:

$ python3 --version

输出类似:

Python 3.12.3

小版本号以你安装的为准。只要以 3 开头即可继续学习。

1.3 三种运行方式

1.3.1 交互式解释器(REPL)

REPL 是 Read-Eval-Print Loop(读取-求值-打印循环)的缩写,指逐行输入、立即执行并显示结果的交互式环境。

在终端输入 python3 回车,出现 >>> 提示符后即可逐行输入代码:

$ python3
>>> print("Hello, World!")
Hello, World!
>>> if True:
...     print("缩进内的代码")
...
缩进内的代码

REPL 适合实验语法、快速验证想法。退出方式:输入 exit() 后回车,或按 Ctrl+D(macOS / Linux)/ Ctrl+Z(Windows)。

1.3.2 脚本文件

把代码保存到以 .py 结尾的文件,再用解释器一次运行整个文件。这是写程序的主要方式,代码可以保存、修改、反复运行。

新建文件 hello.py,内容:

python
print("Hello, World!")

在终端运行:

$ python3 hello.py
Hello, World!

1.3.3 编辑器(VS Code)

编辑器是带语法高亮、自动补全和调试功能的写代码工具。推荐 VS Code:

  1. 安装 VS Code,再安装扩展 Python(微软官方)。
  2. 打开 hello.py,点右上角三角形「运行」按钮,或按 F5。
  3. 输出会显示在下方终端面板。

三种方式的取舍:REPL 用来试语法,脚本文件用来写正式程序,编辑器让写脚本更顺手。本书从下一章起,统一把代码写在脚本文件里。

1.4 print:输出函数

函数是一段有名字、可被调用的代码。print() 是 Python 内置函数,作用是把括号里的内容输出到屏幕。

python
print("Hello, World!")
print(1 + 2)
print("你好,Python")

运行输出:

Hello, World!
3
你好,Python

两点约定,先记住:

  • 字符串(一串文字)用引号包裹:"Hello, World!" 是字符串,Hello, World!(不带引号)不是。
  • 数值不用引号:print(1 + 2) 会先计算 1+2 再输出 3。

print 可以一次输出多个内容,逗号分隔,默认用空格连接;sep 参数可指定分隔符:

python
print(1, 2, 3, sep="-")

输出:

1-2-3

1.5 注释

注释是以 # 开头、写给读者看的文字。解释器会完全忽略注释,不执行它们。

python
# 打印问候语
print("Hello, World!")

规范:注释说明「为什么这样写」,而不是复述「代码在做什么」——代码本身已经说明了做什么。

1.6 缩进:Python 的语法规则

缩进指行首的空格。在大多数语言里缩进只是排版习惯,但在 Python 里,缩进是语法的一部分:它表示一段代码属于哪个代码块。

python
if True:
    print("条件成立")

if True: 下一行缩进了 4 个空格,表示这一行属于 if 语句的代码块。同一代码块内的行必须使用相同的缩进,否则 Python 会报 IndentationError。本书约定统一用 4 个空格缩进(编辑器通常会自动把 Tab 键转换为 4 个空格)。

1.7 读懂第一条报错

代码写错时,解释器会打印 traceback(错误追踪),它至少包含三样信息:出错的文件与行号、错误类型、错误信息。先看下面的真实例子。

例子一:名字没有定义

在 REPL 中输入 print(你好)——注意,你好 没有加引号:

>>> print(你好)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '你好' is not defined

解读:错误类型是 NameError(名字错误),信息是 name '你好' is not defined(名字 '你好' 未定义)。因为 你好 没有加引号,Python 不认为它是字符串,而是把它当作一个「名字」去找对应的值,找不到就报错。正确写法是 print("你好")

例子二:字符串缺少结束引号

脚本文件 demo.py 第 2 行少写了一个右引号:

  File "/tmp/demo.py", line 2
    print("这一行会出错)
          ^
SyntaxError: unterminated string literal (detected at line 2)

解读:错误类型是 SyntaxError(语法错误),^ 指示出错位置,unterminated string literal 表示字符串没有结束引号。

读报错三步:

  1. 最后一行:错误类型 + 一句话说明。
  2. 文件名与行号:去对应文件、对应行检查。
  3. 对照 ^ 指示的位置,逐字符检查。

报错不是失败,而是解释器在告诉你「代码哪里不符合规则」。学会读报错,是独立编程的第一项基本功。

动手实践

  1. 新建 hello.py,用 print 打印你的名字和一句自我介绍(两行),运行并确认输出。
  2. 在 REPL 里故意输入 print(张三),观察报错;再用「读报错三步」说出:错误类型是什么、错在哪里、如何修复。
  3. 写一段包含 # 注释和 if True: 缩进代码的程序,运行验证输出。

常见错误

错误写法报错信息原因
print(你好)NameError: name '你好' is not defined字符串忘了加引号
print("你好)SyntaxError: unterminated string literal右引号缺失或不成对
print(“你好”)SyntaxError: invalid character '“' (U+201C)用了中文全角引号
if 后代码不缩进IndentationError: expected an indented block代码块必须缩进
Print("hi")NameError: name 'Print' is not defined. Did you mean: 'print'?Python 大小写敏感,Print 不是 print

章末练习

基础

  1. 编写程序,输出以下三行内容(每行一句):
    Hello, World!
    I am learning Python.
    Nice to meet you.
  2. 编写程序,用一条 print 输出 2026-08-02,要求使用 sep 参数。
  3. 在 REPL 中完成:先输入 print("你好"),再故意输入 print(你好),观察两种结果的差别。

提高

  1. 下面代码有两处错误,找出并修复:
    python
    # 打印我的年龄
    print("我今年" 18 "岁")
  2. 用注释解释下面代码中每一行的作用:
    python
    # 你的解释写在这里
    print("第一行")
    print("第二行", "第三行", sep=" | ")

挑战

  1. 不运行代码,写出 print("A", "B", sep="+", end="!") 的输出结果,再运行验证。end 参数的含义可以自己查资料或试验后给出。

章末自测

每题选择一个最佳答案。本书不附答案:完成后交由老师或 AI 老师批改讲解。

  1. Python 代码文件的标准扩展名是?
    • A. .py
    • B. .txt
    • C. .exe
    • D. .doc
  2. 在终端进入 Python 交互式环境的命令是?
    • A. python3 run
    • B. python3
    • C. run python3
    • D. python3 start
  3. print("2 + 3") 的输出是?
    • A. 5
    • B. 2 + 3
    • C. 报错
    • D. "2 + 3"
  4. print(2 + 3) 的输出是?
    • A. 5
    • B. 2 + 3
    • C. 报错
    • D. "2 + 3"
  5. 下列哪一行是合法的注释?
    • A. // 注释
    • B. <!-- 注释 -->
    • C. # 注释
    • D. /* 注释 */
  6. 在 Python 中,if True: 下一行代码必须?
    • A. 顶格书写
    • B. 缩进书写
    • C. 加引号
    • D. 加括号
  7. print("a", "b") 的输出是?
    • A. a b
    • B. ab
    • C. a,b
    • D. a"b"
  8. 报错信息中的 NameError 通常表示?
    • A. 文件名错误
    • B. 使用了未定义的名字
    • C. 网络错误
    • D. 内存不足
  9. 输出 2026-08-02,正确的写法是?
    • A. print(2026, 08, 02, sep="-")
    • B. print("2026-08-02")
    • C. A 和 B 都可以
    • D. print("2026", "08", "02")
  10. 退出 REPL 的方法是? A. 输入 exit() B. 按 Ctrl+D(Linux/macOS) C. 以上都可以 D. 关闭终端