PyCoders (پایتون)
4.07K subscribers
959 photos
148 videos
68 files
204 links
#پایتون جادوگر دنیای برنامه نویسی!
◇ معرفی حوزه های کاری پایتون
◇ معرفی کتابخونه های کاربردی
◇ معرفی دوره های مفید
◇ معرفی تکنیک ها و نکات
◇ نقشه راه حوزه های مختلف
◇ اخبار و آپدیت های پایتون
◇ و هر چیزی در مورد پایتون!

■ گروه پایتون:
@programmers_py
Download Telegram
کد کامل بازی 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
2
🔸 ترفندهای پایتون

🔅استفاده از pathlib به جای os.path

pathlib مسیرها را مثل آبجکت مدیریت می‌کند و کد خواناتر و تمیزتر می‌شود.


from pathlib import Path

p = Path("data") / "users" / "info.json"
print(p.exists())


✔️ مدیریت مسیر راحت‌تر
✔️ وابسته به سیستم‌عامل نیست

🐍 @python_rd
👍2
مسیر 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
1
پایتون برای همه چیز!


🐍 @python_rd
3👍1
🔸 ترفندهای پایتون

🔅نکته Type Hints حرفه‌ای برای خوانایی و کاهش باگ

در واقع Type Hintها باعث خوانایی بهتر و جلوگیری از باگ‌ها می‌شود—مخصوصاً در پروژه‌های بزرگ.


def process(items: list[str]) -> dict[str, int]:
return {item: len(item) for item in items}



✔️ برای تیم‌ها و پروژه‌های بزرگ ضروریه


🐍 @python_rd
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
از زیبایی و قدرت پایتون هر چقد بگم کمه


🐍 @python_rd
6
This media is not supported in your browser
VIEW IN TELEGRAM
♥️ رسم قلب با پایتون


🐍 @python_rd
4🔥2👍1
🔸 ترفندهای پایتون

🔅بهینه‌سازی حافظه با slots

اگر میلیون‌ها آبجکت می‌سازی، این گزینه نجاتت می‌دهد.


class User:
__slots__ = ("name", "age")
def __init__(self, name, age):
self.name = name
self.age = age



✔️ مصرف RAM کمتر
✔️ سرعت بیشتر آبجکت‌ها


🐍 @python_rd
🤔2
🔸 ترفندهای پایتون

🔅استفاده از enumerate و zip به شکلی حرفه‌ای

برای مدیریت چند لیست و اندیس همزمان:


for i, (a, b) in enumerate(zip([1,2,3], [4,5,6])):
print(i, a, b)


✔️ کاهش کدهای بی‌خود
✔️ حلقه‌های تمیز

🐍 @python_rd
3👍2
🔅 کد دانلود صفحه وب

import requests

url = "https://example.com"
response = requests.get(url)

print(response.text[:500]) # نمایش 500 کاراکتر اول


📌 کاربرد: Scraping / گرفتن HTML یک سایت


🐍 @python_rd
🔸 مسیر Machine Learning با پایتون
🤖 رودمپ یادگیری ماشین با پایتون

1) پایتون علمی
NumPy، Pandas، Matplotlib، Scikit-learn.

2) ریاضیات لازم
مشتق، ماتریس، وکتور، جبرخطی، آمار.

3) الگوریتم‌های ML
Regression، SVM، Decision Tree، RandomForest، KMeans.

4) مدل‌سازی و ارزیابی
Train/Test، Cross Validation، Metrics مثل F1، ROC.

5) یادگیری عمیق
PyTorch یا TensorFlow → CNN، RNN، Transformers.

6) و MLOps ساده
Model Serving، FastAPI، Docker.

7) مهندسی داده مقدماتی
ETL، Pipelines، Feature Store.

8) پروژه‌ها
طبقه‌بندی تصاویر، تحلیل متن، پیش‌بینی سری زمانی.


🐍 @python_rd
👍2
🔸 ترفندهای پایتون

🔅مدیریت state در async با ContextVar

در FastAPI و برنامه‌های async خیلی کاربردیه.


from contextvars import ContextVar

request_id = ContextVar("request_id", default=None)



✔️ نگه‌داشتن state بدون مشکلات همزمانی


🐍 @python_rd
🔸 ترفندهای پایتون

🔅بعد از try از else و finally غافل نشو

کد تمیزتر و منطقی‌تر:


try:
x = 10 / num
except ZeroDivisionError:
print("Cannot divide by zero!")
else:
print("No error, result:", x)
finally:
print("Finished")


✔️ در واقع else فقط وقتی اجرا می‌شود که ارور نباشد
✔️ اما finally همیشه اجرا می‌شود



🐍 @python_rd
🔅 اندازه فایل یا فولدر رو با پایتون بگیر


import os

print(os.path.getsize("file.txt"), "bytes")




🐍 @python_rd
3
🔸 ترفندهای پایتون

🔅نکته DataClass برای کلاس‌های تمیز

دیگه نیازی نیست init و repr بنویسی؛ خودش می‌سازه.

from dataclasses import dataclass

@dataclass
class User:
name: str
age: int



✔️ 70٪ کد کمتر
✔️ خوانایی بیشتر


🐍 @python_rd
9
🔸 زندگی کوتاهه، از پایتون استفاده کن!


🐍 @python_rd
9👍3
سلام بچه ها، حالتون چطوره؟
یکم از خودتون بگید، صحبت کنیم،
الان چیکار میکنید؟
چه مباحثی از پایتون رو کار کردید؟
تو چه مرحله ای هستید؟
به درآمد رسیدید یا هنوز تو مراحل یادگیری هستید؟
3
🔆کوتاه نویسی با پایتون:
Walrus Operator (:=)

🔸از نسخه ۳.۸ به بعد یه ابزار جدید به پایتون اضافه شد به اسم Walrus Operator.
باهاش می‌تونی هم‌زمان *یه مقدار رو ذخیره کنی* و *از همون مقدار داخل شرط استفاده کنی*.
یعنی هم کدت کوتاه‌تر می‌شه، هم تمیزتر.

مثال ساده:
if (name := input("Name: ")):
print("Hello", name)

بدون walrus مجبور بودی اول name رو بگیری، بعد توی if چکش کنی.
اینجا همه‌چی یک‌جا و شیک انجام می‌شه. این قابلیت توی حلقه‌ها واقعاً مفیده.

🐍 @python_rd
3👍3
🔆بهینه‌سازی مصرف RAM با slots

🔸به
‌صورت پیش‌فرض هر آبجکت پایتون یه دیکشنری داخلی داره که کلی جا می‌گیره. 
اگه تعداد آبجکت‌ها زیاد باشه، مصرف رم می‌ره هوا. 
اینجا __slots__ به کارت میاد.

با تعریف اسلاتس، پایتون به کلاس می‌گه دقیقاً چه attribute هایی داری، 
در نتیجه دیگه واسه هر شیء دیکشنری نمی‌سازه و مصرف حافظه تا حد زیادی کم می‌شه.

class User:
    __slots__ = ("name", "age")
    def __init__(self, name, age):
        self.name = name
        self.age = age


این تکنیک مخصوص وقتاییه که با هزاران آبجکت طرفی و پرفورمنس برات مهمه.

🐍 @python_rd
2