Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
🖥️ آموزش شبیه‌سازی ساده CPU با پایتون 🐍

سلام دوستان! 😊 امروز می‌خواهیم یاد بگیریم چطور می‌توانیم یک شبیه‌سازی ساده از یک CPU با پایتون ایجاد کنیم تا تأثیر کدهای مختلف روی منابع سیستم را مشاهده کنیم. این کار به ما کمک می‌کند تا بفهمیم چگونه کدهای ما می‌توانند بر عملکرد CPU تأثیر بگذارند. 🌟

🔹 ایجاد شبیه‌سازی ساده CPU

در این شبیه‌سازی، ما یک CPU ساده ایجاد می‌کنیم که می‌تواند دستورات پایه‌ای مانند جمع، تفریق، ضرب و تقسیم را اجرا کند و میزان استفاده از منابع را بررسی کند.

1. نصب کتابخانه‌های مورد نیاز 🛠️

ابتدا، مطمئن شوید که پایتون و کتابخانه‌های مورد نیاز نصب شده‌اند. شما نیاز به نصب psutil برای بررسی میزان استفاده از منابع دارید. برای نصب این کتابخانه، از دستور زیر استفاده کنید:

pip install psutil

2. ایجاد فایل پایتون 📄

یک فایل به نام cpu_simulator.py ایجاد کنید و محتوای زیر را در آن قرار دهید:

import psutil
import time

class SimpleCPU:
def __init__(self):
self.register = 0

def execute(self, instructions):
for instruction in instructions:
if instruction[0] == "ADD":
self.register += instruction[1]
elif instruction[0] == "SUB":
self.register -= instruction[1]
elif instruction[0] == "MUL":
self.register *= instruction[1]
elif instruction[0] == "DIV":
if instruction[1] != 0:
self.register /= instruction[1]
print(f"Executed {instruction}: Register = {self.register}")

def monitor_resources(duration=10):
for _ in range(duration):
cpu_usage = psutil.cpu_percent(interval=1)
memory_info = psutil.virtual_memory()
print(f"CPU Usage: {cpu_usage}%")
print(f"Memory Usage: {memory_info.percent}%")
time.sleep(1)

if __name__ == "__main__":
cpu = SimpleCPU()
instructions = [
("ADD", 10),
("MUL", 2),
("SUB", 5),
("DIV", 3)
]

print("Starting CPU simulation...")
cpu.execute(instructions)

print("Monitoring system resources...")
monitor_resources()

3. اجرای شبیه‌سازی 🚀

برای اجرای شبیه‌سازی، دستور زیر را در خط فرمان (Command Line) وارد کنید:

python cpu_simulator.py

این کد ابتدا یک سری دستورات را روی شبیه‌سازی CPU اجرا می‌کند و سپس میزان استفاده از منابع سیستم را به مدت 10 ثانیه مانیتور می‌کند.

🔹 توضیحات:

- SimpleCPU Class: این کلاس یک CPU ساده را شبیه‌سازی می‌کند که دارای یک رجیستر است و می‌تواند دستورات پایه‌ای را اجرا کند.
- execute Method: این متد دستورات را یکی یکی اجرا می‌کند و نتیجه را در رجیستر ذخیره می‌کند.
- monitor_resources Function: این تابع میزان استفاده از CPU و حافظه را به مدت 10 ثانیه مانیتور می‌کند و نتایج را چاپ می‌کند.

🌟 نکات تکمیلی
- این شبیه‌سازی بسیار ساده است و فقط برای درک اولیه از نحوه عملکرد CPU و تاثیر دستورات مختلف بر روی منابع سیستم طراحی شده است.
- برای شبیه‌سازی‌های پیچیده‌تر، می‌توانید به مطالعه معماری کامپیوتر و سیستم‌های دیجیتال بپردازید.

(My chanel)

#پایتون #شبیه_سازی #CPU #برنامه_نویسی #آموزش #تلگرام #Python #تلگرام
👍2
❗️اینم ایک نمونه CPU شبیح سازی شده با پایتون 👇

import psutil
import time

class AdvancedCPU:
def __init__(self):
self.registers = [0] * 8 # Initialize 8 registers
self.program_counter = 0 # Initialize program counter
self.instructions = [] # List to store instructions

def load_instructions(self, instructions):
""" Load instructions into CPU """
self.instructions = instructions

def execute(self):
""" Execute loaded instructions """
while self.program_counter < len(self.instructions):
instruction = self.instructions[self.program_counter]
self.program_counter += 1
self._execute_instruction(instruction)

def _execute_instruction(self, instruction):
""" Execute a single instruction """
cmd, *args = instruction
if cmd == "ADD":
self._add(args)
elif cmd == "SUB":
self._sub(args)
elif cmd == "MUL":
self._mul(args)
elif cmd == "DIV":
self._div(args)
elif cmd == "MOV":
self._mov(args)
elif cmd == "PRT":
self._prt(args)

def _add(self, args):
""" Add values in registers """
reg1, reg2 = args
self.registers[reg1] += self.registers[reg2]

def _sub(self, args):
""" Subtract values in registers """
reg1, reg2 = args
self.registers[reg1] -= self.registers[reg2]

