44 کد آماده و تستشده پایتون
کدهای کوتاه و کاربردی برای کارهای روزمره: رشتهها، لیست و دیکشنری، فایلها، تاریخ، requests، JSON و CSV، اتوماسیون و یکخطیهای مفید. همه کدها با پایتون ۳.۱۳ اجرا شدهاند و خروجی واقعی کنار هر کد آمده است.
رشتهها
برعکس کردن رشته
با اسلایس [::-1] هر رشته را در یک قدم معکوس کنید.
text = "Python"
print(text[::-1])nohtyP
بررسی پالیندروم
کلمهای که از دو طرف یکسان خوانده شود؛ با نادیدهگرفتن حروف بزرگ و فاصله.
def is_palindrome(s):
s = "".join(ch.lower() for ch in s if ch.isalnum())
return s == s[::-1]
print(is_palindrome("Never odd or even"))
print(is_palindrome("Python"))True False
شمارش تکرار کلمات
با Counter پرتکرارترین کلمات یک متن را پیدا کنید.
from collections import Counter
text = "python is easy and python is fun"
counts = Counter(text.split())
print(counts.most_common(2))[('python', 2), ('is', 2)]حذف فاصلههای اضافه
فاصلههای تکراری وسط متن را به یک فاصله تبدیل کنید.
text = " سلام دنیا پایتون "
clean = " ".join(text.split())
print(repr(clean))'سلام دنیا پایتون'
قالببندی عدد با جداکننده
نمایش عدد بزرگ با کاما و تعداد اعشار دلخواه با f-string.
price = 12500000.456
print(f"{price:,.0f} تومان")
print(f"{0.1234:.1%}")12,500,000 تومان 12.3%
لیست و دیکشنری
حذف موارد تکراری با حفظ ترتیب
dict.fromkeys ترتیب اولین حضور هر عنصر را نگه میدارد.
items = [3, 1, 3, 2, 1, 5]
unique = list(dict.fromkeys(items))
print(unique)[3, 1, 2, 5]
مرتبسازی لیست دیکشنریها
با پارامتر key بر اساس هر فیلدی مرتب کنید.
users = [
{"name": "Sara", "age": 25},
{"name": "Ali", "age": 19},
{"name": "Reza", "age": 31},
]
for u in sorted(users, key=lambda u: u["age"]):
print(u["name"], u["age"])Ali 19 Sara 25 Reza 31
ادغام دو دیکشنری
عملگر | (پایتون 3.9+) دو دیکشنری را ترکیب میکند؛ مقدار دومی برنده است.
defaults = {"theme": "dark", "lang": "fa"}
user = {"lang": "en"}
settings = defaults | user
print(settings){'theme': 'dark', 'lang': 'en'}گروهبندی با defaultdict
دادهها را بدون بررسی وجود کلید گروهبندی کنید.
from collections import defaultdict
words = ["apple", "avocado", "banana", "blueberry", "cherry"]
groups = defaultdict(list)
for w in words:
groups[w[0]].append(w)
print(dict(groups)){'a': ['apple', 'avocado'], 'b': ['banana', 'blueberry'], 'c': ['cherry']}تقسیم لیست به تکههای مساوی
لیست بلند را به بستههای n تایی تقسیم کنید.
def chunks(lst, n):
return [lst[i:i + n] for i in range(0, len(lst), n)]
print(chunks(list(range(1, 11)), 3))[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
پیمایش همزمان دو لیست
zip عناصر همشماره را کنار هم قرار میدهد.
names = ["Ali", "Sara", "Reza"]
scores = [17, 19, 15]
for i, (n, s) in enumerate(zip(names, scores), start=1):
print(f"{i}. {n}: {s}")1. Ali: 17 2. Sara: 19 3. Reza: 15
فایلها
خواندن فایل خطبهخط
حلقه روی فایل، حافظه کمی مصرف میکند حتی برای فایلهای بزرگ.
from pathlib import Path
Path("notes.txt").write_text("خط اول\nخط دوم\n", encoding="utf-8")
with open("notes.txt", encoding="utf-8") as f:
for num, line in enumerate(f, 1):
print(num, line.strip())1 خط اول 2 خط دوم
افزودن به انتهای فایل (لاگ)
حالت "a" متن جدید را به انتهای فایل اضافه میکند.
from datetime import datetime
def log(msg):
with open("app.log", "a", encoding="utf-8") as f:
f.write(f"{datetime(2026, 10, 15, 9, 30):%Y-%m-%d %H:%M} {msg}\n")
log("start")
log("done")
print(open("app.log", encoding="utf-8").read())2026-10-15 09:30 start 2026-10-15 09:30 done
بررسی وجود فایل قبل از خواندن
از FileNotFoundError با یک شرط ساده جلوگیری کنید.
from pathlib import Path
p = Path("config.txt")
if p.exists():
print(p.read_text(encoding="utf-8"))
else:
print("فایل وجود ندارد:", p.name)فایل وجود ندارد: config.txt
شمارش خطها و کلمات فایل
یک wc کوچک با پایتون.
from pathlib import Path
Path("story.txt").write_text("one two three\nfour five\n", encoding="utf-8")
text = Path("story.txt").read_text(encoding="utf-8")
print("lines:", len(text.splitlines()))
print("words:", len(text.split()))lines: 2 words: 5
تاریخ و زمان
فاصله بین دو تاریخ
تفریق دو date یک timedelta میدهد.
from datetime import date
start = date(2026, 3, 21)
end = date(2026, 10, 15)
print((end - start).days, "روز")208 روز
افزودن روز به تاریخ
با timedelta تاریخ سررسید را حساب کنید.
from datetime import date, timedelta
today = date(2026, 10, 15)
due = today + timedelta(days=30)
print(due.isoformat())2026-11-14
تبدیل رشته به تاریخ
strptime متن را با الگوی مشخص به datetime تبدیل میکند.
from datetime import datetime
dt = datetime.strptime("15/10/2026 14:05", "%d/%m/%Y %H:%M")
print(dt)
print(dt.strftime("%A, %B %d"))2026-10-15 14:05:00 Thursday, October 15
محاسبه سن
سن دقیق با توجه به گذشتن یا نگذشتن تولد امسال.
from datetime import date
def age(born, today=date(2026, 10, 15)):
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
print(age(date(2000, 12, 1)))
print(age(date(2000, 5, 1)))25 26
وب و requests
درخواست GET و خواندن JSON
با requests یک API را صدا بزنید و پاسخ JSON را بخوانید.
import requests
r = requests.get("https://httpbin.org/get", params={"q": "python"}, timeout=10)
print(r.status_code)
print(r.json()["args"])200
{'q': 'python'}ارسال داده با POST
ارسال JSON به سرور و خواندن پاسخ.
import requests
r = requests.post("https://httpbin.org/post", json={"name": "Sara"}, timeout=10)
print(r.status_code, r.json()["json"])200 {'name': 'Sara'}مدیریت خطای شبکه
timeout و raise_for_status برنامه را در برابر قطعی شبکه امن میکنند.
import requests
try:
r = requests.get("https://httpbin.org/status/404", timeout=10)
r.raise_for_status()
except requests.RequestException as e:
print("خطا:", type(e).__name__)خطا: HTTPError
دانلود فایل تکهتکه
فایل بزرگ را با stream بدون پر کردن حافظه دانلود کنید.
import requests
url = "https://httpbin.org/bytes/2048"
with requests.get(url, stream=True, timeout=10) as r:
size = 0
with open("data.bin", "wb") as f:
for chunk in r.iter_content(1024):
f.write(chunk)
size += len(chunk)
print("downloaded", size, "bytes")downloaded 2048 bytes
JSON و CSV
ذخیره و خواندن JSON فارسی
ensure_ascii=False متن فارسی را خوانا نگه میدارد.
import json
data = {"name": "سارا", "skills": ["python", "sql"]}
with open("user.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
with open("user.json", encoding="utf-8") as f:
print(json.load(f)["name"])سارا
نمایش زیبای JSON
خروجی دیکشنری را مرتب و تورفته چاپ کنید.
import json
order = {"id": 7, "items": [{"sku": "A1", "qty": 2}], "paid": True}
print(json.dumps(order, indent=2)){
"id": 7,
"items": [
{
"sku": "A1",
"qty": 2
}
],
"paid": true
}نوشتن CSV با DictWriter
لیست دیکشنریها را مستقیم به فایل CSV تبدیل کنید.
import csv
rows = [{"name": "Ali", "score": 17}, {"name": "Sara", "score": 19}]
with open("scores.csv", "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=["name", "score"])
w.writeheader()
w.writerows(rows)
print(open("scores.csv", encoding="utf-8").read())name,score Ali,17 Sara,19
خواندن CSV و میانگین گیری
هر سطر CSV یک دیکشنری میشود.
import csv
from pathlib import Path
Path("scores.csv").write_text("name,score\nAli,17\nSara,19\nReza,15\n", encoding="utf-8")
with open("scores.csv", encoding="utf-8") as f:
scores = [int(row["score"]) for row in csv.DictReader(f)]
print("avg:", sum(scores) / len(scores))avg: 17.0
سیستم و مسیرها
پیدا کردن همه فایلهای یک پسوند
glob بازگشتی با pathlib.
from pathlib import Path
root = Path("project")
for n in ["a.py", "b.txt", "src/c.py"]:
(root / n).parent.mkdir(parents=True, exist_ok=True)
(root / n).touch()
for p in sorted(root.rglob("*.py")):
print(p.relative_to(root).as_posix())a.py src/c.py
ساخت پوشه تو در تو
parents=True همه پوشههای میانی را میسازد.
from pathlib import Path
out = Path("reports/2026/10")
out.mkdir(parents=True, exist_ok=True)
print(out.is_dir(), out.as_posix())True reports/2026/10
اجزای یک مسیر
نام، پسوند و پوشه والد یک فایل را جدا کنید.
from pathlib import Path
p = Path("/home/sara/projects/report.final.pdf")
print(p.name)
print(p.stem)
print(p.suffix)
print(p.parent)report.final.pdf report.final .pdf /home/sara/projects
حجم پوشه به مگابایت
جمع حجم همه فایلهای یک پوشه.
from pathlib import Path
Path("box").mkdir(exist_ok=True)
Path("box/x.bin").write_bytes(b"0" * 1_500_000)
size = sum(f.stat().st_size for f in Path("box").rglob("*") if f.is_file())
print(f"{size / 1024**2:.2f} MB")1.43 MB
اتوماسیون
تغییر نام گروهی فایلها
همه فایلهای txt را با شمارهگذاری مرتب تغییر نام دهید.
from pathlib import Path
Path("photos").mkdir(exist_ok=True)
for n in ["b.txt", "a.txt", "c.txt"]:
(Path("photos") / n).touch()
for i, p in enumerate(sorted(Path("photos").glob("*.txt")), 1):
p.rename(p.with_name(f"file_{i:02}.txt"))
print(sorted(p.name for p in Path("photos").iterdir()))['file_01.txt', 'file_02.txt', 'file_03.txt']
مرتبسازی فایلها بر اساس پسوند
هر فایل را به پوشهای همنام پسوندش منتقل کنید.
import shutil
from pathlib import Path
d = Path("downloads"); d.mkdir(exist_ok=True)
for n in ["a.jpg", "b.pdf", "c.jpg"]:
(d / n).touch()
for f in d.iterdir():
if f.is_file():
target = d / f.suffix[1:]
target.mkdir(exist_ok=True)
shutil.move(str(f), target / f.name)
print(sorted(p.relative_to(d).as_posix() for p in d.rglob("*.*")))['jpg/a.jpg', 'jpg/c.jpg', 'pdf/b.pdf']
اجرای دستور سیستم
subprocess.run خروجی یک دستور را برمیگرداند.
import subprocess, sys
r = subprocess.run([sys.executable, "--version"], capture_output=True, text=True)
print(r.returncode, r.stdout.strip())0 Python 3.13.5
تکرار با تلاش مجدد (retry)
یک تابع ناپایدار را چند بار با مکث امتحان کنید.
import time
def retry(func, tries=3, delay=0.1):
for n in range(1, tries + 1):
try:
return func()
except Exception as e:
print(f"try {n} failed: {e}")
time.sleep(delay)
raise RuntimeError("all tries failed")
calls = iter([ValueError("timeout"), ValueError("timeout"), "OK"])
def flaky():
x = next(calls)
if isinstance(x, Exception):
raise x
return x
print(retry(flaky))try 1 failed: timeout try 2 failed: timeout OK
ریاضی و تصادفی
عدد تصادفی قابل تکرار
با seed نتیجه تصادفی همیشه یکسان میشود؛ مناسب تست.
import random
random.seed(42)
print(random.randint(1, 100))
print(random.choice(["سنگ", "کاغذ", "قیچی"]))82 سنگ
ساخت رمز عبور امن
ماژول secrets برای رمز و توکن مناسب است، نه random.
import secrets, string
chars = string.ascii_letters + string.digits + "!@#$%"
password = "".join(secrets.choice(chars) for _ in range(12))
print(len(password), "characters")12 characters
گرد کردن دقیق پول
Decimal خطای اعشاری float را ندارد.
from decimal import Decimal, ROUND_HALF_UP
print(0.1 + 0.2)
total = Decimal("0.1") + Decimal("0.2")
print(total)
print(Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP))0.30000000000000004 0.3 2.68
میانگین، میانه و انحراف معیار
ماژول statistics بدون نصب کتابخانه.
import statistics as st
data = [12, 15, 15, 18, 20, 22]
print(st.mean(data), st.median(data), st.mode(data))
print(round(st.stdev(data), 2))17 16.5 15 3.69
یکخطیهای کاربردی
معکوس کردن دیکشنری
جای کلید و مقدار را عوض کنید.
d = {"a": 1, "b": 2}
print({v: k for k, v in d.items()}){1: 'a', 2: 'b'}صاف کردن لیست تو در تو
لیست لیستها را به یک لیست ساده تبدیل کنید.
matrix = [[1, 2], [3, 4], [5]]
print([x for row in matrix for x in row])[1, 2, 3, 4, 5]
جابهجایی دو متغیر
بدون متغیر کمکی.
a, b = 5, 9
a, b = b, a
print(a, b)9 5
پرتکرارترین عنصر لیست
max با key=list.count.
votes = ["A", "B", "A", "C", "A", "B"]
print(max(set(votes), key=votes.count))A
فیلتر اعداد زوج
list comprehension با شرط.
print([n for n in range(1, 21) if n % 2 == 0])[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
کدی پیدا نشد؛ عبارت دیگری را امتحان کنید.
به خطا خوردید؟ راهنمای رفع خطاهای رایج پایتون را ببینید یا یادگیری را از آموزش جامع پایتون شروع کنید.