Python
5 subscribers
14 photos
10 videos
94 links
ف
Download Telegram
Forwarded from Python3
❓️چگونه می‌توانم در پایتون به کاربران اجازه دهم که تا زمانی که ورودی صحیحی وارد نکرده‌اند، به طور مداوم تلاش کنند؟❓️

اینطوری ❗️👇:

برای این کار می‌توانید از حلقه while به همراه دستور continue استفاده کنید. این روش به شما امکان می‌دهد تا وقتی که کاربر ورودی معتبر وارد نکرده است، حلقه را مجدداً شروع کنید. به عنوان مثال، فرض کنید می‌خواهیم کاربر یک عدد صحیح مثبت وارد کند:

while True:
user_input = input("لطفا یک عدد صحیح مثبت وارد کنید: ")

if not user_input.isdigit() or int(user_input) <= 0:
print("ورودی نامعتبر است. لطفا دوباره تلاش کنید.")
continue

print(f"شما عدد {user_input} را وارد کرده‌اید.")
break

در این مثال:
1. از کاربر خواسته می‌شود تا یک عدد صحیح مثبت وارد کند.
2. اگر ورودی کاربر معتبر نباشد (یعنی یا یک عدد نباشد یا یک عدد صحیح مثبت نباشد)، پیام خطا نمایش داده می‌شود و حلقه مجدداً شروع می‌شود.
3. اگر ورودی معتبر باشد، پیام تایید نمایش داده می‌شود و حلقه پایان می‌یابد.

مثال : تأیید سن کاربر

در این مثال، از کاربر خواسته می‌شود تا سن خود را وارد کند. تا زمانی که ورودی معتبر نباشد، حلقه ادامه می‌یابد و از کاربر خواسته می‌شود مجدداً تلاش کند.

while True:
age = input("لطفا سن خود را وارد کنید: ")

if not age.isdigit() or int(age) <= 0:
print("ورودی نامعتبر است. لطفا دوباره تلاش کنید.")
continue

print(f"سن شما {age} سال است.")
break

در این مثال:
1. از کاربر خواسته می‌شود تا سن خود را وارد کند.
2. اگر ورودی معتبر نباشد (یعنی عدد نباشد یا عدد صحیح مثبت نباشد)، پیام خطا نمایش داده می‌شود و حلقه مجدداً شروع می‌شود.
3. اگر ورودی معتبر باشد، پیام تایید نمایش داده می‌شود و حلقه پایان می‌یابد.

این روش به شما کمک می‌کند تا ورودی‌های کاربران را بررسی کنید و مطمئن شوید که ورودی‌ها معتبر هستند. این کار برای جلوگیری از خطاها و بهبود تجربه کاربری بسیار مفید است. 💡

[Chanel in me]

#پایتون #برنامه‌نویسی #ترفند #ورودی #تایید_ورودی
Forwarded from Python3
آموزش الگوریتم معکوس‌سازی یک رشته به صورت درجا در پایتون 🔄

این الگوریتم به شما امکان می‌دهد یک رشته را به صورت درجا (بدون استفاده از فضای اضافی) در پایتون معکوس کنید.

مراحل الگوریتم:

1. تبدیل رشته به لیست: ابتدا رشته را به یک لیست از کاراکترها تبدیل می‌کنیم تا بتوانیم به طور مستقیم روی عناصر آن عملیات جابجایی انجام دهیم.

2. استفاده از دو اندیس (شروع و انتها): از دو اندیس به نام‌های start و end استفاده می‌کنیم که ابتدا به ابتدای و انتهای لیست اشاره می‌کنند.

3. جابجایی عناصر: با استفاده از یک حلقه while، عناصر لیست را به صورت درجا معکوس می‌کنیم. در هر مرحله، عنصر ابتدایی با عنصر انتهایی جابجا می‌شوند و اندیس‌ها به سمت مرکز حرکت می‌کنند.

4. تبدیل لیست به رشته: در نهایت، لیست کاراکترها را دوباره به یک رشته تبدیل می‌کنیم و رشته معکوس‌شده را به عنوان خروجی برمی‌گردانیم.

کد در پایتون:

def reverse_string_in_place(s):
"""
تابعی برای معکوس‌سازی یک رشته به صورت درجا در پایتون.

ورودی:
s (str): رشته اصلی که می‌خواهیم معکوس کنیم.

خروجی:
str: رشته معکوس‌شده.
"""
# تبدیل رشته به لیست
str_list = list(s)

# اندیس‌های ابتدا و انتها
start = 0
end = len(str_list) - 1

# جابجایی عناصر لیست
while start < end:
# جابجایی عناصر
str_list[start], str_list[end] = str_list[end], str_list[start]

# حرکت به سمت داخل
start += 1
end -= 1

# تبدیل لیست به رشته
reversed_string = ''.join(str_list)
return reversed_string

# نمونه استفاده:
original_string = "Hello, World!"
reversed_string = reverse_string_in_place(original_string)
print(f"رشته اصلی: {original_string}")
print(f"رشته معکوس شده: {reversed_string}")

توضیحات:

- تابع reverse_string_in_place: این تابع یک رشته را به صورت درجا معکوس می‌کند و رشته معکوس‌شده را به عنوان خروجی باز می‌گرداند.
- تبدیل رشته به لیست: با استفاده از list(s)، رشته را به یک لیست از کاراکترها تبدیل می‌کنیم.
- حلقه while: در این حلقه، اندیس‌های start و end به سمت همدیگر حرکت می‌کنند و عناصر را جابجا می‌کنند تا رشته را معکوس کنند.
- تبدیل لیست به رشته: با استفاده از ''.join(str_list)، لیست کاراکترها را به یک رشته تبدیل می‌کنیم.

این الگوریتم از کارایی خوبی برخوردار است و به شما امکان می‌دهد تا رشته‌ها را به صورت درجا و بدون استفاده از فضای اضافی معکوس کنید.