def _mul(self, args):
""" Multiply values in registers """
reg1, reg2 = args
self.registers[reg1] *= self.registers[reg2]

def _div(self, args):
""" Divide values in registers """
reg1, reg2 = args
if self.registers[reg2] != 0:
self.registers[reg1] /= self.registers[reg2]

def _mov(self, args):
""" Move value to register """
reg, value = args
self.registers[reg] = value

def _prt(self, args):
""" Print value of register """
reg = args[0]
print(f"Register {reg} = {self.registers[reg]}")

def monitor_resources(duration=10):
""" Monitor CPU and memory usage """
for _ in range(duration):
cpu_usage = psutil.cpu_percent(interval=1)
memory_info = psutil.virtual_memory()
print(f"CPU Usage: {cpu_usage}%")
print(f"Memory Usage: {memory_info.percent}%")
time.sleep(1)

if __name__ == "__main__":
cpu = AdvancedCPU()
instructions = [
("MOV", 0, 10), # Move 10 to register 0
("MOV", 1, 20), # Move 20 to register 1
("ADD", 0, 1), # Add register 0 and 1, store in register 0
("MUL", 0, 1), # Multiply register 0 and 1, store in register 0
("SUB", 0, 1), # Subtract register 1 from register 0, store in register 0
("DIV", 0, 1), # Divide register 0 by register 1, store in register 0
("PRT", 0) # Print value of register 0
]

print("Loading instructions into CPU...")
cpu.load_instructions(instructions)

print("Starting CPU simulation...")
cpu.execute()

print("Monitoring system resources...")
monitor_resources()

(کانال اموزش پایتون)

#پایتون #نمونه #کد #CPU
👍2
🚀 تبدیل برنامه پایتون به یک فایل اجرایی
برای این کار می‌توانید از ابزار pyinstaller استفاده کنید.

🛠 نصب PyInstaller
ابتدا باید PyInstaller را نصب کنید. می‌توانید از دستور زیر استفاده کنید:

pip install pyinstaller

📦 تبدیل برنامه به فایل اجرایی
سپس، می‌توانید برنامه خود را به یک فایل اجرایی تبدیل کنید. دستور زیر را در خط فرمان یا ترمینال اجرا کنید:

pyinstaller --onefile app.py

این دستور یک فایل اجرایی مستقل ایجاد می‌کند. بعد از اجرای این دستور، یک پوشه به نام dist در دایرکتوری پروژه شما ایجاد می‌شود که شامل فایل اجرایی برنامه شماست.

🖥 استفاده از فایل اجرایی
پس از ایجاد فایل اجرایی، می‌توانید آن را به دسکتاپ خود منتقل کنید یا میانبرهایی برای آن در مکان‌های مختلف ایجاد کنید. با دوبار کلیک بر روی فایل اجرایی، برنامه شما به عنوان یک اپلیکیشن مستقل باز خواهد شد.

🚀 کد کامل با توضیحات اضافی

برای مثال، فرض کنید کد زیر را در فایل app.py دارید:

import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk

def create_main_window():
window = tk.Tk()
window.title("اپلیکیشن با لوگو و دیزاین")
window.geometry("400x300")
return window

def add_widgets(window):
# افزودن لوگو
logo_image = Image.open("logo.png") # لوگوی خود را اینجا اضافه کنید
logo_image = logo_image.resize((100, 100), Image.ANTIALIAS)
logo_photo = ImageTk.PhotoImage(logo_image)
logo_label = tk.Label(window, image=logo_photo)
logo_label.image = logo_photo
logo_label.pack(pady=10)

# افزودن برچسب نام اپلیکیشن
app_name_label = tk.Label(window, text="اپلیکیشن من", font=("Arial", 18, "bold"))
app_name_label.pack(pady=5)

# افزودن برچسب و جعبه متنی
label = tk.Label(window, text="نام خود را وارد کنید:")
label.pack(pady=10)

entry = tk.Entry(window)
entry.pack(pady=5)

def show_message():
name = entry.get()
messagebox.showinfo("سلام", f"سلام {name}!")

# افزودن دکمه تایید
button = tk.Button(window, text="تایید", command=show_message, bg="blue", fg="white", font=("Arial", 12, "bold"))
button.pack(pady=10)

if __name__ == "__main__":
main_window = create_main_window()
add_widgets(main_window)
main_window.mainloop()

🏃‍♂️ اجرای PyInstaller
برای تبدیل این برنامه به یک فایل اجرایی، دستور زیر را اجرا کنید:

pyinstaller --onefile app.py

بعد از اجرای این دستور، به پوشه dist بروید و فایل اجرایی app یا app.exe را مشاهده کنید. با دوبار کلیک بر روی این فایل، برنامه شما به صورت یک پنجره گرافیکی مستقل باز می‌شود.

(کانال تلگرام من)

#اپلیکیشن #پایتون #اموزش
👍2
🚀 آموزش ساخت یک IDE ساده با پایتون و Tkinter

