我叫林砚行,做Python后端和数据方向的技术面试官第9年,也负责过公司内部的新人成长训练营。每次看简历、做机试、带新人,我都会发现一个挺“反直觉”的现象:卡住新手的往往不是高深算法,而是一批该熟却不熟的基础代码片段——写不顺、记不牢、边查边抄,结果时间耗光,逻辑也乱。 这篇文章不讲玄学学习法,只把我在真实面试与入职试用期里反复验证过的“高频必背片段”整理出来。它们不追求炫技,目标很明确:让你在写小脚本、做题、写业务代码时,能稳定输出、少出低级Bug、思路不断线。本文生成时间为2026年03月,数据与案例以近一年招聘与训练营统计为准。 我把2025年Q4—2026年Q1我们团队(含合作部门)共 312 场技术面试 的面试记录做过一次标注:候选人在现场编码或口述过程中,出现“基础语法/常用库使用不熟”导致的扣分点,占到约41%;其中最常见的不是不会写,而是“写得慢、写得散、写完不敢跑”。 训练营也有类似结果。2026年1月那期 48 位新人 的入营测验里,完成度最低的题型不是算法,而是“字符串清洗、字典聚合、文件读取、异常处理”这种日常题,平均耗时比预期高出约28%。这些痛点,靠背一堆概念没用,得靠“可复用的代码肌肉记忆”。 下面这20段,就是我最愿意你背下来的“python必背入门代码”。 你写出来的代码要能被别人接手,也要能在面试白板上让人一眼看懂。name = input().strip()

age = int(input())
print(name, age)
score = 93.5print(f"score={score:.1f}")
a, b = map(int, input().split())# 多行输入(不确定行数):适合OJ/日志解析import sys
data = [line.rstrip("n") for line in sys.stdin]
我在面试里经常看到一种“可惜”:逻辑没错,但输出格式错一个空格、一个换行,直接WA。f-string和strip()这种小习惯,能省掉你很多解释成本。
分支要短,循环要稳。能用早返回/早continue就别拖泥带水。
x = int(input())if x % 2 == 0:
print("even")
else:
print("odd")
# 统计满足条件的个数cnt = 0
for v in nums:
if v < 0:
continue
cnt += 1
# while 常见:双指针/滑动窗口的雏形l = 0
r = 0
while r < len(s):
# ... 更新窗口
r += 1
我看重的是你是否能写出“不会失控”的循环:边界清晰、更新明确、不会死循环。很多人掉坑是因为更新变量散落在分支里,自己也说不清下一步发生什么。
列表是Python的主场,但“会用”和“用对”是两回事。
arr = [1, 2, 3]arr.append(4)
arr.extend([5, 6])
# 切片:左闭右开sub = arr[1:3] # [2, 3]
rev = arr[::-1]
# 列表推导:适合轻量转换squares = [x * x for x in range(10) if x % 2 == 0]
# enumerate:别再手写 i += 1for i, v in enumerate(arr):
print(i, v)
我们内部代码评审里,enumerate的使用率明显和“可读性评分”正相关。你不需要背一堆花式写法,但这类“行业常用表达”值得形成习惯。
业务里最常见的痛点就是字符串:日志、CSV、用户输入、文件名、URL参数。把这块练顺,你会轻松很多。
s = " hello,world "s = s.strip()
parts = s.split(",")
joined = "|".join(parts)
# 替换与查找s2 = s.replace("world", "python")
pos = s.find("hello") # 找不到返回 -1
# 判断:很常用token = "A12"
if token.isalnum() and token[0].isalpha():
pass
# 安全切分:最多切 N 次a, b = "k=v=1".split("=", 1) # a="k", b="v=1"
我在现场最常问的一句是:你会不会“最多切一次”。因为真实数据经常包含额外分隔符,split("=", 1)这种写法,能让你少掉很多线上事故。
面试里“统计频次”“按键分组”几乎是必考点,工作里更是常态。
freq = {}for x in nums:
freq[x] = freq.get(x, 0) + 1
from collections import defaultdictfreq = defaultdict(int)
for x in nums:
freq[x] += 1
# set 去重与交并差a = set([1, 2, 3])
b = set([3, 4])
print(a & b) # 交集 {3}
print(a | b) # 并集
print(a - b) # 差集
# 字典按 value 排序:做 TopK 展示很常见items = sorted(freq.items(), key=lambda kv: kv[1], reverse=True)
我更偏爱你掌握get与defaultdict这两种路径:一个够轻,一个够省心。等你写到数据清洗或埋点统计,你会感谢现在的自己。
新手最容易犯的错误之一:一段逻辑复制粘贴三遍,然后开始出现三种不同的Bug。
def clamp(x, lo=0, hi=100): if x < lo:
return lo
if x > hi:
return hi
return x
def parse_int(s): try:
return int(s)
except ValueError:
return None
# 多返回值(实质是 tuple)def divmod_pair(a, b):
return a // b, a % b
q, r = divmod_pair(10, 3)
我在试用期辅导时,会把“可复制”当成风险信号。函数不一定要优雅,但要能把复杂度关在一个小盒子里。
很多人只在题库里写代码,一到真实文件就慌。你至少要把UTF-8与上下文管理器用顺。
# 读文本with open("data.txt", "r", encoding="utf-8") as f:
lines = [line.rstrip("n") for line in f]
# 写文本with open("out.txt", "w", encoding="utf-8") as f:
f.write("hellon")
# 读写 CSV(轻量用法)import csv
with open("in.csv", "r", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
rows = list(reader)
2026年很多团队的数据交换仍大量依赖CSV与日志文本。你不需要精通所有数据格式,但得能快速把数据读进来、写出去,并且不被编码问题绊倒。
工程里没有永远正确的输入。你要学会把异常当作“可预期的分支”。
try: x = int(user_input)
except ValueError:
x = 0
import timestart = time.perf_counter()
# ... do work
cost = time.perf_counter() - start
print(f"cost={cost:.4f}s")
我常在面试里加一条“会出现空行/非法字符”,看候选人是否会用异常兜底。不是为了刁难,是因为线上环境真的就这样。
我在训练营里用的办法很“土”,但效果稳定:把这些片段分成三类去练——输入输出与字符串一类、字典聚合一类、文件与异常一类。每类各选两段,连续三天每天手敲一遍,不复制粘贴,只手敲。敲到第三天,你会明显发现:脑子开始腾出空间去想逻辑,而不是想语法。
更现实一点的建议:给自己设一个小目标,比如用今天的片段写一个“日志词频统计脚本”——读取文件、清洗字符串、用字典计数、输出Top10。这个组合,和真实工作非常接近,也和面试高频题型高度重合。
如果你愿意,我也可以按你当前的方向(刷题/OJ、数据分析、后端入门、自动化脚本)把这份“python必背入门代码”再做一版更贴近场景的清单,直接对准你最可能遇到的题与任务。