(اموزشهای بیشتر توی کانال ما)

#پایتون #برنامه‌نویسی #الگوریتم #رشته #معکوس_سازی
👍1
Forwarded from Python3
💡 معرفی زبان‌های برنامه‌نویسی و نشانه‌گذاری برای طراحی و ساخت سایت با پایتون 🐍🌐

🛠️ زبان‌های برنامه‌نویسی و نشانه‌گذاری مورد نیاز:

1. HTML (HyperText Markup Language) 📄
HTML زبان نشانه‌گذاری اصلی برای ساختاردهی محتوای صفحات وب است. با استفاده از HTML می‌توانید عناصر مختلف مانند پاراگراف‌ها، تصاویر، پیوندها و فرم‌ها را در صفحات وب خود ایجاد کنید.

2. CSS (Cascading Style Sheets) 🎨
CSS زبان نشانه‌گذاری برای طراحی و استایل‌دهی به صفحات وب است. با استفاده از CSS می‌توانید ظاهر و چیدمان عناصر HTML را کنترل کنید.

3. JavaScript 💻
JavaScript زبان برنامه‌نویسی برای افزودن تعامل و پویا‌سازی به صفحات وب است. با استفاده از JavaScript می‌توانید رفتار عناصر HTML را کنترل کنید و عملیات مختلف را انجام دهید.

4. Python 🐍
پایتون یک زبان برنامه‌نویسی پرقدرت و چندمنظوره است که می‌تواند برای ساخت برنامه‌های سمت سرور وب سایت‌ها استفاده شود. فریمورک‌های پایتون مانند Django و Flask برای توسعه وب بسیار محبوب هستند.

5. SQL (Structured Query Language) 🗃️
SQL زبان برنامه‌نویسی برای مدیریت و پرس‌وجو از پایگاه‌های داده است. برای ذخیره و بازیابی داده‌های سایت از SQL استفاده می‌شود.

🌐 استفاده از فریمورک‌های پایتون برای ساخت سایت:

Django 📦
Django یک فریمورک سطح بالا و تمام‌عیار است که توسعه سریع و تمیز وب سایت‌ها را فراهم می‌کند. این فریمورک ابزارهای بسیاری برای مدیریت داده‌ها، کار با فرم‌ها، احراز هویت و غیره فراهم می‌کند.

Flask 🛠️
Flask یک فریمورک سبک و انعطاف‌پذیر برای توسعه وب است که برای پروژه‌های کوچک و متوسط مناسب است. Flask به شما اجازه می‌دهد تا به سادگی و با آزادی عمل بیشتری به طراحی و توسعه وب سایت بپردازید.

امیدوارم این معرفی برای شما مفید باشد! 😊

[لینک کانالمون]

#برنامه‌نویسی #طراحی_سایت #پایتون #HTML #CSS #JavaScript #Django #Flask #SQL
Forwarded from Python3
📚 آموزش الگوریتم دایکسترا برای یافتن کوتاه‌ترین مسیر در گراف‌ها 🚀

سلام دوستان! امروز قصد داریم با الگوریتم دایکسترا، کوتاه‌ترین مسیر را در گراف‌ها پیدا کنیم. این الگوریتم در مسائل مختلفی مانند مسیریابی شبکه، سیستم‌های توصیه‌گر و برنامه‌ریزی بسیار کاربردی است. 🎓📈

مراحل پیاده‌سازی الگوریتم دایکسترا:

1. الگوریتم دایکسترا چیست؟
الگوریتم دایکسترا یک الگوریتم گراف است که برای یافتن کوتاه‌ترین مسیر از یک رأس به تمامی رأس‌های دیگر در گراف وزن‌دار بدون یال‌های منفی استفاده می‌شود.

2. نصب کتابخانه‌های مورد نیاز:
برای این الگوریتم به کتابخانه‌های heapq و collections نیاز داریم که به صورت پیش‌فرض در پایتون موجود هستند.

3. نوشتن کد:


    import heapq
from collections import defaultdict

def dijkstra(graph, start):
# ایجاد دیکشنری برای نگهداری فاصله‌ها
distances = {node: float('infinity') for node in graph}
distances[start] = 0

# استفاده از اولویت‌بندی heap برای مدیریت اولویت‌ها
priority_queue = [(0, start)]

while priority_queue:
current_distance, current_node = heapq.heappop(priority_queue)

# نادیده گرفتن مسیرهای طولانی‌تر
if current_distance > distances[current_node]:
continue

for neighbor, weight in graph[current_node].items():
distance = current_distance + weight

# مسیر کوتاه‌تر را پیدا کرده‌ایم
if distance < distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(priority_queue, (distance, neighbor))

return distances

# تعریف گراف به عنوان دیکشنری
graph = {
'A': {'B': 1, 'C': 4},
'B': {'A': 1, 'C': 2, 'D': 5},
'C': {'A': 4, 'B': 2, 'D': 1},
'D': {'B': 5, 'C': 1}
}

# اجرای الگوریتم دایکسترا
start_node = 'A'
distances = dijkstra(graph, start_node)
print(f"Distances from {start_node}: {distances}")

توضیحات کد:

- تعریف گراف: گراف به صورت یک دیکشنری از دیکشنری‌ها تعریف شده است که رأس‌ها و وزن یال‌ها را نشان می‌دهد.


    graph = {
'A': {'B': 1, 'C': 4},
'B': {'A': 1, 'C': 2, 'D': 5},
'C': {'A': 4, 'B': 2, 'D': 1},
'D': {'B': 5, 'C': 1}
}

- تعریف تابع دایکسترا: تابع dijkstra گراف و رأس شروع را به عنوان ورودی می‌گیرد و فاصله کوتاه‌ترین مسیرها را به تمامی رأس‌های دیگر برمی‌گرداند.


    def dijkstra(graph, start):
# ایجاد دیکشنری برای نگهداری فاصله‌ها
distances = {node: float('infinity') for node in graph}
distances[start] = 0

