
PYTHON BASICS — 上手最快、生态最全的「万能语言」
Python 语法简洁、开发效率高,是大数据分析(numpy / pandas)、人工智能(PyTorch / TensorFlow)、爬虫、自动化脚本的首选语言。实验室大数据方向的项目基本都用 Python;网安方向中,CTF 解题脚本(编码转换、爆破、pwntools 交互、z3 约束求解)更是离不开它。
学习策略:C/C++ 练内功(理解底层),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!")
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") |
小项目实战(做完就入门了):
# 一个 5 行的数据分析示例
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("scores.csv") # 读成绩表
print(df.groupby("班级")["成绩"].mean()) # 各班平均分
df["成绩"].hist() # 画成绩分布直方图
plt.show()
学完基础语法后,你会发现 CTF 解题几乎就是「写 Python 脚本」:
# 编码转换三件套(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
题目:给定数组 nums 和 target,返回和为 target 的两个下标。
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 []
enumerate 同时取下标和值;时间复杂度 O(n)。题目:输出 Hello,World!,注意大小写与标点,中间无空格。
print("Hello,World!")
💡 易错点:Hello 首字母大写、逗号是英文逗号、! 不能漏。