en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

PyCoders (پایتون)

PyCoders (پایتون)

Open in Telegram

◇ #پایتون جادوگر دنیای برنامه نویسی! ◇ معرفی حوزه های کاری پایتون ◇ معرفی کتابخونه های کاربردی ◇ معرفی دوره های مفید ◇ معرفی تکنیک ها و نکات ◇ نقشه راه حوزه های مختلف ◇ اخبار و آپدیت های پایتون ◇ و هر چیزی در مورد پایتون! ■ گروه پایتون: @programmers_py

Show more
4 106
Subscribers
No data24 hours
+57 days
No data30 days
Posts Archive
🔸 ترفندهای پایتون 🔅استفاده از enumerate و zip به شکلی حرفه‌ای برای مدیریت چند لیست و اندیس همزمان:
for i, (a, b) in enumerate(zip([1,2,3], [4,5,6])):
    print(i, a, b)
✔️ کاهش کدهای بی‌خود ✔️ حلقه‌های تمیز 🐍 @python_rd

🔸 ترفندهای پایتون 🔅بهینه‌سازی حافظه با slots اگر میلیون‌ها آبجکت می‌سازی، این گزینه نجاتت می‌دهد.
class User:
    __slots__ = ("name", "age")
    def __init__(self, name, age):
        self.name = name
        self.age = age
✔️ مصرف RAM کمتر ✔️ سرعت بیشتر آبجکت‌ها 🐍 @python_rd

♥️ رسم قلب با پایتون 🐍 @python_rd

✨ از زیبایی و قدرت پایتون هر چقد بگم کمه 🐍 @python_rd

🔸 ترفندهای پایتون 🔅نکته Type Hints حرفه‌ای برای خوانایی و کاهش باگ در واقع Type Hintها باعث خوانایی بهتر و جلوگیری از باگ‌ها می‌شود—مخصوصاً در پروژه‌های بزرگ.
def process(items: list[str]) -> dict[str, int]:
    return {item: len(item) for item in items}
✔️ برای تیم‌ها و پروژه‌های بزرگ ضروریه 🐍 @python_rd

✨ پایتون برای همه چیز! 🐍 @python_rd
✨ پایتون برای همه چیز! 🐍 @python_rd

مسیر DevOps با Python ⚙️ رودمپ DevOps Engineer با محوریت پایتون 1) پایه پایتون Script نویسی، فایل‌ها، subprocess، CLI ساختن. 2) لینوکس + Bash دستورات، Permission، Cron، SSH. 3) داکر + کانتینرها Image، Container، Dockerfile، Compose. 4) و CI/CD GitHub Actions، GitLab CI، Jenkins. 5) و Cloud Providers AWS / GCP / Azure → EC2، S3، IAM. 6) شبکه و امنیت DNS، Load Balancing، Firewall، Secrets. 7) اتوماسیون با Python Ansible، Fabric، Invoke، Automation Scripts. 8) پروژه‌ها Pipeline ساخت، Deployment اتوماتیک، مانیتورینگ ساده. 🐍 @python_rd

✨ فقط نگاه کن🔥 🐍 @python_rd

🔸 ترفندهای پایتون 🔅استفاده از pathlib به جای os.path pathlib مسیرها را مثل آبجکت مدیریت می‌کند و کد خواناتر و تمیزتر می‌شود.
from pathlib import Path

p = Path("data") / "users" / "info.json"
print(p.exists())
✔️ مدیریت مسیر راحت‌تر ✔️ وابسته به سیستم‌عامل نیست 🐍 @python_rd

✨ کد کامل بازی Pac-Man ساده اول پکیج زیر رو نصب کنید:
pip install pygame
حالا میریم سراغ کد:
import pygame
import random

pygame.init()

WIDTH, HEIGHT = 600, 400
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pac-Man (Simple Version)")

FPS = 60
clock = pygame.time.Clock()

# Colors
YELLOW = (255, 255, 0)
BLACK = (0, 0, 0)
RED   = (255, 0, 0)
WHITE = (255, 255, 255)

# Pac-man setup
pac_size = 20
pac_x, pac_y = WIDTH // 2, HEIGHT // 2
pac_speed = 4

