跳至主要内容

Python 初学者练习:含答案的动手指南

通过适合初学者的 Python 练习循序渐进学习,从简单变量入手,逐步到函数、数据结构与引导式项目。
· 12分钟 阅读

使用 AI 探索

学习 Python 的最佳方式,是通过重复练习、主动尝试与解决问题来建立熟悉感。这也是“做中学”理念之所以成为高效程序员培养核心方法的原因。 

写代码、犯错误、再把它们修好——这是您为自己构建真正技能的路径。

在本文中,我们将系统完成一组专为初学者设计的 Python 练习。这些练习从简单变量开始,逐步过渡到函数、数据结构,以及小型数据项目。

继续阅读之前,先给您一个挑战:尝试立刻完成本文前 3 个练习,不要提前查看讲解。即使卡住了,“尝试”的过程本身就包含了大部分学习。

如果您更喜欢引导式体验,DataCamp 课程会逐步自动检查您的语法与逻辑,避免小错误阻断进度,尤其适合初学者。一个不错的起点是 Introduction to Python 课程。

开始进行 Python 练习

在动手做练习前,您需要一个基础环境来编写并运行 Python 代码。幸运的是,入门比以往更容易。

准备工作

要在本地运行 Python,请安装对初学者友好的代码编辑器,例如 Visual Studio Code。

一个典型的设置如下:

vscode

VS Code 是一个很好的起点,它是开源且免费使用。您可以访问其下载页面获取安装包,下载完成后即可安装。

如果您不想安装任何软件,可以使用 DataLab,这是一款基于浏览器的环境,可立即运行 Python(和 SQL)代码。它非常适合配合教程、测试代码片段,以及在不担心环境配置问题的情况下进行试验。

如何使用这些练习

为最大化学习效果,本文中的每个练习都设计为先尝试再阅读解答或讲解。

充分利用这些练习的最佳方式:

  • 至少花 15 分钟独立尝试解题
  • 把完整程序写出来,即使感觉有些重复
  • 只有在尝试之后再查看答案

所有练习的完整答案可在此处链接的 DataLab 工作簿中查看。您可以将自己的思路与可运行的解法对照,并理解解决同一问题的替代方法。

exercise solutions

变量、输入与输出的 Python 练习

我们先从一些基础练习开始,聚焦于基本构件:存储值、读取用户输入以及将输出打印到屏幕上。

个性化问候

先来看一个简单的 Python 练习:打印一条个性化消息。

练习

编写一个程序:

  • 使用 input() 询问用户姓名

  • 使用 input() 询问用户年龄

  • 使用格式化字符串打印问候语

  • 计算用户在何年满 100 岁

在写代码前,先想一想信息如何在这样一个简单程序中流动。用户以文本形式提供原始输入,Python 将该输入存入变量,然后您把这些值转换为有意义的内容。 

这个练习与许多真实程序相呼应,因为用户输入很少能直接使用,通常需要先验证或转换。

起始代码

以下是帮助您的起始代码:

# Task: Ask for the user's name
name = input("Enter your name: ")

# Task: Ask for the user's age (note: input() returns a string)
age_str = input("Enter your age: ")

# Task: Convert age_str to an int
# age = ...

# Task: Calculate the year the user turns 100
# Tip: you'll need the current year
# current_year = ...
# year_turn_100 = ...

# Task: Print a personalized message using an f-string
# print(...)

练习到的关键概念

  • input() 始终返回字符串

  • 使用 int() 将字符串转换为整数

  • 基础数值运算

  • 使用 f-string 进行字符串格式化

该练习让您认识到,用户输入往往需要先转换才能用于计算。

温度转换器

把您的 Python 技能应用在基础单位换算上试试。

练习

编写一个程序,需:

  • 询问用户一个摄氏温度

  • 使用公式 F = (C × 9/5) + 32 将其转换为华氏温度

  • 打印转换后的温度

起始代码

以下是帮助您的起始代码:

# Task: Ask the user for a Celsius temperature
celsius_str = input("Temperature in Celsius: ")

# Task: Convert the input to a float
# celsius = ...

# Task: Apply the conversion formula
# fahrenheit = ...

# Task: Print the result (consider formatting to 1–2 decimal places)
# print(...)

练习到的关键概念

  • 浮点数

  • 算术表达式

  • 使用 float() 进行类型转换

本练习强化了一个认识:并非所有数值输入都是整数,Python 能自然处理小数。

交换逻辑小谜题

这个练习看起来很简单,但初学者常会把变量想象成必须逐步清空再重新赋值的“盒子”。来看看如何在 Python 中进行值交换。

练习

给定两个变量:a = 5 和 b = 10。在不逐一手动重赋值的情况下交换它们的值。