# استفاده از اولویت‌بندی heap برای مدیریت اولویت‌ها
priority_queue = [(0, start)]

while priority_queue:
current_distance, current_node = heapq.heappop(priority_queue)

# نادیده گرفتن مسیرهای طولانی‌تر
if current_distance > distances[current_node]:
continue

for neighbor, weight in graph[current_node].items():
distance = current_distance + weight

# مسیر کوتاه‌تر را پیدا کرده‌ایم
if distance < distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(priority_queue, (distance, neighbor))

return distances

نکات:

- پیچیدگی زمانی: الگوریتم دایکسترا با استفاده از heapq دارای پیچیدگی زمانی O((V + E) log V) است که V تعداد رأس‌ها و E تعداد یال‌هاست.
- مدیریت اولویت‌ها: استفاده از heapq برای مدیریت اولویت‌ها و بهینه‌سازی زمان اجرای الگوریتم.
- اجتناب از یال‌های منفی: الگوریتم دایکسترا فقط در گراف‌های بدون یال‌های منفی به درستی کار می‌کند. برای گراف‌هایی با یال‌های منفی از الگوریتم بلمن-فورد استفاده کنید.
- توسعه‌پذیری: این الگوریتم می‌تواند به سادگی برای گراف‌های بزرگ‌تر و پیچیده‌تر توسعه یابد.

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

#پایتون #آموزش_پایتون #الگوریتم #گراف #دایکسترا #توسعه_نرم_افزار #برنامه_نویسی_پیشرفته
Forwarded from Python3
📚 آموزش پخش صدا با استفاده از کتابخانه داخلی winsound در پایتون (پارت 1/2) 🎵

سلام دوستان ! امروز قصد داریم با استفاده از کتابخانه داخلی winsound در پایتون، صدا را در برنامه‌های خود پخش کنیم. این کتابخانه فقط بر روی سیستم‌عامل ویندوز کار می‌کند و برای کاربردهای ساده بسیار مناسب است. 🎓🔊

معرفی winsound:
کتابخانه winsound یکی از کتابخانه‌های داخلی پایتون است که برای پخش صدا در سیستم‌عامل ویندوز استفاده می‌شود. این کتابخانه امکاناتی مانند پخش فایل‌های WAV، تولید بوق سیستم با فرکانس و مدت زمان مشخص و پخش صداهای از پیش تعریف شده سیستم را فراهم می‌کند.

نصب winsound:
نیازی به نصب جداگانه winsound نیست؛ این کتابخانه به صورت پیش‌فرض در پایتون وجود دارد و فقط کافی است آن را وارد کنید.

پخش صدای WAV:
با استفاده از تابع winsound.PlaySound می‌توانید فایل‌های WAV را پخش کنید. این تابع دو آرگومان می‌گیرد:
1. مسیر فایل WAV
2. پارامترهای کنترلی پخش صدا (مثلاً پخش به صورت غیرهمزمان)

نوشتن کد:

import winsound

# پخش صدای WAV
def play_wav_sound(file_path):
"""
پخش یک فایل WAV با استفاده از winsound

پارامترها:
file_path (str): مسیر فایل WAV
"""
try:
winsound.PlaySound(file_path, winsound.SND_FILENAME)
print(f"پخش فایل {file_path} با موفقیت انجام شد.")
except RuntimeError as e:
print(f"خطا در پخش فایل {file_path}: {e}")

# مسیر فایل WAV
wav_file_path = 'example.wav'

# پخش صدای WAV
play_wav_sound(wav_file_path)

توضیحات کد:

- تابع play_wav_sound:
- این تابع یک فایل WAV را پخش می‌کند.
- از winsound.PlaySound برای پخش فایل استفاده می‌شود.
- winsound.SND_FILENAME نشان‌دهنده این است که آرگومان اول، مسیر فایل صوتی است.


    def play_wav_sound(file_path):
"""
پخش یک فایل WAV با استفاده از winsound

پارامترها:
file_path (str): مسیر فایل WAV
"""
try:
winsound.PlaySound(file_path, winsound.SND_FILENAME)
print(f"پخش فایل {file_path} با موفقیت انجام شد.")
except RuntimeError as e:
print(f"خطا در پخش فایل {file_path}: {e}")

مثال‌های بعدی:

- مثال 1: پخش صدای خوشامدگویی

    play_wav_sound('welcome.wav')

- مثال 2: پخش صدای هشدار

    play_wav_sound('alert.wav')

نکات :

- فایل‌های WAV: اطمینان حاصل کنید که فایل‌های WAV با فرمت استاندارد و قابل پشتیبانی توسط winsound باشند.
- مدیریت خطا: همیشه از مدیریت خطا استفاده کنید تا مشکلات احتمالی را به درستی مدیریت کنید.

ادامه دارد...

[برای ادامه اموزش اینجا عضو شوید]

#پایتون #آموزش_پایتون #پخش_صدا #winsound #توسعه_نرم_افزار #برنامه_نویسی_پیشرفته
📚 آموزش پخش صدا با استفاده از کتابخانه داخلی winsound در پایتون (پارت 1/2) 🎵

سلام دوستان ! امروز قصد داریم با استفاده از کتابخانه داخلی winsound در پایتون، صدا را در برنامه‌های خود پخش کنیم. این کتابخانه فقط بر روی سیستم‌عامل ویندوز کار می‌کند و برای کاربردهای ساده بسیار مناسب است. 🎓🔊

معرفی winsound:
کتابخانه winsound یکی از کتابخانه‌های داخلی پایتون است که برای پخش صدا در سیستم‌عامل ویندوز استفاده می‌شود. این کتابخانه امکاناتی مانند پخش فایل‌های WAV، تولید بوق سیستم با فرکانس و مدت زمان مشخص و پخش صداهای از پیش تعریف شده سیستم را فراهم می‌کند.

