RSS
菜单
全部文章快讯开发科技深度热点

你好世界与第一个程序(Python 从精通到入门 · 28)

内容摘要

从元类一路走回来,终点就一句 print("Hello, World!")。这一篇,我们把整本书的零件拼成一个真正能跑的小程序。

从元类一路走回来,终点就一句 print("Hello, World!")。这一篇,我们把整本书的零件拼成一个真正能跑的小程序。

恭喜,你走到了最后一篇。回头看,你已经掌握了变量、运算符、控制流、函数、字符串和容器——这些就是写程序所需的全部砖块。现在,是时候盖一栋小房子了。

你将学到

  • print() 的本质,sep 与 end 参数
  • 注释怎么写、为什么重要
  • 第一行 Python 程序:print("Hello, World!")
  • 怎么安装 Python、怎么把代码跑起来
  • 一个综合小项目:命令行待办清单(用到变量/条件/循环/函数/字典)
  • 全书的收尾与下一站

前置知识

先读 上一篇:列表、元组、字典、集合。这是全程最后一篇,读完就出师了。

print() 的本质

print 是一个内置函数,作用是"把东西显示到屏幕上"。它接受任意多个参数,默认用空格隔开、末尾换行,这两个行为都可以改。

print("Hello, World!")   # 输出: Hello, World!
print("a", "b", "c")     # 输出: a b c(默认用空格分隔)

sep:分隔符

print("2026", "10", "07", sep="-")   # 输出: 2026-10-07
print("a", "b", "c", sep="")         # 输出: abc
print("a", "b", "c", sep=", ")       # 输出: a, b, c

end:结尾字符

print("加载中", end="")     # 默认 end="\n"(换行),改成别的就不换行
print("...", end="")
print("完成")
# 输出: 加载中...完成

for i in range(5):          # end 常用来把内容排成一行
    print(i, end=" ")
print()                     # 循环完换一次行
# 输出: 0 1 2 3 4
name, age = "小明", 18
print("姓名:", name, "年龄:", age)   # 输出: 姓名: 小明 年龄: 18
print(f"姓名:{name},年龄:{age}")     # 输出: 姓名:小明,年龄:18

注释

注释是写给人看的,Python 会忽略它。用 # 开头。

# 这是单行注释,解释下面这行在干嘛
price = 100   # 行尾注释

好的注释解释意图,坏的注释复述代码:

# ❌ 废话注释
x = x + 1            # x 加 1

# ✅ 说明意图
retries += 1         # 失败一次就重试,最多 3 次
price = base * 0.9   # 会员打九折

多行说明可以用三引号字符串,但它本质是字符串、不是专门的注释语法:

"""
通常放在文件开头,介绍这个脚本是做什么的。
"""

第一行 Python 程序

新建一个文件 hello.py,写下:

print("Hello, World!")

保存,然后在终端运行:

python hello.py

屏幕上出现:

Hello, World!

就这一行。所有语言的第一课都是它——它证明你的环境通了。

安装 Python 与运行代码

步骤一:安装 Python

  1. 打开 ,下载最新稳定版(3.11 或更高)。
  2. Windows 安装时,务必勾选 "Add Python to PATH",否则命令行找不到它。
  3. macOS 可用 brew install python,或直接下官方安装包。Linux 大多自带 python3。

步骤二:验证安装并运行代码

python --version                     # 看到 Python 3.12.4 之类就成功了
python hello.py                      # 跑文件(最常用)
python -c "print('Hello, World!')"   # 一行命令直接执行
python                               # 或进入交互式环境,exit() 退出

编辑器推荐 VS Code + Python 扩展,或 PyCharm;后续都跑在 Python 3.11+ 上。

综合项目:命令行待办清单

现在动手写点真东西。这个待办清单会综合用到前面学过的所有知识:变量、条件、循环、函数、字典、列表、f-string。

需求:能添加、列出、标记完成、删除待办,一直循环直到用户退出。

# todo.py —— 一个命令行待办清单

def show_menu():
    """打印菜单。"""
    print("\n===== 待办清单 =====")
    print("1. 添加事项  2. 查看全部")
    print("3. 标记完成  4. 删除事项")
    print("0. 退出       =============")

def add_todo(todos):
    """添加一条待办。"""
    text = input("输入待办内容:").strip()
    if not text:                       # 空内容不添加
        print("内容不能为空")
        return
    todos.append({"text": text, "done": False})
    print(f"已添加:{text}")

def list_todos(todos):
    """列出所有待办。"""
    if not todos:
        print("暂时没有待办,可以先去添加一条。")
        return
    print("\n你的待办:")
    for i, todo in enumerate(todos, start=1):
        mark = "✓" if todo["done"] else " "
        print(f"  [{mark}] {i}. {todo['text']}")

def read_index(todos):
    """读取一个合法的下标,非法则返回 None。"""
    if not todos:
        return None
    raw = input("输入编号:").strip()
    if not raw.isdigit():
        print("请输入数字编号")
        return None
    index = int(raw) - 1               # 用户从 1 数,列表从 0 数
    if 0 <= index < len(todos):
        return index
    print("编号超出范围")
    return None