در این آموزش، نحوه ساخت یک محیط توسعه یکپارچه (IDE) ساده با استفاده از پایتون و کتابخانه Tkinter را به شما نشان خواهیم داد. این IDE به شما امکان می‌دهد تا کدهای پایتون خود را نوشته، ذخیره و اجرا کنید. برای شروع، از ابزارهای پایه‌ای استفاده خواهیم کرد، اما شما می‌توانید با افزودن قابلیت‌های بیشتر، IDE خود را پیشرفته‌تر کنید.

🛠 نصب Tkinter
Tkinter معمولاً با پایتون به صورت پیش‌فرض نصب می‌شود. اما اگر آن را ندارید، می‌توانید از دستور زیر برای نصب آن استفاده کنید:

pip install tk

📋 مراحل ساخت IDE

1. ایجاد پنجره اصلی IDE
2. افزودن ویجت‌های متن برای نوشتن کد
3. افزودن منوها برای باز کردن، ذخیره و اجرای فایل‌ها
4. اضافه کردن قابلیت اجرای کد پایتون

1. ایجاد پنجره اصلی IDE

ابتدا یک پنجره اصلی ایجاد می‌کنیم:

import tkinter as tk
from tkinter import filedialog, Text
import subprocess

def create_main_window():
window = tk.Tk()
window.title("پایتون IDE")
window.geometry("800x600")
return window

if __name__ == "__main__":
main_window = create_main_window()
main_window.mainloop()

2. افزودن ویجت‌های متن برای نوشتن کد

برای نوشتن کد، یک ویجت Text اضافه می‌کنیم:

def add_text_widget(window):
text_widget = Text(window, wrap='none')
text_widget.pack(expand=True, fill='both')
return text_widget

if __name__ == "__main__":
main_window = create_main_window()
text_editor = add_text_widget(main_window)
main_window.mainloop()

3. افزودن منوها برای باز کردن، ذخیره و اجرای فایل‌ها

یک منو برای باز کردن، ذخیره و اجرای فایل‌ها اضافه می‌کنیم:

def add_menu(window, text_widget):
menu = tk.Menu(window)
window.config(menu=menu)

file_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="فایل", menu=file_menu)

def open_file():
file_path = filedialog.askopenfilename(defaultextension=".py", filetypes=[("Python files", "*.py")])
if file_path:
with open(file_path, "r", encoding="utf-8") as file:
code = file.read()
text_widget.delete(1.0, tk.END)
text_widget.insert(tk.END, code)

def save_file():
file_path = filedialog.asksaveasfilename(defaultextension=".py", filetypes=[("Python files", "*.py")])
if file_path:
with open(file_path, "w", encoding="utf-8") as file:
code = text_widget.get(1.0, tk.END)
file.write(code)

def run_code():
code = text_widget.get(1.0, tk.END)
exec(code)

file_menu.add_command(label="باز کردن", command=open_file)
file_menu.add_command(label="ذخیره", command=save_file)
file_menu.add_separator()
file_menu.add_command(label="اجرا", command=run_code)

if __name__ == "__main__":
main_window = create_main_window()
text_editor = add_text_widget(main_window)
add_menu(main_window, text_editor)
main_window.mainloop()

4. اضافه کردن قابلیت اجرای کد پایتون

برای اجرای کد پایتون، از توابع داخلی پایتون استفاده می‌کنیم:

import tkinter as tk
from tkinter import filedialog, Text, messagebox

def create_main_window():
window = tk.Tk()
window.title("پایتون IDE")
window.geometry("800x600")
return window

def add_text_widget(window):
text_widget = Text(window, wrap='none')
text_widget.pack(expand=True, fill='both')
return text_widget

def add_menu(window, text_widget):
menu = tk.Menu(window)
window.config(menu=menu)

file_menu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="فایل", menu=file_menu)

def open_file():
file_path = filedialog.askopenfilename(defaultextension=".py", filetypes=[("Python files", "*.py")])
if file_path:
with open(file_path, "r", encoding="utf-8") as file:
code = file.read()
text_widget.delete(1.0, tk.END)
text_widget.insert(tk.END, code)
☝️ادامه کد متن قبلی☝️
def save_file():
file_path = filedialog.asksaveasfilename(defaultextension=".py", filetypes=[("Python files", "*.py")])
if file_path:
with open(file_path, "w", encoding="utf-8") as file:
code = text_widget.get(1.0, tk.END)
file.write(code)

def run_code():
code = text_widget.get(1.0, tk.END)
exec(code)

file_menu.add_command(label="باز کردن", command=open_file)
file_menu.add_command(label="ذخیره", command=save_file)
file_menu.add_separator()
file_menu.add_command(label="اجرا", command=run_code)

if name == "main":
main_window = create_main_window()
text_editor = add_text_widget(main_window)
add_menu(main_window, text_editor)
main_window.mainloop()

🎉 تبریک! شما یک IDE ساده با پایتون ساختید!

این IDE به شما امکان می‌دهد تا کدهای پایتون خود را نوشته، ذخیره و اجرا کنید. شما می‌توانید با افزودن قابلیت‌های بیشتر مانند هایلایت سینتکس، شماره‌گذاری خطوط و دیباگر، این IDE را بهبود بخشید.