Python 支持更具表达力的赋值方式,您可以在一次操作中拆包并重新赋值。

起始代码

以下是帮助您的起始代码:

a = 5
b = 10

# Task: Swap a and b
# Hint: Try a temporary variable first.
# Then try the Pythonic approach (tuple unpacking).

# Task: Print the swapped values to verify
# print("a:", a)
# print("b:", b)

练习到的关键概念

  • 变量赋值
  • 临时变量 vs 元组拆包

这引入了元组拆包这一特性,使 Python 既简洁又有表现力。

想进一步了解基础,可参阅我们的 Python 速查表。

控制流与逻辑的 Python 练习

控制流让您的程序能够根据条件做出决策并重复执行动作。

奇偶性检查器

取模运算符的一个常见用法是进行奇偶判断。我们来试试。

练习

编写一个程序,需:

  • 询问用户一个数字

  • 使用取模运算符 %

  • 打印该数字是偶数还是奇数

起始代码

以下是帮助您的起始代码:

# Task: Ask the user for a number
num_str = input("Enter a whole number: ")

# Task: Convert to int
# num = ...

# Task: Use modulo (%) to decide even vs odd
# if ...:
#     print("Even")
# else:
#     print("Odd")

练习到的关键概念

这通常是初学者第一次看到如何用条件来控制程序行为的例子。

经典 FizzBuzz 挑战

FizzBuzz 是许多人做过的常见编程挑战。我们来看看这个练习的内容。

练习

打印从 1 到 100 的数字,遵循以下规则:

  • 3 的倍数打印 Fizz

  • 5 的倍数打印 Buzz

  • 同时是两者倍数则打印 FizzBuzz

该练习训练您谨慎思考决策树与边界情况——这在编写真实程序时至关重要。

起始代码

以下是帮助您的起始代码:

# Task: Loop from 1 to 100
for n in range(1, 101):
    # Task: Check multiples of 3 AND 5 first
    # if ...:
    #     print("FizzBuzz")

    # Task: Then multiples of 3
    # elif ...:
    #     print("Fizz")

    # Task: Then multiples of 5
    # elif ...:
    #     print("Buzz")

    # Task: Otherwise, print the number
    # else:
    #     print(n)
    pass

练习到的关键概念

  • for 循环

  • 条件判断的先后顺序

  • 逻辑运算符

该练习是程序员的“通关仪式”,常用于教授控制流中的结构化思维。更多循环内容请参阅我们的 Python 循环教程。

猜数字游戏

该练习引入会根据用户输入动态响应的交互式程序。

练习

编写一个程序,需:

  • 生成一个随机数字(导入 random)

  • 使用 while 循环不断询问猜测

  • 每次猜测后打印 "Too high" 或 "Too low" 的反馈

  • 在猜中正确数字时停止

这通常是初学者第一次体验到程序具有交互性而非线性的练习。不像之前从上到下执行并退出的脚本,这个程序会持续运行直到满足某个条件。

这里的关键概念跃迁在于理解循环终止。

起始代码

以下是帮助您的起始代码:

import random

# Task: Pick a random number in a reasonable range
# target = random.randint(1, 100)

# Task: Use a while loop to keep asking until correct
# while ...:
#     guess_str = input("Your guess (1–100): ")
#     # guess = ...
#     # if guess > target:
#     #     print("Too high")
#     # elif guess < target:
#     #     print("Too low")
#     # else:
#     #     print("Correct!")
#     #     break

练习到的关键概念

  • 导入模块(random)

  • while 循环

  • 循环终止条件

列表、循环与迭代的 Python 练习

列表让您处理一组值,而循环能让您高效地处理它们。

列表求和

这种模式在数据处理与分析工作流中频繁出现。

练习

编写一个程序,在不使用内置 sum() 函数的情况下对列表中的所有数字求和。程序应在循环中显式执行求和逻辑,而不是依赖其他聚合辅助函数。

起始代码

以下是帮助您的起始代码:

numbers = [3, 7, 2, 9, 4]

# Task: Create an accumulator variable
# total = ...

# Task: Loop through numbers and add each value to total
# for ...:
#     ...

# Task: Print the final total
# print(total)

练习到的关键概念

  • 初始化累加器变量

  • 使用 for 循环迭代

  • 逐步更新数值

更多与列表相关的示例,请查看我们的指南:最常见的 Python 列表问题。

寻找最大值

下一个练习与上一个有点相似,但在循环中的工作方式不同。它强化了算法化思维,并反映了内置函数的内部工作方式。

练习

挑战:在不使用 max() 的情况下,找出列表中的最大数。

起始代码

以下是帮助您的起始代码:

numbers = [12, 5, 27, 3, 19]

# Task: Initialize current_max using the first element
# current_max = numbers[0]