def complete_todo(todos):
    """把某条待办标记为完成。"""
    list_todos(todos)
    index = read_index(todos)
    if index is not None:
        todos[index]["done"] = True
        print(f"已完成:{todos[index]['text']}")

def delete_todo(todos):
    """删除一条待办。"""
    list_todos(todos)
    index = read_index(todos)
    if index is not None:
        print(f"已删除:{todos.pop(index)['text']}")

def main():
    """主循环。"""
    todos = []                         # 用列表存一堆字典
    while True:
        show_menu()
        choice = input("请选择:").strip()
        if choice == "1":
            add_todo(todos)
        elif choice == "2":
            list_todos(todos)
        elif choice == "3":
            complete_todo(todos)
        elif choice == "4":
            delete_todo(todos)
        elif choice == "0":
            print("再见!")
            break
        else:
            print("无效选项,请重新输入")

if __name__ == "__main__":
    main()

跑起来看看效果:

请选择:1
输入待办内容:写周报
已添加:写周报
请选择:3 → 输入编号:1 → 已完成:写周报
请选择:2 → 你的待办: [✓] 1. 写周报
请选择:0 → 再见!

这个小项目用到了什么

知识点 出现在哪
变量与类型 todos、choice、text
字典 每条待办是 {"text": ..., "done": ...}
列表 todos 收集所有待办
函数 每个功能一个函数,各司其职
条件判断 if choice == "1" 等分支
循环 while True 主循环、for 遍历
f-string f"已添加:{text}"

常见坑

坑一:print 参数写错

print("a", "b")           # 输出: a b(两个参数,默认加空格)
print("a" "b")            # 输出: ab(这是字符串拼接,不是两个参数)
print("a", "b", sep="")   # 输出: ab(想要无空格用 sep)

坑二:把 input() 的结果当数字

# ❌ choice 是字符串,"1" 和 1 不相等,永远为 False
# choice = input("选择:")
# if choice == 1: ...

# ✅ 和字符串比,或先转 int
choice = input("选择:")
if choice == "1":
    print("选了第一项")

坑三:忘记 if __name__ == "__main__"

# ❌ 别的文件 import 这个模块时,main() 会立刻跑起来
# main()

# ✅ 加个判断,只有直接运行才执行
if __name__ == "__main__":
    main()

坑四:退出前忘了 break

while True:
    choice = input("选择:").strip()
    if choice == "0":
        print("再见")
        break          # ✅ 少了这句就是死循环

小结

  • print() 是内置函数,sep 改分隔符、end 改结尾字符。
  • 注释解释"为什么",不是复述"写了什么"。
  • 第一行 Python 程序永远值得保留:print("Hello, World!")。
  • 安装 Python 记得勾选 "Add Python to PATH";跑文件用 python hello.py。
  • 综合项目把变量、条件、循环、函数、字典、列表、f-string 全部串了起来。
  • 读到会写是第一步,动手敲一遍才是真的会。

写在最后:从精通到入门,你走完了

如果你是顺着这套教程从第一篇读到这里的,回头想想你翻过的山:

  • 大师篇——元类怎么创建类、描述符怎么驱动属性、装饰器为什么能改写函数行为、with 背后是上下文管理器、生成器与协程如何让 Python 学会"暂停"。
  • 高手篇——GIL 到底限制了谁、线程和进程该怎么选、asyncio 如何用单线程扛住成千上万的并发、性能瓶颈该从哪里找。
  • 进阶篇——类型注解、虚拟环境、pytest、代码质量工具链,让代码从"能跑"变成"可维护"。
  • 熟练篇——文件、正则、JSON/CSV、网络请求,你开始把 Python 用到真实世界。
  • 上手篇——面向对象、模块、异常、推导式,你学会了组织代码。
  • 入门篇——变量、运算符、控制流、函数、字符串、容器,你补齐了最基础的那一环。

这趟逆向旅程的妙处在于:当你写下 print("Hello, World!") 时,你不再是"照着教程敲一行代码的初学者"。你知道这行代码背后,字符串是一个不可变对象、print 是一个内置函数、__call__ 让调用成为可能、解释器在字节码里执行了一次 CALL。你从山顶往下看,风景和从山脚往上爬完全不同。

学到这里,你不是"入门了",你是"回头把入门的路重新走了一遍,而且这次带着地图"。

接下来去哪?随便挑一个方向往下钻:

  • 写一个小工具解决你自己的真实问题。
  • 读一个优秀开源项目的源码。
  • 挑一门领域深入:Web(FastAPI / Django)、数据(pandas)、爬虫、自动化。
  • 把前面大师篇里的概念,用在你自己的代码里。

编程最好的老师,永远是"想做一个东西"的冲动。去找那样一个东西吧。

从精通到入门,你走完了。现在是时候,从入门再往前走一步了。


上一篇:列表、元组、字典、集合

🎉 恭喜你,走完了从精通到入门的全程。

— 全文完 —回到顶部 ↑
下载推广海报

文章推广海报

《你好世界与第一个程序(Python 从精通到入门 · 28)》完整推广海报
DISCUSSION

文章回复

0 条公开回复
未登录回复需要审核后公开
还没有回复,欢迎参与讨论。