# Ghost setup
ghost_size = 20
ghost_x, ghost_y = random.randint(0, WIDTH), random.randint(0, HEIGHT)
ghost_speed = 2

# Food
food_size = 8
foods = [(random.randint(10, WIDTH-10), random.randint(10, HEIGHT-10)) for _ in range(20)]
score = 0

# Movement variables
dx, dy = 0, 0

running = True
while running:
    clock.tick(FPS)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        # movement
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                dx, dy = -pac_speed, 0
            elif event.key == pygame.K_RIGHT:
                dx, dy = pac_speed, 0
            elif event.key == pygame.K_UP:
                dx, dy = 0, -pac_speed
            elif event.key == pygame.K_DOWN:
                dx, dy = 0, pac_speed

    # Update pacman
    pac_x += dx
    pac_y += dy

    # Boundary check
    pac_x = max(0, min(WIDTH - pac_size, pac_x))
    pac_y = max(0, min(HEIGHT - pac_size, pac_y))

    # Move ghost
    if pac_x > ghost_x: ghost_x += ghost_speed
    if pac_x < ghost_x: ghost_x -= ghost_speed
    if pac_y > ghost_y: ghost_y += ghost_speed
    if pac_y < ghost_y: ghost_y -= ghost_speed

    # Eating food
    new_foods = []
    for fx, fy in foods:
        if abs(pac_x - fx) < pac_size and abs(pac_y - fy) < pac_size:
            score += 1
        else:
            new_foods.append((fx, fy))
    foods = new_foods

    WIN.fill(BLACK)

    # Draw pacman
    pygame.draw.circle(WIN, YELLOW, (pac_x, pac_y), pac_size)

    # Draw ghost
    pygame.draw.rect(WIN, RED, (ghost_x, ghost_y, ghost_size, ghost_size))

    # Draw food
    for fx, fy in foods:
        pygame.draw.circle(WIN, WHITE, (fx, fy), food_size)

    # Display score
    font = pygame.font.SysFont(None, 30)
    img = font.render(f"Score: {score}", True, WHITE)
    WIN.blit(img, (10, 10))

    # Check collision with ghost
    if abs(pac_x - ghost_x) < pac_size and abs(pac_y - ghost_y) < pac_size:
        font = pygame.font.SysFont(None, 50)
        over = font.render("GAME OVER!", True, WHITE)
        WIN.blit(over, (WIDTH//2-120, HEIGHT//2-20))
        pygame.display.update()
        pygame.time.delay(2000)
        running = False

    pygame.display.update()

pygame.quit()
برای اجرا با ترمینال باید:
python pacman.py
🔸 با کلیدهای جهت‌دار حرکت می‌کنی 🔸 امتیاز جمع می‌کنی 🔸 اگر روح بهت بخوره Game Over میشی 🐍 @python_rd

✨ بازی سنگ، کاغذ، قیچی یا Rock-Paper-Scissors
"""
Rock - Paper - Scissors
Python 3.x
"""

import random

def main():
    print("✂️ سنگ - کاغذ - قیچی ✂️")
    choices = ["سنگ", "کاغذ", "قیچی"]

    while True:
        print("\nانتخاب کن:")
        print("1 = سنگ")
        print("2 = کاغذ")
        print("3 = قیچی")

        move_str = input("عدد انتخابت؟ ")

        if not move_str.isdigit():
            print("❌ فقط عدد وارد کن.")
            continue

        move = int(move_str)
        if move not in [1, 2, 3]:
            print("❌ عدد باید 1، 2 یا 3 باشد.")
            continue

        player = choices[move - 1]
        computer = random.choice(choices)

        print(f"تو: {player}   |   کامپیوتر: {computer}")

        # تعیین برنده
        if player == computer:
            print("🤝 مساوی!")
        elif (player == "سنگ" and computer == "قیچی") or \
             (player == "کاغذ" and computer == "سنگ") or \
             (player == "قیچی" and computer == "کاغذ"):
            print("🏆 تو بردی!")
        else:
            print("🤖 کامپیوتر برد!")

        again = input("دوباره بازی کنیم؟ (y/n): ").strip().lower()
        if again != "y":
            print("🌟 بازی تمام شد! مرسی که بازی کردی.")
            break

if __name__ == "__main__":
    main()
با دوستاتون بازی کنید و لذتشو ببرین🫶🏻❤️ 🐍 @python_rd

🔸 مسیر Data Scientist 🧬 رودمپ دانشمند داده با پایتون 1) پایتون برای داده NumPy، Pandas، Matplotlib، Seaborn, Polars. 2) آمار و احتمال Mean، Variance، Distributionها، Hypothesis Testing. 3) پاکسازی و پردازش داده‌ها Null values، Outliers، Feature Engineering. 4) یادگیری ماشین Scikit-learn → Classification، Regression، Clustering. 5) مصورسازی داده‌ها Plotly، Seaborn، Dash. 6) یادگیری SQL Queryها، Joinها، Window Functions. 7) ابزارهای واقعی Jupyter، Git، Docker. 8) پروژه‌ها تحلیل دیتاست، پیش‌بینی قیمت، مدل طبقه‌بندی، داشبورد تعاملی. 🐍 @python_rd

