Python学习基础

PYTHON BASICS — 上手最快、生态最全的「万能语言」

为什么 Python 是「万能语言」?

Python 语法简洁、开发效率高,是大数据分析(numpy / pandas)、人工智能(PyTorch / TensorFlow)、爬虫、自动化脚本的首选语言。实验室大数据方向的项目基本都用 Python;网安方向中,CTF 解题脚本(编码转换、爆破、pwntools 交互、z3 约束求解)更是离不开它。

学习策略:C/C++ 练内功(理解底层),Python 提效率(快速实现),两条腿走路,相辅相成。

📌 推荐教材:《Python 编程:从入门到实践》;在线资源:Python 官方教程(docs.python.org)、菜鸟教程、B 站「黑马程序员 Python 入门」。

第一步:环境搭建

方案说明
Anaconda(推荐)自带 Python + 数百个常用库(numpy、pandas、matplotlib 等),装完即用;附带 Jupyter Notebook 交互式编程环境
官网 Python + pip去 python.org 下载安装,勾选 Add to PATH;之后用 pip install 库名 装库
VS Code / PyCharm写代码的编辑器:VS Code 装 Python 插件;PyCharm 是专业 IDE,学生可申请免费教育版

验证:终端输入 python 进入交互式环境,或新建 test.py 运行:

print("Hello, Python!")

第二步:基础语法速成

① 变量与基本类型(Python 无需声明类型)

name = "小明"        # 字符串
age = 18            # 整数
height = 1.75       # 浮点数
is_ok = True        # 布尔
print(name, age, height, is_ok)

② 列表 / 元组 / 字典 / 集合

nums = [1, 2, 3]            # 列表 list:可增删改
nums.append(4); nums[0] = 9

tup = (1, 2, 3)             # 元组 tuple:不可修改

info = {"name": "小明", "age": 18}   # 字典 dict:键值对
print(info["name"]); info["age"] = 19

s = {1, 2, 3, 3}            # 集合 set:自动去重,{1,2,3}

# 切片与遍历
print(nums[1:3])            # 取下标 1~2
for x in nums: print(x)
for k, v in info.items(): print(k, v)

③ 条件与循环

score = 85
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

for i in range(5):        # 0,1,2,3,4
    print(i)
while True:
    break                 # 注意缩进!Python 用缩进表示代码块

④ 函数与列表推导式

def add(a, b):
    return a + b

squares = [x * x for x in range(10)]   # 列表推导式:[0,1,4,9,...]

⑤ 文件读写与异常

with open("flag.txt", "r", encoding="utf-8") as f:
    content = f.read()     # with 自动关闭文件

try:
    x = int("abc")
except ValueError:
    print("转换失败")

第三步:常用库快速上手(大数据方向核心)

库用途示例
requests网络请求 / 爬虫r = requests.get(url); r.text
numpy数值计算np.array([1,2,3]) + 1
pandas数据分析df = pd.read_csv("a.csv"); df.describe()
matplotlib绘图plt.plot([1,2,3]); plt.show()
beautifulsoup4网页解析soup.find("a").get("href")

小项目实战(做完就入门了):

  • 爬虫:用 requests + BeautifulSoup 抓取一个新闻网站标题列表
  • 数据分析:读一个 CSV(比如天气/成绩数据),pandas 做统计、matplotlib 画柱状图
  • 自动化:批量重命名文件、批量处理 Excel(openpyxl)
# 一个 5 行的数据分析示例
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("scores.csv")          # 读成绩表
print(df.groupby("班级")["成绩"].mean())  # 各班平均分
df["成绩"].hist()                        # 画成绩分布直方图
plt.show()

第四步:Python 在 CTF 中的玩法

学完基础语法后,你会发现 CTF 解题几乎就是「写 Python 脚本」:

  • 编码转换:Base64 / 十六进制 / 二进制互转
  • 爆破:zip 密码、MD5 碰撞(itertools + hashlib)
  • 程序交互:pwntools 连接远程靶机、发送 payload
  • 约束求解:z3 求解器解方程 / 解逆向算法
# 编码转换三件套(Misc 高频)
import base64
s = "ZmxhZw=="
print(base64.b64decode(s))              # b'flag'

hex_str = "666c6167"
print(bytes.fromhex(hex_str))           # b'flag'

bin_str = "01100110 01101100"
print("".join(chr(int(x, 2)) for x in bin_str.split()))  # flag
📌 想深入?去学习中心的「网络安全 · CTF」板块,Misc 的练习题就是最好的 Python 实战。

入门挑战 · 练习题(附 WP 与直达链接)

力扣1. 两数之和哈希表★☆☆ 去题目
📖 查看 WP 题解

题目:给定数组 nums 和 target,返回和为 target 的两个下标。

1思路:Python 的 dict 就是哈希表,写法比 C++ 更短。
class Solution:
    def twoSum(self, nums: list[int], target: int) -> list[int]:
        mp = {}                        # 值 -> 下标
        for i, x in enumerate(nums):
            need = target - x
            if need in mp:             # 配对已出现过
                return [mp[need], i]
            mp[x] = i
        return []
2解释:enumerate 同时取下标和值;时间复杂度 O(n)。
洛谷B2002 Hello,World!输出入门★☆☆ 去题目
📖 查看 WP 题解

题目:输出 Hello,World!,注意大小写与标点,中间无空格。

print("Hello,World!")

💡 易错点:Hello 首字母大写、逗号是英文逗号、! 不能漏。

🚀 进阶建议:做完基础题后,去洛谷刷「入门」题单练 Python,再配合学习中心的 Misc 板块用 Python 解编码/隐写题,很快就上手了!