# Task: Loop through the remaining elements and update current_max
# for ...:
#     if ...:
#         current_max = ...

# Task: Print the largest number
# print(current_max)

练习到的关键概念

  • 比较逻辑
  • 迭代过程中的状态跟踪

去重

真实世界的数据很杂乱,而杂乱的数据往往包含重复值。以下练习将为数据清洗任务做准备。

练习

将一个包含重复元素的列表转换为仅包含唯一项的新列表。

乍看这个问题很简单,但它引入了“记录已见内容”的思路。这是数据处理中的基础概念,识别并删除重复记录是常规任务。

起始代码

以下是帮助您的起始代码:

data = ["apple", "banana", "apple", "orange", "banana", "kiwi"]

# Task: Create a new list for unique items
# unique = []

# Task: Loop through data and append items you haven't seen yet
# for item in data:
#     if ...:
#         ...

# Task: Print or return the unique list
# print(unique)

练习到的关键概念

  • 使用 in 进行成员检查

  • 构建新列表

  • 理解数据唯一性

字典与字符串处理的 Python 练习

字典和字符串是组织与转换文本数据的关键。我们来看看如何处理它们。

字符频次统计器

该练习教您构建频次表,这是常见的数据分析任务。

练习

读取一个字符串输入,并返回一个字典,统计每个字符出现的次数。

这个练习代表了一个重要的概念性跨越:在程序运行过程中动态构建数据结构。您不是处理预定义的列表或字典,而是根据遇到的数据创建并更新条目。

起始代码

以下是帮助您的起始代码:

text = input("Enter some text: ")

# Task: Create an empty dictionary
# counts = {}

# Task: Loop over each character and update counts
# for ch in text:
#     # Option A: counts[ch] = counts.get(ch, 0) + 1
#     # Option B: if ch in counts: ... else: ...
#     pass

# Task: Print the frequency table
# print(counts)

练习到的关键概念

  • 字典

  • .get() 方法

  • 条件式初始化

简易电话簿

该练习涉及字典逻辑,这是今后理解表格型数据结构的基础。

练习

创建一个程序,用字典存储姓名与号码,并允许用户按姓名进行搜索。

该练习引入了将程序作为持久查询工具而非一次性计算的理念。您在建模许多应用存储与检索信息的简化版本。

起始代码

以下是帮助您的起始代码:

phonebook = {
    # "Alice": "9123 4567",
    # "Ben": "9876 5432",
}

# Task: (Optional) add entries via input()
# name = input("Name to add: ")
# number = input("Number to add: ")
# phonebook[name] = number

# Task: Search loop (one lookup is fine for a start)
query = input("Search name: ")

# Task: Print the number if found, otherwise print a friendly message
# if ...:
#     print(...)
# else:
#     print("Not found")

练习到的关键概念

  • 字典查找
  • 键值关系

如果您想更深入了解字典,推荐阅读我们的综合指南:Python 字典方法。

回文检查器

该练习将文本处理与逻辑比较结合,探讨回文。

练习

回文是指正反读相同的单词、短语、数字或字符序列。创建一个脚本,检查字符串在忽略大小写与空格时,正反是否相同。

起始代码

以下是帮助您的起始代码:

text = input("Enter a word or phrase: ")

# Task: Normalize (lowercase + remove spaces)
# normalized = ...

# Task: Reverse using slicing
# reversed_text = ...

# Task: Compare and print a result message
# if ...:
#     print("Palindrome")
# else:
#     print("Not a palindrome")

练习到的关键概念

  • 字符串方法(lower()、replace())

  • 字符串切片([::-1])

函数与模块化的 Python 练习

函数让您编写可复用、结构化的代码,而不是重复同样的逻辑。

阶乘计算器

阶乘计算器将帮助您理解返回值,这对构建更大型程序至关重要。

练习

定义一个函数,接收一个整数并使用循环返回其阶乘。

打印值与返回值之间的区别尤为重要。返回结果让您的函数能与其他代码组合,这在程序超越单文件规模后必不可少。

起始代码

以下是帮助您的起始代码:

def factorial(n: int) -> int:
    """Return n! (factorial of n) using a loop."""
    # Task: Decide how to handle n < 0

    # Task: Initialize result
    # result = ...

    # Task: Multiply result by each integer from 1 to n
    # for ...:
    #     ...

    # Task: Return the computed factorial
    # return result
    pass

# Optional quick test
# print(factorial(5))  # expected: 120

练习到的关键概念

  • 函数定义
  • 基于循环的计算
  • 返回值 vs 打印

更多函数相关内容请阅读我们的 Python 函数教程。

质数校验器

接下来我们来看一个质数校验函数。这将帮助您学习如何编写可复用函数。

练习

编写一个函数:若数字是质数返回 True,否则返回 False。