نصب winsound:
نیازی به نصب جداگانه winsound نیست؛ این کتابخانه به صورت پیش‌فرض در پایتون وجود دارد و فقط کافی است آن را وارد کنید.

پخش صدای WAV:
با استفاده از تابع winsound.PlaySound می‌توانید فایل‌های WAV را پخش کنید. این تابع دو آرگومان می‌گیرد:
1. مسیر فایل WAV
2. پارامترهای کنترلی پخش صدا (مثلاً پخش به صورت غیرهمزمان)

نوشتن کد:

import winsound

# پخش صدای WAV
def play_wav_sound(file_path):
"""
پخش یک فایل WAV با استفاده از winsound

پارامترها:
file_path (str): مسیر فایل WAV
"""
try:
winsound.PlaySound(file_path, winsound.SND_FILENAME)
print(f"پخش فایل {file_path} با موفقیت انجام شد.")
except RuntimeError as e:
print(f"خطا در پخش فایل {file_path}: {e}")

# مسیر فایل WAV
wav_file_path = 'example.wav'

# پخش صدای WAV
play_wav_sound(wav_file_path)

توضیحات کد:

- تابع play_wav_sound:
- این تابع یک فایل WAV را پخش می‌کند.
- از winsound.PlaySound برای پخش فایل استفاده می‌شود.
- winsound.SND_FILENAME نشان‌دهنده این است که آرگومان اول، مسیر فایل صوتی است.


    def play_wav_sound(file_path):
"""
پخش یک فایل WAV با استفاده از winsound

پارامترها:
file_path (str): مسیر فایل WAV
"""
try:
winsound.PlaySound(file_path, winsound.SND_FILENAME)
print(f"پخش فایل {file_path} با موفقیت انجام شد.")
except RuntimeError as e:
print(f"خطا در پخش فایل {file_path}: {e}")

مثال‌های بعدی:

- مثال 1: پخش صدای خوشامدگویی

    play_wav_sound('welcome.wav')

- مثال 2: پخش صدای هشدار

    play_wav_sound('alert.wav')

نکات :

- فایل‌های WAV: اطمینان حاصل کنید که فایل‌های WAV با فرمت استاندارد و قابل پشتیبانی توسط winsound باشند.
- مدیریت خطا: همیشه از مدیریت خطا استفاده کنید تا مشکلات احتمالی را به درستی مدیریت کنید.

ادامه دارد...

[برای ادامه اموزش اینجا عضو شوید]

#پایتون #آموزش_پایتون #پخش_صدا #winsound #توسعه_نرم_افزار #برنامه_نویسی_پیشرفته
📚 آموزش پخش صدا با استفاده از کتابخانه داخلی winsound در پایتون (پارت 2/2) 🎵

سلام دوستان ! در قسمت قبلی آموزش، با نحوه پخش فایل‌های WAV آشنا شدیم. حالا در قسمت دوم، به بررسی نحوه ایجاد بوق سیستم با استفاده از کتابخانه winsound و نکات حرفه‌ای بیشتری خواهیم پرداخت. 🎓🔊

ایجاد بوق سیستم:
با استفاده از تابع winsound.Beep می‌توانید یک بوق با فرکانس و مدت زمان مشخص ایجاد کنید. این تابع دو آرگومان می‌گیرد:
1. فرکانس بوق (به هرتز)
2. مدت زمان بوق (به میلی‌ثانیه)

نوشتن کد:

import winsound

# ایجاد بوق سیستم
def beep_sound(frequency, duration):
"""
ایجاد بوق سیستم با فرکانس و مدت زمان مشخص

پارامترها:
frequency (int): فرکانس بوق به هرتز (Hz)
duration (int): مدت زمان بوق به میلی‌ثانیه (ms)
"""
try:
winsound.Beep(frequency, duration)
print(f"بوق با فرکانس {frequency} هرتز و مدت زمان {duration} میلی‌ثانیه ایجاد شد.")
except RuntimeError as e:
print(f"خطا در ایجاد بوق: {e}")

# فرکانس و مدت زمان بوق
beep_frequency = 1000 # فرکانس به هرتز
beep_duration = 1000 # مدت زمان به میلی‌ثانیه

# ایجاد بوق سیستم
beep_sound(beep_frequency, beep_duration)

توضیحات کد:

- تابع beep_sound:
- این تابع یک بوق با فرکانس و مدت زمان مشخص ایجاد می‌کند.
- از winsound.Beep برای ایجاد بوق استفاده می‌شود.
- frequency فرکانس بوق به هرتز و duration مدت زمان بوق به میلی‌ثانیه است.


    def beep_sound(frequency, duration):
"""
ایجاد بوق سیستم با فرکانس و مدت زمان مشخص

پارامترها:
frequency (int): فرکانس بوق به هرتز (Hz)
duration (int): مدت زمان بوق به میلی‌ثانیه (ms)
"""
try:
winsound.Beep(frequency, duration)
print(f"بوق با فرکانس {frequency} هرتز و مدت زمان {duration} میلی‌ثانیه ایجاد شد.")
except RuntimeError as e:
print(f"خطا در ایجاد بوق: {e}")

مثال‌های بهتر:

- مثال 1: ایجاد بوق هشدار با فرکانس بالا

    beep_sound(2000, 500)  # بوق با فرکانس 2000 هرتز و مدت زمان 500 میلی‌ثانیه

- مثال 2: ایجاد بوق با فرکانس پایین و مدت زمان طولانی

    beep_sound(500, 2000)  # بوق با فرکانس 500 هرتز و مدت زمان 2000 میلی‌ثانیه

نکات

- فرکانس‌های معتبر: فرکانس بوق باید بین 37 تا 32767 هرتز باشد.
- مدت زمان بوق: مدت زمان بوق به میلی‌ثانیه تنظیم می‌شود و می‌تواند هر مقدار مثبتی باشد.
- مدیریت خطا: همیشه از مدیریت خطا استفاده کنید تا مشکلات احتمالی را به درستی مدیریت کنید.