🔧 گسترش قابلیت‌ها*
در اینجا چند پیشنهاد برای گسترش قابلیت‌های IDE:
- هایلایت سینتکس
- شماره‌گذاری خطوط
- تکمیل خودکار کد
- ابزار دیباگ

(کانال ما)

#PythonIDE #Tkinter #PythonProgramming #CodeEditor #LearnPython
👍42
چرا چند روزه ۹۸ تاییم ؟😭
👍2💔2
📚 آموزش الگوریتم مرتب‌سازی ادغامی (Merge Sort)

سلام دوستان! امروز قصد داریم یکی از الگوریتم‌های مهم و پرکاربرد در علوم کامپیوتر که در دانشگاه‌ها تدریس می‌شود را به شما آموزش دهیم. این الگوریتم به نام مرتب‌سازی ادغامی (Merge Sort) شناخته می‌شود. بیایید با هم یاد بگیریم چطور این الگوریتم کار می‌کند. 🧠

الگوریتم مرتب‌سازی ادغامی
مرتب‌سازی ادغامی یکی از الگوریتم‌های مرتب‌سازی است که از روش تقسیم و غلبه (Divide and Conquer) استفاده می‌کند. در این روش، لیست به دو نیم تقسیم شده و هر نیمه به صورت جداگانه مرتب می‌شود، سپس دو نیمه مرتب شده به هم ادغام می‌شوند تا یک لیست مرتب نهایی ایجاد شود.

مراحل اجرای الگوریتم
1. تقسیم لیست: لیست اصلی را به دو نیمه مساوی تقسیم کنید.
2. مرتب‌سازی نیمه‌ها: هر نیمه را به صورت جداگانه با استفاده از الگوریتم مرتب‌سازی ادغامی مرتب کنید.
3. ادغام نیمه‌ها: دو نیمه مرتب شده را به یکدیگر ادغام کنید تا یک لیست مرتب نهایی به دست آید.

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

def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]

merge_sort(left_half)
merge_sort(right_half)

i = j = k = 0

while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1

while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1

while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1

return arr

این الگوریتم به صورت بازگشتی عمل کرده و پیچیدگی زمانی آن O(n log n) است، که آن را برای بسیاری از کاربردها به یک انتخاب عالی تبدیل می‌کند.

مزایا و معایب
مزایا:
- پیچیدگی زمانی مناسب
- عملکرد قابل پیش‌بینی

معایب:
- نیاز به حافظه اضافی برای لیست‌های نیمه

امیدوارم این آموزش برای شما مفید بوده باشد! تا آموزش بعدی، موفق و پیروز باشید! 🌟

#الگوریتم #مرتب_سازی #برنامه_نویسی #کامپیوتر #آموزش #MergeSort
🟥الگوریتم مرتب سازی ادغامی(merge sort)
👍21
📚 10 دستور کاربردی ویندوز برای برنامه‌نویسان

سلام دوستان! امروز می‌خواهیم به شما 10 دستور مفید و کاربردی ویندوز که می‌تواند به برنامه‌نویسان کمک کند را معرفی کنیم. این دستورات می‌توانند کارهای شما را سریع‌تر و آسان‌تر کنند. 💻🚀

1. cd (Change Directory)
📂 این دستور برای تغییر پوشه جاری در خط فرمان استفاده می‌شود.
cd path\to\directory

2. dir
📜 این دستور محتوای پوشه جاری را نمایش می‌دهد.
dir

3. mkdir (Make Directory)
📁 این دستور برای ایجاد پوشه جدید استفاده می‌شود.
mkdir new_directory

4. del
🗑️ این دستور برای حذف فایل‌ها استفاده می‌شود.
del filename

5. copy
📋 این دستور برای کپی کردن فایل‌ها استفاده می‌شود.
copy source_file destination

6. move
🚚 این دستور برای جابجایی فایل‌ها استفاده می‌شود.
move source_file destination

7. ipconfig
🌐 این دستور اطلاعات شبکه و آدرس IP را نمایش می‌دهد.
ipconfig

8. tasklist
📋 این دستور لیست فرآیندهای در حال اجرا را نمایش می‌دهد.
tasklist

9. taskkill
🔪 این دستور برای خاتمه دادن به فرآیندهای در حال اجرا استفاده می‌شود.
taskkill /PID process_id

10. shutdown
🖥️ این دستور برای خاموش کردن یا راه‌اندازی مجدد سیستم استفاده می‌شود.
shutdown /s /t 0  # خاموش کردن فوری
shutdown /r /t 0 # راه‌اندازی مجدد فوری

امیدوارم این دستورات برای شما مفید باشند! تا آموزش بعدی، موفق و پیروز باشید! 🌟

(برای یاد گرفتن چیزای جدید و بهتر بیا تو کانال ما)

#ویندوز #برنامه_نویسی #آموزش #دستورات_ویندوز #توسعه_دهندگان #پیشرفت
👍51
البته به نظرم شماره ۴ بهتره چون ممکنه یه فایلی رو بخایم پاک کنیم اما پیداش نکنیم حالا اگه موافقین بیلاخ پایینو انگشت کنید
👍6
📚 آموزش شی‌گرایی پیشرفته - پارت 1