质数检查还展示了函数如何整洁地封装逻辑。一旦写好,该函数即可在任意位置复用,无需理解其内部细节。

起始代码

以下是帮助您的起始代码:

def is_prime(n: int) -> bool:
    """Return True if n is prime, otherwise False."""
    # Task: Handle small cases (n <= 1)

    # Task: Check divisibility from 2 up to an appropriate limit
    # for ...:
    #     if ...:
    #         return False

    # Task: If no divisors found, return True
    # return True
    pass

# Optional quick tests
# print(is_prime(2))   # expected: True
# print(is_prime(15))  # expected: False

练习到的关键概念

  • 循环
  • 提前返回
  • 逻辑效率

灵活参数打印器

这将介绍许多 Python 库中使用的高级函数签名。

练习

创建一个函数,使用 *args 接收任意数量的参数,并逐个打印。

该练习让您接触到 Python 的一项灵活特性:可变长度参数。它将您的思维从固定输入转向可根据不同用例自适应的函数。

理解 *args 有助于阅读与使用真实世界的 Python 库——为了便捷与可扩展,函数经常接收可变数量的参数。

起始代码

以下是帮助您的起始代码:

def print_args(*args) -> None:
    """Print each positional argument on its own line."""
    # Task: Loop over args and print each one
    # for ...:
    #     print(...)
    pass

# Optional quick test
# print_args("hello", 42, True)

练习到的关键概念

  • 可变长度参数
  • 函数的灵活性

用引导式项目应用 Python 技能

练习能构建技能,但项目能将这些技能转化为自信。

探索 Netflix 电影

netflix guided projects

Investigating Netflix Movies 引导式项目提出了一个看似简单的问题:电影是否在逐渐变短?为回答它,您将使用一份包含 Netflix 片目的真实数据集,并将原始数据行逐步转化为清晰的可视化洞见。

该项目的强大之处在于,它弥合了初级 Python 基础与应用数据分析之间的鸿沟。您将看到,简单逻辑在与合适工具结合后如何扩展,而且无需在本地安装任何东西。

塞麦尔维斯医生与洗手的发现

handwashing guided project

这个 Dr. Semmelweis and the Importance of Handwashing 项目让您站在数据分析师的角度调查一个真实的历史问题。19 世纪中期,Ignaz Semmelweis 医生观察到一个病房的死亡率异常高于另一个,但缺乏计算工具来证明原因。

利用历史记录,您将分析引入洗手前后的死亡率数据。该项目聚焦于使用 pandas 处理表格数据、计算比率,并在不同时期之间比较平均值。 

探索纽约市 Airbnb 市场

airbnb guided project

在 Exploring Airbnb Market Trends 项目中,您将置身一个与真实世界分析工作高度相似的情境:数据杂乱且不一致,需要在任何有意义的分析开始之前进行大量清洗。 

数据集包含租房列表,价格以字符串形式存储,评分缺失且格式不一致。

您的首要任务是清洗并标准化数据。该项目强化了这样一个理念:数据准备并非前期杂务,而是一项核心分析技能。数据从业者的大部分时间往往花在清洗数据上,而本项目是检验这项能力的绝佳实战关卡。

结语

您从简单的变量与用户输入出发,逐步走过控制流、数据结构、函数,最后在引导式项目中综合应用。通过这些练习,您应已对 Python 在真实环境中的用法有了不错的了解。

您的下一步自然是系统化学习。坚持练习并配合结构化、引导式教学,是将练习转化为专长的最快途径。建议您报名我们的 Python Programming 或 Data Scientist 学习路径以开始起步。

Python 练习常见问答

练习 Python 编码挑战的最佳平台是什么?

最佳平台应将动手编码与结构化反馈结合。DataCamp 在引导式练习方面表现出色,因为它提供基于浏览器的编码(无需配置)、对练习的即时反馈、结构化技能与职业学习路径,以及使用真实数据集的引导式项目。

如何有效利用间隔重复学习 Python?

间隔重复应用于“概念”而非仅仅“语法”时效果最佳。与其反复重读笔记,不如在一段时间内通过难度逐步提升的练习反复接触相同概念。

有哪些适合初学者的进阶 Python 项目?

适合初学者的进阶项目示例包括:构建带文件持久化的命令行待办应用;使用 pandas 分析 CSV 数据集并做基础可视化;或创建一个小型 API 客户端,从公共端点获取并处理数据。

Austin Chia

作者

Austin Chia

我是 Austin,一名博主和科技作者,曾在医疗领域担任数据科学家与数据分析师,拥有多年的从业经验。我以生物学背景开启技术之路,如今通过我的科技博客帮助他人完成同样的转型。我对技术的热情促使我为数十家 SaaS 公司撰写内容,分享经验、启发他人。

主题