جمع‌بندی:

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

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

#پایتون #آموزش_پایتون #پخش_صدا #winsound #توسعه_نرم_افزار #برنامه_نویسی_پیشرفته

ا
Forwarded from Deleted Account
سلام PythonProTalk
لینک زیر مجموعه گیری شما
https://t.iss.one/Number_Yo_BoT?start=inv_6640647993
Audio
Proudly powered by @SourceDoniTM with OpenAI ©️
Forwarded from Python3
📚 آموزش جامع کتابخانه Spacy در پایتون 🐍

سلام دوستان! امروز می‌خواهیم درباره‌ی یکی از کتابخانه‌های قدرتمند پردازش زبان طبیعی (NLP) در پایتون به نام Spacy صحبت کنیم. این کتابخانه ابزارهای متعددی برای کار با متن و تجزیه و تحلیل زبان طبیعی فراهم می‌کند. بیایید با هم یاد بگیریم! 🚀

1. نصب Spacy 📦

ابتدا باید کتابخانه Spacy را نصب کنیم. برای این کار از دستور زیر استفاده کنید:

pip install spacy

2. دانلود مدل زبانی 🗣️

Spacy برای پردازش زبان نیاز به مدل‌های زبانی دارد. برای مثال، برای زبان انگلیسی از مدل زیر استفاده می‌کنیم:

python -m spacy download en_core_web_sm

3. شروع کار با Spacy 🌟

پس از نصب Spacy و دانلود مدل زبانی، می‌توانیم کار خود را آغاز کنیم. ابتدا کتابخانه را وارد کرده و مدل زبانی را بارگذاری می‌کنیم:

import spacy

# بارگذاری مدل زبانی انگلیسی
nlp = spacy.load("en_core_web_sm")

4. پردازش متن 📝

حالا می‌توانیم متنی را با استفاده از مدل زبانی پردازش کنیم:

text = "Apple is looking at buying U.K. startup for $1 billion"
doc = nlp(text)

📌 توضیح:
- text متنی است که می‌خواهیم پردازش کنیم.
- doc شیء‌ای است که متن پردازش شده را در بر می‌گیرد.

5. استخراج اطلاعات 📊

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

5.1. استخراج کلمات و برچسب‌های دستوری

for token in doc:
print(token.text, token.pos_, token.dep_)

📌 توضیح:
- token.text کلمه را نمایش می‌دهد.
- token.pos_ برچسب دستوری کلمه را نمایش می‌دهد.
- token.dep_ وابستگی نحوی کلمه را نمایش می‌دهد.

5.2. استخراج موجودیت‌های نام‌دار

for ent in doc.ents:
print(ent.text, ent.label_)

📌 توضیح:
- ent.text موجودیت نام‌دار را نمایش می‌دهد.
- ent.label_ نوع موجودیت را نمایش می‌دهد.

6. توکنیزه کردن متن 🍰

توکنیزه کردن یعنی شکستن متن به واحدهای کوچکتر (کلمات و جملات). Spacy این کار را به سادگی انجام می‌دهد:

for token in doc:
print(token.text)

📌 توضیح:
- این کد هر کلمه (توکن) در متن را نمایش می‌دهد.

7. Lemmatization (ریشه‌یابی) 🌱

ریشه‌یابی یعنی تبدیل کلمات به شکل پایه‌شان. برای مثال، تبدیل running به run:

for token in doc:
print(token.text, token.lemma_)

📌 توضیح:
- token.lemma_ ریشه کلمه را نمایش می‌دهد.

8. تجزیه و تحلیل نحوی 🌐

Spacy می‌تواند ساختار نحوی جملات را تحلیل کند:

for token in doc:
print(token.text, token.head.text, token.dep_)

📌 توضیح:
- token.head.text کلمه ریشه در وابستگی نحوی را نمایش می‌دهد.
- token.dep_ نوع وابستگی نحوی را نمایش می‌دهد.

9. تشخیص موجودیت‌های نام‌دار 📍

موجودیت‌های نام‌دار شامل اسامی افراد، مکان‌ها، سازمان‌ها و ... می‌شوند. Spacy می‌تواند این موجودیت‌ها را شناسایی کند:

for ent in doc.ents:
print(ent.text, ent.label_, ent.start_char, ent.end_char)

📌 توضیح:
- ent.text موجودیت نام‌دار را نمایش می‌دهد.
- ent.label_ نوع موجودیت را نمایش می‌دهد.
- ent.start_char و ent.end_char مکان شروع و پایان موجودیت در متن را نمایش می‌دهند.

10. تفاوت توابع و کلاس‌ها 📚

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


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

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

#پایتون #آموزش #Spacy #پردازش_زبان_طبیعی #NLP #برنامه‌نویسی #توسعه‌دهندگان #مبتدیان
J
Forwarded from Python3
پارت ۴: توسعه API پیشرفته با Flask

سلام دوستان! 👋

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

مدیریت درخواست‌ها و پاسخ‌ها 🌐
برای مدیریت بهتر درخواست‌ها و پاسخ‌ها، می‌توانیم از امکانات پیشرفته Flask استفاده کنیم.

1. مدیریت درخواست‌ها با روش‌های HTTP:

   @app.route('/users/<int:id>', methods=['GET', 'PUT', 'DELETE'])
def manage_user(id):
if request.iss.onethod == 'GET':
user = get_user_by_id(id) # تابع فرضی برای دریافت کاربر
return jsonify(user)
elif request.iss.onethod == 'PUT':
data = request.get_json()
update_user(id, data) # تابع فرضی برای به‌روزرسانی کاربر
return jsonify({'message': 'User updated successfully'})
elif request.iss.onethod == 'DELETE':
delete_user(id) # تابع فرضی برای حذف کاربر
return jsonify({'message': 'User deleted successfully'})

کار با JSON و ارسال داده‌ها 📊
استفاده از JSON برای ارسال و دریافت داده‌ها در APIها بسیار رایج است.