سلام دوستان! امروز می‌خواهیم به شما مفاهیم پیشرفته شی‌گرایی (Object-Oriented Programming) را معرفی کنیم. اگرچه بسیاری از برنامه‌نویسان حرفه‌ای هستند، اما ممکن است با برخی از مفاهیم پیچیده شی‌گرایی مشکلاتی داشته باشند. بیایید با هم این مفاهیم را یاد بگیریم. 🧠

1. کلاس‌ها و اشیاء (Classes and Objects)
کلاس‌ها بلوک‌های ساختمانی برنامه‌های شی‌گرا هستند و اشیاء نمونه‌هایی از این کلاس‌ها می‌باشند.
class Animal:
def __init__(self, name):
self.name = name

dog = Animal("Dog")

2. وراثت (Inheritance)
وراثت به ما اجازه می‌دهد که ویژگی‌ها و رفتارهای یک کلاس را به کلاس دیگری منتقل کنیم.
class Animal:
def __init__(self, name):
self.name = name

class Dog(Animal):
def bark(self):
print(f"{self.name} is barking!")

dog = Dog("Rex")
dog.bark()

3. چندریختی (Polymorphism)
چندریختی به ما اجازه می‌دهد که از یک واسط واحد برای اشیاء مختلف استفاده کنیم.
class Cat(Animal):
def sound(self):
return "Meow"

class Dog(Animal):
def sound(self):
return "Bark"

def make_sound(animal):
print(animal.sound())

cat = Cat("Kitty")
dog = Dog("Rex")
make_sound(cat)
make_sound(dog)

4. کپسوله‌سازی (Encapsulation)
کپسوله‌سازی به ما کمک می‌کند تا داده‌ها و متدها را در داخل کلاس مخفی کنیم.
class BankAccount:
def __init__(self, balance):
self.__balance = balance

def deposit(self, amount):
self.__balance += amount

def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print("Insufficient balance")

def get_balance(self):
return self.__balance

account = BankAccount(1000)
account.deposit(500)
account.withdraw(300)
print(account.get_balance())

5. ترکیب (Composition)
ترکیب به ما اجازه می‌دهد که کلاس‌ها را با هم ترکیب کنیم تا رفتارهای پیچیده‌تری ایجاد کنیم.
class Engine:
def start(self):
print("Engine started")

class Car:
def __init__(self):
self.engine = Engine()

def drive(self):
self.engine.start()
print("Car is moving")

car = Car()
car.drive()

6. متدها و ویژگی‌های کلاس (Class Methods and Properties)
متدها و ویژگی‌های کلاس به ما اجازه می‌دهند که متدها و ویژگی‌های مرتبط با کلاس به صورت کلی تعریف کنیم.
class Employee:
raise_amount = 1.05

def __init__(self, name, salary):
self.name = name
self.salary = salary

def apply_raise(self):
self.salary *= self.raise_amount

@classmethod
def set_raise_amount(cls, amount):
cls.raise_amount = amount

emp1 = Employee("John", 50000)
Employee.set_raise_amount(1.10)
emp1.apply_raise()
print(emp1.salary)

7. روش‌های ایستا (Static Methods)
روش‌های ایستا به ما اجازه می‌دهند که متدهایی را تعریف کنیم که نیازی به نمونه‌سازی کلاس ندارند.
class MathOperations:
@staticmethod
def add(a, b):
return a + b

print(MathOperations.add(5, 3))

8. وراثت چندگانه (Multiple Inheritance)
وراثت چندگانه به ما اجازه می‌دهد که یک کلاس از بیش از یک کلاس پایه ارث‌بری کند.
class A:
def method_a(self):
print("Method A")

class B:
def method_b(self):
print("Method B")

class C(A, B):
pass

c = C()
c.method_a()
c.method_b()



[کانال تلگرام ما ]

پارت 1 از آموزش شی‌گرایی

#شی_گرایی #برنامه_نویسی #آموزش #شی_گرایی_پیشرفته #توسعه_دهندگان #پیشرفت
👍2
📚 آموزش شی‌گرایی پیشرفته - پارت 2

سلام دوستان! در این قسمت ادامه مباحث پیشرفته شی‌گرایی را بررسی می‌کنیم. اگر پارت 1 را مطالعه نکردید، پیشنهاد می‌کنم ابتدا به آن مراجعه کنید. 🌟

9. کلاس‌های انتزاعی (Abstract Classes)
کلاس‌های انتزاعی کلاس‌هایی هستند که نمی‌توانند به صورت مستقیم نمونه‌سازی شوند و باید از آن‌ها ارث‌بری کرد.
from abc import ABC, abstractmethod

class Animal(ABC):
@abstractmethod
def sound(self):
pass

class Dog(Animal):
def sound(self):
return "Bark"

dog = Dog()
print(dog.sound())