✨️ نقشه راه پایتون 🐍 @python_rd
✨️ نقشه راه پایتون 🐍 @python_rd

🔸 ترفندهای پایتون 🔅فرق copy و deepcopy در ساختارهای تودرتو خیلی مهمه.
import copy

a = [[1, 2], [3, 4]]
b = copy.copy(a)
c = copy.deepcopy(a)

a[0][0] = 999
print(b)   # تاثیر می‌گیرد
print(c)   # تاثیر نمی‌گیرد
✔️ در واقع copy فقط سطح اول را کپی می‌کند ✔️ اما deepcopy کل ساختار را 🐍 @python_rd

🔸 ترفندهای پایتون 🔅استفاده از loguru برای لاگ‌نویسی حرفه‌ای به جای logging استاندارد که دردسر داره، این خیلی تمیزه:
from loguru import logger

logger.info("User logged in!")
✔️ فرمت تمیز ✔️ فایل‌گردانی خودکار ✔️ قابل توسعه برای پروژه‌های بزرگ 🐍 @python_rd

✨ لایبرری‌های فوق العاده پایتون 🐍 @python_rd
✨ لایبرری‌های فوق العاده پایتون 🐍 @python_rd

✨ از اون کارهای ساده و زیبا که میشه با پایتون انجامش داد 🐍 @python_rd

🔸 ترفندهای پایتون 🔅ساختن Context Manager بدون کلاس برای ساخت یک context manager لازم نیست کلاس بنویسی. با یک دکوراتور همه‌چیز تمیز و سریع می‌شود.:
from contextlib import contextmanager
import time

@contextmanager
def timer():
    start = time.time()
    yield
    print("Time:", time.time() - start)

with timer():
    sum(range(10_000_000))
✔️ مناسب اندازه‌گیری زمان، مدیریت فایل، اتصال DB و… 🐍 @python_rd

🛡 آموزش نکات امنیتی برای بک‌اند پارت چهارم نکته رمزنگاری پسورد با bcrypt 🔻 چرا bcrypt؟ چون کند طراحی شده و brute-force را سخت می‌کند (برخلاف SHA256 و MD5). 🔻 نمونه استفاده:
import bcrypt

hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
bcrypt.checkpw(password.encode(), hashed)
🔻 نکته مهم: ✔️ هرگز پسورد را hash ساده نکن ✔️ همیشه از salt استفاده کن ✔️و مطمئن باش bcrypt بهترین گزینه برای اپلیکیشن‌های بک‌اند است 🐍 @python_rd

🔸 ترفندهای پایتون 🔅استفاده از Generator برای دیتاهای بزرگ به جای خواندن کل فایل در RAM، خط‌به‌خط بخوان:
def read_lines(file):
    for line in open(file):
        yield line

for row in read_lines("big.txt"):
    print(row)
✔️ مصرف حافظه خیلی کمتر ✔️ داده‌های عظیم → مشکلی نیست 🐍 @python_rd