2. مثال ارسال داده‌ها در قالب JSON:

   @app.route('/add_user', methods=['POST'])
def add_user():
data = request.get_json()
new_user = {"name": data['name'], "age": data['age']}
add_user_to_db(new_user) # تابع فرضی برای اضافه کردن کاربر به دیتابیس
return jsonify(new_user), 201

پیاده‌سازی احراز هویت و مجوزها 🔐
احراز هویت (Authentication) و مجوزها (Authorization) از مهم‌ترین بخش‌های امنیتی در توسعه APIها هستند.

3. احراز هویت ساده با استفاده از توکن:

   from functools import wraps

def token_required(f):
@wraps(f)
def decorated(*args, **kwargs):
token = request.headers.get('x-access-token')
if not token:
return jsonify({'message': 'Token is missing!'}), 403
try:
data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=["HS256"])
current_user = get_user_by_id(data['id']) # تابع فرضی برای دریافت کاربر
except:
return jsonify({'message': 'Token is invalid!'}), 403
return f(current_user, *args, **kwargs)
return decorated

@app.route('/protected', methods=['GET'])
@token_required
def protected_route(current_user):
return jsonify({'message': 'This is only available for authenticated users', 'user': current_user})

تست و دیباگ کردن API 🔧
تست کردن API و اطمینان از عملکرد صحیح آن بسیار مهم است. برای این کار می‌توانید از ابزارهایی مانند Postman یا Insomnia استفاده کنید.

ادامه مسیر 🚀
در پارت بعدی، به مدیریت پایگاه داده با استفاده از SQLAlchemy می‌پردازیم و نحوه تعریف مدل‌های دیتابیس و ایجاد جداول را بررسی می‌کنیم.

🔗 لینک کانال تلگرام

#پایتون #بک_اند #Flask #API #احراز_هویت #برنامه_نویسی
👍1
Forwarded from Python3
سلام دوستان یه بات هست که شماره مجازی رایگان میده فقط نیازه ۵ نفر زیر مجموعه داشته باشید لینکش اینه👇

https://t.iss.one/Number_Yo_BoT?start=inv_6640647993
Forwarded from Python3
🌟 آموزش ترفند خفن با شی‌ءگرایی در پایتون! 🌟

سلام به همه دوستان برنامه‌نویس! امروز می‌خوام یه ترفند خیلی خفن و پیشرفته رو با استفاده از شی‌ءگرایی در پایتون بهتون آموزش بدم. با این ترفند می‌تونید کدهاتون رو حرفه‌ای‌تر و تمیزتر بنویسید. پس بریم سراغ آموزش!

1. تعریف یک کلاس با متدهای جادویی

متدهای جادویی، متدهایی هستن که با دو خط زیر و دو خط بالا محصور شدن. این متدها به پایتون اجازه میدن رفتارهای خاصی برای کلاس‌ها تعریف کنیم. توی این مثال، یه کلاس وکتور (Vector) می‌سازیم که قابلیت جمع، ضرب و محاسبه طول رو داره.

class Vector:
def __init__(self, x, y):
self.x = x
self.y = y

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

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

def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)

def __len__(self):
return int((self.x**2 + self.y**2)**0.5)

# نمونه استفاده
v1 = Vector(3, 4)
v2 = Vector(2, -1)
print(v1 + v2) # Vector(5, 3)
print(v1 * 3) # Vector(9, 12)
print(len(v1)) # 5

amulمع دو وکتور، _am برای ضlen در یک عدد و ضlen در یک عدد و __len__ برای محاسبه طول وکتور تعریف شدن. با این کار، کار با وکتورها خیلی راحت‌تر میش 2. استفاده از دکوراتورها برای افزودن قابلیت‌هاها**

دکوراتورها به ما اجازه میدن که به سادگی قابلیت‌های جدید به توابع و متدها اضافه کنیم. در این مثال، یه دکوراتور به نام trace تعریف می‌کنیم که اجرای توابع رو پیگیری می‌کنه و ورودی و خروجی اون‌ها رو چاپ می‌کنه.

def trace(func):
def wrapper(*args, **kwargs):
print(f"Executing {func.__name__} with arguments {args} and {kwargs}")
result = func(*args, **kwargs)
print(f"{func.__name__} returned {result}")
return result
return wrapper

class Calculator:
@trace
def add(self, a, b):
return a + b

@trace
def multiply(self, a, b):
return a * b

# نمونه استفاده
calc = Calculator()
print(calc.add(3, 5)) # Executing add with arguments (3, 5) and {}
# add returned 8
# 8
print(calc.multiply(4, 7)) # Executing multiply with arguments (4, 7) and {}
# multiply returned 28
# 28

با استفاده از این دکوراتور، هر بار که تابع add یا multiply فراخوانی میشه، ورودی‌ها و خروجی‌های اون‌ها چاپ میشن که می‌تونه توی دیباگ کردن خیلی کمک‌کننده باش

نتیجه‌گیری

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

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

#برنامه‌نویسی #پایتون #آموزش #شیءگرایی #ترفند
Forwarded from Python3
🌟 آموزش یک ویژگی خیلی ناشناخته در پایتون: Slots! 🌟

سلام به همه دوستان برنامه‌نویس! امروز می‌خوام در مورد یک ویژگی کمتر شناخته‌شده و خیلی ناشناخته در پایتون صحبت کنم که کمتر کسی در موردش آموزش داده: slots. این ویژگی به شما امکان می‌ده تا حافظه مصرفی اشیاء کلاس رو بهینه کنید و دسترسی سریع‌تری به صفات داشته باشید. پس بریم سراغ آموزش!

1. آشنایی با slots

در
پایتون، هر شیء یک دیکشنری داخلی (dict) برای نگهداری صفات خودش داره. این دیکشنری باعث انعطاف‌پذیری زیادی می‌شه ولی حافظه زیادی هم مصرف می‌کنه. با استفاده از slots, می‌تونید این دیکشنری رو حذف کنید و حافظه کمتری مصرف کنید.