10. رابط‌ها (Interfaces)
رابط‌ها مجموعه‌ای از متدهای انتزاعی هستند که باید توسط کلاس‌های پیاده‌سازی‌کننده آن‌ها تعریف شوند. در پایتون به صورت رسمی رابط وجود ندارد، اما می‌توان از کلاس‌های انتزاعی استفاده کرد.
from abc import ABC, abstractmethod

class Flyer(ABC):
@abstractmethod
def fly(self):
pass

class Bird(Flyer):
def fly(self):
print("Bird is flying")

bird = Bird()
bird.fly()

11. ویژگی‌های خصوصی و محافظت‌شده (Private and Protected Attributes)
ویژگی‌های خصوصی با دو آندرلاین و ویژگی‌های محافظت‌شده با یک آندرلاین شروع می‌شوند.
class Person:
def __init__(self, name, age):
self._name = name # Protected attribute
self.__age = age # Private attribute

def get_age(self):
return self.__age

person = Person("Alice", 30)
print(person._name) # دسترسی به ویژگی محافظت‌شده
print(person.get_age()) # دسترسی به ویژگی خصوصی از طریق متد

12. ویژگی‌های کلاس (Class Attributes)
ویژگی‌های کلاس ویژگی‌هایی هستند که به جای اشیاء به کلاس تعلق دارند.
class Employee:
company_name = "Tech Corp" # Class attribute

def __init__(self, name, salary):
self.name = name # Instance attribute
self.salary = salary # Instance attribute

emp1 = Employee("Alice", 70000)
emp2 = Employee("Bob", 80000)

print(emp1.company_name)
print(emp2.company_name)
print(Employee.company_name)

13. بارگذاری مجدد متدها (Method Overloading)
بارگذاری مجدد متدها در پایتون به صورت مستقیم پشتیبانی نمی‌شود، اما می‌توان با استفاده از مقادیر پیش‌فرض و *args این کار را انجام داد.
class MathOperations:
def add(self, a, b, c=0):
return a + b + c

math_ops = MathOperations()
print(math_ops.add(5, 3))
print(math_ops.add(5, 3, 2))

14. بارگذاری مجدد عملگرها (Operator Overloading)
بارگذاری مجدد عملگرها به ما اجازه می‌دهد تا رفتار عملگرها را برای اشیاء سفارشی کنیم.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y

def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)

def __repr__(self):
return f"Vector({self.x}, {self.y})"

v1 = Vector(2, 3)
v2 = Vector(4, 5)
v3 = v1 + v2
print(v3)

15. تزریق وابستگی (Dependency Injection)
تزریق وابستگی یک الگوی طراحی است که به ما اجازه می‌دهد وابستگی‌های یک شیء را به جای ایجاد آن‌ها در داخل شیء، از بیرون تزریق کنیم.
class Service:
def do_something(self):
print("Service is doing something")

class Client:
def __init__(self, service):
self.service = service

def perform_action(self):
self.service.do_something()

service = Service()
client = Client(service)
client.perform_action()

امیدوارم این آموزش برای شما مفید باشد! تا آموزش بعدی، موفق و پیروز باشید! 🌟


[اموزش های بیشتر در کانال تلگرام ما]

#شی_گرایی #برنامه_نویسی #آموزش #شی_گرایی_پیشرفته #توسعه_دهندگان #پیشرفت
📝 تمرین شی‌گرایی پیشرفته

یک سیستم مدیریت دانشگاه شامل کلاس‌های زیر ایجاد کنید:
1. Person: کلاس انتزاعی با نام و سن.
2. Student: ارث‌بری از Person، دارای معدل.
3. Professor: ارث‌بری از Person، دارای رشته تخصصی.
4. Course: دارای نام درس و استاد درس (نمونه‌ای از Professor).
5. University: دارای لیست دانشجویان و دروس، متدهای افزودن دانشجو، افزودن درس، و ثبت‌نام دانشجو در درس.

- کلاس Person متد انتزاعی display_info داشته باشد.
- Student و Professor متد display_info را پیاده‌سازی کنند.
- University متدهای add_student، add_course، و enroll_student را پیاده‌سازی کند و بررسی کند که آیا دانشجو قبلاً در درس ثبت‌نام شده است.

موفق باشید! 🌟

#تمرین #شی_گرایی #برنامه_نویسی #چالش #توسعه_دهندگان
2
📚 ترفندهای جالب و کاربردی با حلقه‌ها در پایتون

سلام دوستان! امروز چند ترفند کاربردی با حلقه‌ها در پایتون را معرفی می‌کنیم که می‌توانند برنامه‌نویسی شما را بهبود بخشند. 🌟

1. حلقه‌های تو در تو (Nested Loops)
برای ایجاد ترکیبات مختلف از دو لیست:
colors = ["red", "green", "blue"]
objects = ["ball", "pen"]
for color in colors:
for obj in objects:
print(color, obj)

2. حلقه با else
اجرای بلاک else بعد از اتمام حلقه (در صورتی که با break متوقف نشده باشد):
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 0:
break
else:
print("No zero found!")

3. حلقه‌های لیست (List Comprehensions)
ایجاد لیست با استفاده از حلقه‌ها در یک خط:
squares = [x**2 for x in range(10)]
print(squares)