class MyClass:
__slots__ = ['x', 'y'] # فقط صفات x و y مجاز هستند

def __init__(self, x, y):
self.x = x
self.y = y

# نمونه استفاده
obj = MyClass(1, 2)
print(obj.x, obj.y) # 1 2

try:
obj.z = 3 # AttributeError: 'MyClass' object has no attribute 'z'
except AttributeError as e:
print(e)

2. مزایای استslots_slots__

- صرفه‌جویی درslot
s_slots__ باعث کاهش مصرف حافظه می‌شه چون دیگه نیازی به دیکشنری داخلی نیست.
- سرعت دسترسی بیشتر: دسترسی به صفات با استslots_slots__ سریع‌تره چون از ساختارهای داده بهینه‌تر استفاده می‌کنه.

3. محدوslots_slots__

- عدم انعطاف‌پذیری
: شما فقط می‌تونید صفات تعریفslots_slots__ رو به اشیاء اضافه کنید.
- ناسازگاری با برخی ویژگی‌ها: برخی ویژگی‌های پایتون مثل صفات داینامیک یا استفاده از متا کلاس‌ها مslots_slots__ سازگار نباشند.

4. مثالی عملی

بیایید یک مثال عملی‌تر ببینیم slots_slots__ می‌تونه در یک کلاس واقعی استفاده بشه.

class Person:
__slots__ = ['name', 'age']

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

def __repr__(self):
return f"Person(name={self.name}, age={self.age})"

# نمونه استفاده
p = Person("Alice", 30)
print(p) # Person(name=Alice, age=30)

try:
p.address = "123 Main St" # AttributeError: 'Person' object has no attribute 'address'
except AttributeError as e:
print(e)

نتیجه‌slotsاستفاده از __slots__, می‌تونید مصرف حافظه کلاس‌های پایتون رو بهینه کنید و دسترسی سریع‌تری به صفات داشته باشید. این ویژگی مخصوصاً در برنامه‌هایی که با تعداد زیادی از اشیاء سر و کار دارند، می‌تونه بسیار مفید باشه.

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

#برنامه‌نویسی #پایتون #آموزش
Forwarded from Python3
🔔 اخبار جدید پایتون - ۲۸ ژوئن ۲۰۲۴ 🔔

1. پایان موفقیت‌آمیز PyCon US 2024: کنفرانس سالانه PyCon US 2024 با موفقیت در پیتسبورگ برگزار شد. این رویداد بزرگ شامل سخنرانی‌ها، کارگاه‌ها و فرصت‌های شبکه‌سازی بود که جامعه پایتون را گرد هم آورد. 🏙️🎤

2. معرفی ابزار uv توسط Astral: Astral، سازنده ابزار محبوب Ruff، از uv رونمایی کرده است. uv یک ابزار مدیریت بسته‌ها و پروژه‌ها است که با Rust نوشته شده و سرعت بالایی دارد. 🚀🔧

3. انتشار نسخه جدید REPL در پایتون 3.13: نسخه جدید REPL (Read-Evaluate-Print Loop) در پایتون 3.13 با ویژگی‌هایی همچون پشتیبانی از چندین خط کد و تاریخچه ورودی‌ها معرفی شد. 🎨💻

4. معرفی سخنرانان اصلی EuroPython 2024: EuroPython 2024 در ماه جولای در پراگ برگزار خواهد شد و سخنرانان برجسته‌ای همچون Anna Přistoupilová و Armin Ronacher در این رویداد حضور خواهند داشت. 🌟🎙️

5. تاخیر در اجرای PEP 649 تا پایتون 3.14: اجرای PEP 649 که به ارزیابی تأخیری از توضیحات می‌پردازد، تا نسخه 3.14 پایتون به تأخیر افتاده است. 📜

6. رشد استفاده از پایتون در Snowflake: استفاده از پایتون در پلتفرم Snowflake رشد چشمگیری داشته است و این شرکت قصد دارد ابزارهای جدیدی برای پشتیبانی از پایتون ارائه دهد. ☁️📈

7. تغییرات در قوانین Python Software Foundation: تغییرات جدید در قوانین Python Software Foundation امکان حذف اعضای هر طبقه‌بندی را با رای‌گیری فراهم می‌کند. 🏛️🗳️

برای دریافت اطلاعات بیشتر به وب‌سایت‌های معتبر پایتون مراجعه کنید.

[خبر های بروز پایتون تو کانال ما]


#Python #PyConUS2024 #EuroPython2024 #Python3.13 #uvTool #Snowflake #PSF #PEP649
Forwarded from Python3
🔔 آموزش یکی از ترسناک‌ترین الگوریتم‌ها در پایتون: 🕵️‍♂️🔍

سلام دوستان! می‌خوام درباره یکی از پیچیده‌ترین و ترسناک‌ترین الگوریتم‌ها در پایتون صحبت کنم:

الگوریتم صفحه‌بندی LRU (Least Recently Used).

این الگوریتم به خصوص در مدیریت حافظه و کش‌ها کاربرد داره. ممکنه در ابتدا ترسناک به نظر برسه، اما با فهم دقیق و تمرین، می‌تونید این الگوریتم رو به راحتی پیاده‌سازی کنید. پس بریم سراغ آموزش!

1. الگوریتم LRU چیه؟

الگوریتم LRU برای مدیریت حافظه و کش‌ها استفاده می‌شه. این الگوریتم قدیمی‌ترین آیتم‌های استفاده نشده را از حافظه حذف می‌کند تا جا برای آیتم‌های جدید باز شود.

2. ساختار داده‌های مورد نیاز

برای پیاده‌سازی LRU از یک دیکشنری و یک لیست دوطرفه استفاده می‌کنیم. دیکشنری برای جستجوی سریع و لیست دوطرفه برای نگهداری ترتیب استفاده از آیتم‌ها.

3. پیاده‌سازی LRU Cache