4. حلقه معکوس
استفاده از حلقه برای پیمایش معکوس:
for i in reversed(range(5)):
print(i)

5. پیمایش چند لیست همزمان
استفاده از zip برای پیمایش همزمان چند لیست:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(name, age)

6. حلقه‌های تودرتو با List Comprehensions
ایجاد لیست‌های تو در تو:
matrix = [[i*j for j in range(5)] for i in range(5)]
print(matrix)

7. فیلتر کردن با List Comprehensions
ایجاد لیست با فیلتر کردن مقادیر:
evens = [x for x in range(10) if x % 2 == 0]
print(evens)

امیدوارم این ترفندها برای شما مفید باشند! 🌟

(به کانال تلگرام ما بپیوندید)

#پایتون #برنامه_نویسی #آموزش #حلقه‌ها #ترفند
2
📚 روش‌های کاربردی برای کاهش حجم کدها در پایتون

سلام دوستان! امروز چند تکنیک کاربردی برای کاهش حجم کدها در پایتون را معرفی می‌کنیم که می‌توانند کدهای شما را تمیزتر و خواناتر کنند. 🚀

1. استفاده از List Comprehensions
به جای استفاده از حلقه‌ها برای ایجاد لیست‌ها:
squares = [x**2 for x in range(10)]

2. استفاده از تابع lambda برای توابع کوچک
به جای تعریف توابع کوچک:
add = lambda x, y: x + y
print(add(5, 3))

3. استفاده از تابع map و filter
برای اعمال توابع روی لیست‌ها:
nums = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, nums))
evens = list(filter(lambda x: x % 2 == 0, nums))

4. استفاده از تابع any و all
برای بررسی شرایط در لیست:
nums = [1, 2, 3, 4, 5]
if any(x > 3 for x in nums):
print("حداقل یک عدد بزرگتر از 3 وجود دارد.")
if all(x > 0 for x in nums):
print("همه اعداد مثبت هستند.")

5. استفاده از متدهای join و split برای دستکاری رشته‌ها
برای ترکیب یا تقسیم رشته‌ها:
words = ["Hello", "world"]
sentence = " ".join(words)
print(sentence)

split_words = sentence.split()
print(split_words)

6. استفاده از شرط‌های کوتاه (Ternary Conditions)
برای نوشتن شرط‌ها در یک خط:
age = 18
status = "adult" if age >= 18 else "minor"
print(status)

7. استفاده از تابع zip برای پیمایش همزمان چند لیست
برای پیمایش همزمان:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")

8. استفاده از مدیریت محتوا با with
برای باز کردن و بستن خودکار فایل‌ها:
with open('file.txt', 'r') as file:
content = file.read()

9. استفاده از تابع enumerate برای پیمایش با اندیس
برای دسترسی به اندیس و مقدار همزمان:
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

10. استفاده از کتابخانه‌های استاندارد
برای انجام کارهای معمول از کتابخانه‌های استاندارد استفاده کنید:
import os

files = os.listdir('.')
print(files)

امیدوارم این روش‌ها برای شما مفید باشند! 🌟

(https://t.iss.one/hamidpython123)

#پایتون #برنامه_نویسی #ترفند #کاهش_حجم_کد #توسعه_دهندگان
👍3
🌟 معرفی htmlpy12 - ابزار پیشرفته‌ی طراحی وب! 🌟

سلام دوستان عزیز! 👋 با افتخار نسخه جدید و پیشرفته htmlpy12 را به شما معرفی می‌کنیم! این نسخه از11 htmlpy با ویژگی‌های بیشتر و قابلیت‌های به‌روزتر آماده شده است تا به شما در ساخت صفحات وب بی‌نظیر کمک کند. 🚀

htmlpy12 چیست؟
htmlpy12 یک ابزار قدرتمند برای تولید و مدیریت کد HTML، CSS و JavaScript است که به صورت دینامیک و قابل توسعه طراحی شده است. این نسخه با بهبودهای فراوان نسبت به نسخه‌های قبلی، امکانات جدیدی را ارائه می‌دهد که برای توسعه وب‌سایت‌های پیچیده و نیازمند به انعطاف بیشتر، بسیار مفید است.

🌟 ویژگی‌های htmlpy12 در مقایسه با htmlpy11fa:
1. انعطاف بیشتر در اضافه کردن عناصر دینامیک: htmlpy12 از امکانات بهبود یافته‌ای برای اضافه کردن تگ‌های HTML و عناصر دیگر به صفحات وب به صورت دینامیک برخوردار است.

2. مدیریت پیشرفته استایل‌ها و اسکریپت‌ها: با htmlpy12، می‌توانید به راحتی استایل‌های CSS و اسکریپت‌های JavaScript را به صفحات خود اضافه کرده و آن‌ها را به صورت فایل‌های مستقل ذخیره کنید.

3. پشتیبانی از کامپوننت‌ها و پلاگین‌ها: htmlpy12 به شما امکان می‌دهد که کامپوننت‌های قابل استفاده مجدد و پلاگین‌ها را به صفحات خود اضافه کنید و از آن‌ها در پروژه‌های مختلف استفاده کنید.

4. امکان استفاده از اسکریپت‌ها و استایل‌های سفارشی: htmlpy12 قابلیت افزودن اسکریپت‌ها و استایل‌های سفارشی را برای شما فراهم می‌آورد تا بتوانید صفحات تعاملی و جذاب‌تری بسازید.

5. نوشتن و ذخیره‌سازی فایل‌های CSS و JavaScript: با htmlpy12، می‌توانید به صورت خودکار فایل‌های CSS و JavaScript خود را نوشته و ذخیره کنید، که این امر به بهبود سازماندهی و توسعه پروژه‌های وب کمک می‌کند.

6. قابلیت تولید کد HTML نهایی: htmlpy12 از قالب‌های پیش‌فرض برای تولید کد HTML نهایی استفاده می‌کند که شامل امکاناتی برای نمایش عناصر دینامیک و کامپوننت‌های ویژه است.

htmlpy12 با تمامی امکانات خود، به شما کمک می‌کند تا به راحتی و با کیفیت، صفحات وب پویا و مدرن را ایجاد کنید. برای اطلاعات بیشتر و نمونه‌های دیگر، به مستندات مراجعه کنید.

🔔 همین حالا htmlpy12 را امتحان کنید و از توانایی‌هایش برای ساخت وب‌سایت‌های خود لذت ببرید!

#htmlpy12 #طراحی_وب #وب_سایت #برنامه_نویسی #کامپوننت #جاوا_اسکریپت #CSS #پلاگین #توسعه_وب #ابزار_وب
👍1
قابلیت‌های ماژول htmlpy12

1. ایجاد نمونه از کلاس HTMLpy12

from htmlpy12 import HTMLpy12

html_builder = HTMLpy12(title="صفحه اصلی")

2. اضافه کردن عناصر HTML

html_builder.add_element("h1", "سلام به htmlpy12! 🌟")
html_builder.add_element("p", "این یک ماژول قدرتمند برای ساخت وب است. 🚀")

3. اضافه کردن استایل‌های CSS به عناصر HTML

html_builder.add_style("h1", color="blue", font_size="24px")
html_builder.add_style("p", font_family="Arial, sans-serif")

4. اضافه کردن استایل‌های CSS سفارشی

custom_css = """
body {
background-color: #f0f0f0;
}
"""
html_builder.add_custom_style(custom_css)

5. اضافه کردن اسکریپت‌های JavaScript

html_builder.add_script('alert("سلام از htmlpy12!");')
html_builder.add_script('console.log("این یک پیام است");')

6. اضافه کردن اسکریپت‌های JavaScript سفارشی

custom_js = """
function greet() {
alert('سلام از htmlpy12!');
}
"""
html_builder.add_custom_script(custom_js)

7. نوشتن فایل‌های CSS و JS

html_builder.write_css_file('style.css')
html_builder.write_js_file('script.js')

8. اضافه کردن پلاگین‌ها

html_builder.add_plugin('<link rel="stylesheet" href="plugin.css">')
html_builder.add_plugin('<script src="plugin.js"></script>')

9. اضافه کردن کامپوننت‌ها

html_builder.add_component('navbar', '<nav>...</nav>', 'nav { ... }', 'function navbarScript() { ... }')

10. تولید کد HTML نهایی

html_code = html_builder.generate_html(css_file='style.css', js_file='script.js')

11. ذخیره کردن کد HTML نهایی در یک فایل

html_builder.save_html("index.html")

خلاصه

این ماژول به شما امکان می‌دهد تا به سادگی صفحات وب حرفه‌ای با استفاده از HTML، CSS و JavaScript بسازید و قابلیت‌های اضافی مانند استفاده از پلاگین‌ها و کامپوننت‌ها را نیز داراست. این امکانات باعث می‌شود که بتوانید به راحتی صفحات وب خود را سفارشی‌سازی کرده و نیازهای خاص خود را پاسخ دهید.
Python3 pinned a file
Python3
htmlpy12.py
❗️برای استفاده از این ماژول یک فایل در دایرکتوری که فایل htmlpy12 داخلش هست میسازید و ذخیره میکنید و هر فایل که بسازید داخل همون دایرکتوری ذخیره می‌شود ✅️

🔴نمونه استفاده از این ماژول 👇

from htmlpy12 import HTMLpy12

HTMLpy12
page = HTMLpy12(title="Example Page")


page.add_element("h1", "Welcome to My Website", style="color: blue;")
page.add_element("p", "This is a demo page created using HTMLpy12.")


page.add_style("h1", font_size="24px", text_align="center")
page.add_style("p", font_family="Arial", padding="10px")


page.add_script('console.log("Hello from JavaScript!");')


page.add_plugin('<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">')


page.add_component("header", html='<header><h2>Header Component</h2></header>', css='header { background-color: #f2f2f2; padding: 10px; }')

JS
page.write_css_file("style.css")
page.write_js_file("script.js")


html_content = page.generate_html(css_file="style.css", js_file="script.js")
print(html_content)


page.save_html("index.html")

❗️با اجرای این کد یک فایل html به نام index.html در دایرکتور خود پروژه ذخیره میشه ✅️