بیایید با هم یک LRU Cache را پیاده‌سازی کنیم:

class DLinkedNode:
def __init__(self, key=0, value=0):
self.key = key
self.value = value
self.prev = None
self.next = None

class LRUCache:
def __init__(self, capacity: int):
self.cache = {}
self.capacity = capacity
self.size = 0
self.head = DLinkedNode()
self.tail = DLinkedNode()
self.head.next = self.tail
self.tail.prev = self.head

def _add_node(self, node):
node.prev = self.head
node.next = self.head.next
self.head.next.prev = node
self.head.next = node

def _remove_node(self, node):
prev = node.prev
new = node.next
prev.next = new
new.prev = prev

def _move_to_head(self, node):
self._remove_node(node)
self._add_node(node)

def _pop_tail(self):
res = self.tail.prev
self._remove_node(res)
return res

def get(self, key: int) -> int:
node = self.cache.get(key, None)
if not node:
return -1
self._move_to_head(node)
return node.value

def put(self, key: int, value: int) -> None:
node = self.cache.get(key)
if not node:
newNode = DLinkedNode(key, value)
self.cache[key] = newNode
self._add_node(newNode)
self.size += 1
if self.size > self.capacity:
tail = self._pop_tail()
del self.cache[tail.key]
self.size -= 1
else:
node.value = value
self._move_to_head(node)

4. نحوه استفاده از LRU Cache

حالا بیایید یک نمونه از استفاده از LRU Cache را ببینیم:

lru_cache = LRUCache(2)

lru_cache.put(1, 1)
lru_cache.put(2, 2)
print(lru_cache.get(1)) # 1
lru_cache.put(3, 3) # حذف کلید 2
print(lru_cache.get(2)) # -1 (کلید 2 حذف شده)
lru_cache.put(4, 4) # حذف کلید 1
print(lru_cache.get(1)) # -1 (کلید 1 حذف شده)
print(lru_cache.get(3)) # 3
print(lru_cache.get(4)) # 4

نتیجه‌گیری

الگوریتم LRU یکی از پیچیده‌ترین و کارآمدترین الگوریتم‌ها برای مدیریت حافظه و کش است. با استفاده از دیکشنری و لیست دوطرفه، می‌توانید این الگوریتم را به راحتی در پایتون پیاده‌سازی کنید.

الگوریتم های بیشتر توی کانال ما

#برنامه‌نویسی #پایتون #آموزش #الگوریتم #LRU
Forwarded from Python3
📚 مقدمه دوره آموزش پایتون از 0 تا 100

سلام دوستان عزیز! 👋

به دوره جامع آموزش پایتون از 0 تا 100 خوش آمدید! 🎉

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

🔍 اهداف دوره:

- آشنایی با پایتون: شروع از مفاهیم پایه و نصب پایتون.
- مبانی برنامه‌نویسی: متغیرها، انواع داده‌ها، عملیات ریاضی و منطقی.
- ساختارهای داده: لیست‌ها، تاپل‌ها، دیکشنری‌ها و مجموعه‌ها.
- حلقه‌ها و توابع: استفاده از حلقه‌ها و تعریف توابع.
- مدیریت فایل‌ها و استثناء‌ها: خواندن و نوشتن فایل‌ها، مدیریت خطاها.
- برنامه‌نویسی شیءگرا: مفاهیم پایه، وراثت و پلی‌مورفیسم.
- ماژول‌ها و کتابخانه‌ها: معرفی ماژول‌ها و کتابخانه‌های استاندارد.
- پروژه‌های عملی: پروژه‌های کاربردی برای تثبیت مطالب.
- مفاهیم پیشرفته: Decorators، Generators و مدیریت حافظه.
- توسعه وب: آشنایی با Flask و Django.
- کار با داده‌ها: معرفی Pandas و NumPy.

📅 برنامه دوره:

1. مبانی پایتون: نصب، متغیرها، انواع داده‌ها، عملیات ریاضی و منطقی.
2. ساختارهای داده: لیست‌ها، تاپل‌ها، دیکشنری‌ها و مجموعه‌ها.
3. حلقه‌ها و توابع: استفاده از حلقه‌ها و تعریف توابع.
4. مدیریت فایل‌ها و استثناء‌ها: خواندن و نوشتن فایل‌ها، مدیریت خطاها.
5. برنامه‌نویسی شیءگرا: مفاهیم پایه، وراثت و پلی‌مورفیسم.
6. ماژول‌ها و کتابخانه‌ها: معرفی ماژول‌ها و کتابخانه‌های استاندارد.
7. پروژه‌های عملی: پروژه‌های کاربردی برای تثبیت مطالب.
8. مفاهیم پیشرفته: Decorators، Generators و مدیریت حافظه.
9. توسعه وب: آشنایی با Flask و Django.
10. کار با داده‌ها: معرفی Pandas و NumPy.

🎯 چه چیزهایی یاد خواهید گرفت؟

- نوشتن کد پایتون: از اولین قدم‌ها تا پروژه‌های پیچیده.
- حل مسائل: استفاده از پایتون برای حل مسائل روزمره.
- توسعه وب: ساخت و توسعه وب‌سایت‌ها با استفاده از Flask و Django.
- تحلیل داده: کار با داده‌ها و انجام تحلیل‌های پیچیده با Pandas و NumPy.

🛠️ ابزارهایی که استفاده خواهیم کرد:

- پایتون: نسخه‌های جدید پایتون.
- ویرایشگرهای متنی: Visual Studio Code، PyCharm.
- کتابخانه‌ها و فریم‌ورک‌ها: Flask، Django، Pandas، NumPy.

آماده‌اید شروع کنیم؟ بیایید با هم دنیای جذاب برنامه‌نویسی پایتون را کشف کنیم! 🚀

(اموزش های بیشتر کانال ما)

#پایتون #آموزش_پایتون #برنامه_نویسی #دوره_آموزشی #Python #Programming #PythonCourse