Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
☝️اینم ساختمان داده که گفتم☝️🏢
سوال:
فرض کنید تابع زیر برای پیدا کردن تعداد مسیرهای ممکن از بالا سمت چپ به پایین سمت راست یک ماتریس
𝑚 × 𝑛 m×n استفاده می‌شود. کدام گزینه به درستی این تابع را تکمیل می‌کند تا کار کند
Anonymous Quiz
38%
A) dp[i-1][j] + dp[i][j-1]
23%
B) dp[i-1][j] * dp[i][j-1]
23%
C) max(dp[i-1][j], dp[i][j-1])
15%
D) min(dp[i-1][j], dp[i][j-1])
🤔2
def unique_paths(m, n):
dp = [[1] * n for _ in range(m)]
for i in range(1, m):
for j in range(1, n):
dp[i][j] = ___
return dp[m-1][n-1]
📢🔍 #آموزش_کامل_استفاده_از_uv برای پایتون 🔍📢

سلام برنامه‌نویسان عزیز! امروز با شما هستیم تا یک ابزار جدید و قدرتمند برای مدیریت پکیج‌های پایتون به نام uv را معرفی کنیم. این ابزار توسط شرکت Astral توسعه داده شده و جایگزین pip و pip-tools شده است. با استفاده از uv، نصب و مدیریت پکیج‌های پایتون سریع‌تر و کارآمدتر می‌شود. 🚀🔧

🎯 نصب و راه‌اندازی uv

1. دانلود و نصب uv:
ابتدا uv را از [صفحه رسمی uv](https://astral.sh/uv) دانلود کنید. برای سیستم‌عامل خود نسخه مناسب را انتخاب کنید.


   curl -L https://astral.sh/uv/install.sh | sh

2. افزودن uv به مسیر (Path):
پس از نصب، مطمئن شوید که uv به مسیر (Path) شما اضافه شده است تا بتوانید از هرجای سیستم آن را اجرا کنید.

🎯 استفاده از uv برای نصب پکیج‌ها

1. نصب یک پکیج:
برای نصب یک پکیج با استفاده از uv، از دستور زیر استفاده کنید:


   uv install <package-name>

مثلا برای نصب numpy:


   uv install numpy

2. نصب از فایل requirements:
اگر لیستی از پکیج‌ها در یک فایل requirements.txt دارید، می‌توانید همه آن‌ها را به راحتی نصب کنید:


   uv install -r requirements.txt

3. نصب پکیج‌های محلی:
برای نصب یک پکیج محلی، به سادگی مسیر آن را مشخص کنید:


   uv install /path/to/package

🎯 مدیریت محیط‌های مجازی با uv

1. ایجاد یک محیط مجازی:
برای ایجاد یک محیط مجازی جدید، از دستور زیر استفاده کنید:


   uv env create

2. فعال کردن محیط مجازی:
برای فعال کردن محیط مجازی ایجاد شده:


   source uv-env/bin/activate

3. غیرفعال کردن محیط مجازی:
برای غیرفعال کردن محیط مجازی:


   deactivate

🎯 قابلیت‌های پیشرفته uv

1. استفاده از کش جهانی:
uv از یک کش جهانی برای سرعت بخشیدن به فرآیند نصب استفاده می‌کند. این کش به صورت خودکار مدیریت می‌شود و نیاز به پیکربندی خاصی ندارد.

2. پشتیبانی از وابستگی‌های Git و URL:
uv می‌تواند پکیج‌ها را مستقیماً از مخازن Git یا URL‌های مشخص شده نصب کند:


   uv install git+https://github.com/user/repo.git

3. پشتیبانی از نصب‌های editable:
برای نصب یک پکیج به صورت editable (در حال توسعه):


   uv install -e .

🎯 آینده uv و Rye

🔄 Astral همچنین در حال توسعه و ادغام uv با پروژه Rye است، که هدف آن تبدیل شدن به یک ابزار جامع برای مدیریت پروژه‌های پایتون مشابه Cargo در زبان Rust می‌باشد. منتظر به‌روزرسانی‌های بیشتری از این پروژه هیجان‌انگیز باشید!

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

برای اطلاعات بیشتر و جزئیات کامل به [صفحه رسمی uv]مراجعه کنید.

#پایتون #مدیریت_پکیج #uv #توسعه_نرم‌افزار #ابزار_برنامه‌نویسی #برنامه‌نویسی_پایتون #آموزش_پایتون
👍3
📢🔍 #مزایای_uv نسبت به pip و سایر ابزارهای مدیریت پکیج 🔍📢

سلام برنامه‌نویسان عزیز! امروز با شما هستیم تا در مورد مزایای استفاده از ابزار جدید uv در مقایسه با pip و سایر ابزارهای مدیریت پکیج در پایتون صحبت کنیم. 🚀🔧

🌟 مزایای uv نسبت به pip

1. سرعت بالا:
uv به طور قابل توجهی سریع‌تر از pip و pip-tools است. این ابزار تا ۱۰ برابر سریع‌تر از pip بدون استفاده از کش و تا ۱۱۵ برابر سریع‌تر با استفاده از کش عمل می‌کند. این افزایش سرعت به دلیل استفاده از زبان Rust برای پیاده‌سازی و بهینه‌سازی‌های پیشرفته در مدیریت وابستگی‌ها است. ⚡️

2. مدیریت کش جهانی:
uv از یک کش جهانی برای ذخیره پکیج‌ها استفاده می‌کند، که باعث کاهش زمان نصب و کاهش پهنای باند مورد نیاز می‌شود. این کش به صورت خودکار مدیریت می‌شود و نیاز به تنظیمات خاصی ندارد. 🌐

3. پشتیبانی از ویژگی‌های پیشرفته:
uv از ویژگی‌های پیشرفته‌ای مانند نصب پکیج‌ها از Git، URL، وابستگی‌های محلی، و نصب‌های editable پشتیبانی می‌کند. این ابزار همچنین قابلیت مدیریت محیط‌های مجازی را به صورت بومی فراهم می‌کند. 🛠

4. سازگاری بالا:
uv به گونه‌ای طراحی شده که با APIهای pip و pip-tools سازگار باشد، بنابراین می‌توان آن را بدون نیاز به تغییرات عمده در پروژه‌های موجود استفاده کرد. همچنین، uv با سیستم‌عامل‌های مختلف از جمله لینوکس، ویندوز و macOS سازگار است. 🖥

5. تک باینری و نصب آسان:
uv به صورت یک باینری مستقل عرضه می‌شود که نصب و استفاده از آن را بسیار آسان می‌کند. این ویژگی باعث می‌شود که uv بسیار کاربرپسند و قابل حمل باشد. 📦

6. پشتیبانی از استراتژی‌های مختلف حل وابستگی:
uv امکان انتخاب استراتژی‌های مختلف حل وابستگی را فراهم می‌کند و می‌تواند وابستگی‌ها را بر اساس نسخه‌های مختلف پایتون مدیریت کند. 🔄

7. مدیریت و یکپارچه‌سازی پروژه‌ها:
uv بخشی از یک چشم‌انداز بزرگ‌تر برای تبدیل شدن به یک ابزار جامع برای مدیریت پروژه‌ها و پکیج‌های پایتون است، مشابه Cargo در زبان Rust. این ویژگی‌ها شامل مدیریت نسخه‌ها، وابستگی‌ها، و ابزارهای ساخت پروژه می‌شود. 🚧

برای اطلاعات بیشتر و جزئیات کامل به [صفحه رسمی uv]مراجعه کنید.

#پایتون #مدیریت_پکیج #uv #توسعه_نرم‌افزار #ابزار_برنامه‌نویسی #برنامه‌نویسی_پایتون #آموزش_پایتون
👍2
آموزش کتابخانه Theano برای پایتون 🐍

📌 Theano یک کتابخانه پایتون برای محاسبات عددی است که به ویژه برای یادگیری ماشین و شبکه‌های عصبی استفاده می‌شود. این کتابخانه توسط تیم تحقیقاتی دانشگاه مونترال توسعه یافته است و اولین بار در سال 2008 معرفی شد. نسخه پایدار نهایی آن 1.0.5 در سپتامبر 2017 منتشر شد.

ویژگی‌های کلیدی Theano 📊

- محاسبات کارآمد: محاسبات عددی با کارایی بالا، به ویژه برای GPU.
- دیفرانسیل‌گیری خودکار: محاسبه خودکار گرادیان‌ها برای بهینه‌سازی مدل‌ها.
- سازگاری با NumPy: استفاده آسان از آرایه‌های NumPy.
- پشتیبانی از توزیع و پردازش موازی: استفاده از توان پردازشی GPU و CPU به صورت همزمان.

## نصب کتابخانه Theano 🚀
ابتدا باید کتابخانه را نصب کنید. برای این کار از دستور زیر استفاده کنید:

pip install theano

ایجاد یک مدل ساده 📈
در این بخش، یک مدل ساده با استفاده از Theano ایجاد می‌کنیم. این مدل دو عدد را با هم جمع می‌کند.

توضیحات کد:
import theano
import theano.tensor as T

# تعریف متغیرها
x = T.dscalar('x')
y = T.dscalar('y')

# تعریف تابع
z = x + y

# کامپایل کردن تابع
f = theano.function([x, y], z)

# استفاده از تابع
result = f(2, 3)
print(result) # خروجی: 5

🔹 تعریف متغیرها: در این قسمت، دو متغیر ورودی x و y با نوع dscalar (عدد اعشاری) تعریف شده‌اند.
🔹 تعریف تابع: تابع z به صورت جمع دو متغیر x و y تعریف شده است.
🔹 کامپایل کردن تابع: تابع f با استفاده از theano.function کامپایل شده است که ورودی‌های x و y را گرفته و z را محاسبه می‌کند.
🔹 استفاده از تابع: با فراخوانی f(2, 3)، تابع جمع دو عدد 2 و 3 را محاسبه و نتیجه 5 را برمی‌گرداند.

پیاده‌سازی یک شبکه عصبی ساده 🧠
در این قسمت، یک شبکه عصبی ساده با Theano ایجاد می‌کنیم.

توضیحات کد:
import numpy as np

# تعریف متغیرهای ورودی و وزن‌ها
X = T.dmatrix('X')
W = theano.shared(np.random.randn(2, 1), name='W')
b = theano.shared(0., name='b')

# تعریف تابع شبکه عصبی
output = T.nnet.sigmoid(T.dot(X, W) + b)

# کامپایل کردن تابع
predict = theano.function([X], output)

# ورودی نمونه
X_sample = np.array([[1, 2], [3, 4], [5, 6]])

# پیش‌بینی
predictions = predict(X_sample)
print(predictions)

🔹 تعریف متغیرهای ورودی و وزن‌ها: متغیر X به صورت ماتریس (dmatrix) تعریف شده است. وزن‌ها W و بایاس b نیز به صورت shared تعریف شده‌اند که به شبکه عصبی اجازه می‌دهد که آنها را در طول آموزش تغییر دهد.
🔹 تعریف تابع شبکه عصبی: تابع output با استفاده از sigmoid از theano.tensor.nnet تعریف شده است که خروجی شبکه عصبی را محاسبه می‌کند.
🔹 کامپایل کردن تابع: تابع predict با استفاده از theano.function کامپایل شده است که ورودی X را گرفته و خروجی شبکه را محاسبه می‌کند.
🔹 ورودی نمونه: یک نمونه ورودی X_sample به صورت آرایه‌ای از NumPy تعریف شده است.
🔹 پیش‌بینی: با فراخوانی predict(X_sample)، پیش‌بینی شبکه عصبی برای ورودی‌های نمونه محاسبه و نتیجه نمایش داده می‌شود.

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

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

#Theano #Python #MachineLearning #DeepLearning #DataScience #آموزش_پایتون #یادگیری_ماشین #شبکه_عصبی
5
جالب بود ریاکشن بزن
👍5
کد مورس امروز همستر:


!!HAMSTER!!

H (....)
A (.-)
M (--)
S (...)
T (-)
E (.)
R (.-.)

ری اکشن بزن زیرش
👍2👎2
🌟 آیا می‌دانستید؟ 🌟

در پایتون، می‌توانید با استفاده از شرط در لیست‌سازی، لیست‌های جالب و پیچیده ایجاد کنید! این ویژگی به شما اجازه می‌دهد تا به راحتی لیست‌هایی بسازید که فقط حاوی عناصری هستند که شرایط خاصی را برآورده می‌کنند. 🎉🐍

مثال:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) # خروجی: [2, 4, 6, 8, 10]

به همین سادگی می‌توانید لیست‌هایی فیلتر شده و جالب ایجاد کنید! 🔍
[https://t.iss.one/hamidpython123]


#Python #Programming
3👍2
📚 آموزش کتابخانه Bottle در پایتون 🚀 - پارت ۱

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

نصب
برای نصب Bottle می‌توانید از pip استفاده کنید:
pip install bottle

راه‌اندازی اولیه
ایجاد یک اپلیکیشن ساده که پیام "Hello World!" را نمایش می‌دهد:
from bottle import Bottle, run  # وارد کردن Bottle و run

app = Bottle() # ایجاد یک نمونه از کلاس Bottle

@app.route('/hello') # تعریف مسیر /hello
def hello():
return "Hello World!" # وقتی مسیر /hello درخواست شود، این پیام برگردانده می‌شود

run(app, host='localhost', port=8080) # راه‌اندازی سرور در localhost با پورت 8080

توضیحات:
این مثال یک اپلیکیشن ساده ایجاد می‌کند که پیام "Hello World!" را هنگام دسترسی به مسیر /hello نمایش می‌دهد.

مسیریابی (Routing)
@app.route('/hello/<name>')  # تعریف مسیر با پارامتر متغیر name
def greet(name):
return f"Hello, {name}!" # برگرداندن پیام شخصی‌سازی شده

توضیحات:
این مثال نشان می‌دهد که چگونه می‌توانید مسیرهایی با پارامترهای متغیر تعریف کنید و از آن‌ها در پاسخ‌ها استفاده کنید.

درخواست‌ها و پاسخ‌ها (Requests and Responses)
from bottle import request, response  # وارد کردن request و response

@app.route('/info') # تعریف مسیر /info
def info():
user_agent = request.headers.get('User-Agent') # دریافت User-Agent از هدر درخواست
response.content_type = 'application/json' # تنظیم نوع محتوای پاسخ به JSON
return {"user_agent": user_agent} # برگرداندن User-Agent به صورت JSON

توضیحات:
این مثال نشان می‌دهد که چگونه می‌توانید به هدرهای درخواست دسترسی داشته باشید و نوع محتوای پاسخ را تنظیم کنید.

فرم‌ها و داده‌ها (Forms and Data)
@app.route('/login', method='POST')  # تعریف مسیر /login با روش POST
def login():
username = request.forms.get('username') # دریافت نام کاربری از فرم
password = request.forms.get('password') # دریافت رمز عبور از فرم
if username == 'admin' and password == 'secret': # بررسی نام کاربری و رمز عبور
return "Welcome, admin!" # در صورت صحت، پیام خوش‌آمدگویی برگردانده می‌شود
return "Invalid credentials!" # در غیر این صورت، پیام خطا برگردانده می‌شود

توضیحات:
این مثال نحوه دریافت داده‌ها از فرم‌های HTML و بررسی آن‌ها را نشان می‌دهد.

ادامه در پارت ۲...

#Bottle #Python #WebDevelopment #Coding #Programming #Technology
👍4🆒1
📚 آموزش کتابخانه Bottle در پایتون 🚀 - پارت ۲

قالب‌ها (Templates)
استفاده از قالب‌ها برای جدا کردن منطق برنامه از نمایش داده‌ها:
from bottle import template  # وارد کردن template

@app.route('/hello/<name>') # تعریف مسیر با پارامتر متغیر name
def greet(name):
return template('<b>Hello {{name}}</b>!', name=name) # استفاده از قالب برای نمایش نام

توضیحات:
این مثال نشان می‌دهد که چگونه می‌توانید از قالب‌ها برای جدا کردن منطق برنامه از نمایش داده‌ها استفاده کنید.

مدیریت خطاها (Error Handling)
مدیریت خطاهای HTTP و نمایش پیام‌های سفارشی:
@app.error(404)  # مدیریت خطای 404
def error404(error):
return 'Nothing here, sorry!' # نمایش پیام سفارشی برای خطای 404

توضیحات:
این مثال نشان می‌دهد که چگونه می‌توانید خطاهای HTTP را مدیریت کرده و پیام‌های سفارشی نمایش دهید.

استاتیک فایل‌ها (Static Files)
سرویس‌دهی به فایل‌های استاتیک مانند تصاویر، CSS، و جاوااسکریپت:
@app.route('/static/<filename>')  # تعریف مسیر برای فایل‌های استاتیک
def server_static(filename):
return static_file(filename, root='/path/to/static/files') # سرویس‌دهی به فایل‌های استاتیک

توضیحات:
این مثال نحوه سرویس‌دهی به فایل‌های استاتیک مانند تصاویر، CSS، و جاوااسکریپت را نشان می‌دهد.

پلاگین‌ها (Plugins)
استفاده از پلاگین‌ها برای افزودن قابلیت‌های اضافی به اپلیکیشن:
from bottle.ext import sqlalchemy  # وارد کردن پلاگین SQLAlchemy
from sqlalchemy import create_engine, Column, Integer, String, Sequence # وارد کردن ابزارهای SQLAlchemy
from sqlalchemy.ext.declarative import declarative_base # وارد کردن declarative_base
from sqlalchemy.orm import sessionmaker # وارد کردن sessionmaker

Base = declarative_base() # ایجاد پایه دیتابیس
engine = create_engine('sqlite:///:memory:', echo=True) # ایجاد موتور دیتابیس SQLite
Session = sessionmaker(bind=engine) # ایجاد سازنده جلسه

class User(Base): # تعریف مدل User
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(String(50))

app.install(sqlalchemy.Plugin(engine, Base.metadata, create=True)) # نصب پلاگین SQLAlchemy

@app.route('/user/<name>') # تعریف مسیر با پارامتر متغیر name
def add_user(db, name):
user = User(name=name) # ایجاد کاربر جدید
db.add(user) # افزودن کاربر به دیتابیس
db.commit() # ذخیره تغییرات در دیتابیس
return f"User {name} added!" # برگرداندن پیام تأیید

توضیحات:
این مثال نحوه استفاده از پلاگین SQLAlchemy برای مدیریت دیتابیس را نشان می‌دهد.

نتیجه‌گیری
کتابخانه Bottle با سادگی و انعطاف‌پذیری بالای خود، انتخاب مناسبی برای توسعه سریع و آسان اپلیکیشن‌های وب کوچک و سرویس‌های RESTful است. 🚀

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

#Bottle #Python #WebDevelopment #Coding #Programming #Technology
👍3
🌟 سایت‌های برگزاری کنفرانس‌های بین‌المللی پایتون 🌟

اگر به دنبال شرکت در کنفرانس‌ها و جلسات بین‌المللی پایتون هستید، این سایت‌ها را از دست ندهید! 🌐🐍

1. PyCon: بزرگترین کنفرانس پایتون در جهان، با برگزاری جلسات متعدد در نقاط مختلف دنیا.
🔗 [PyCon]

2. EuroPython: یکی از بزرگترین کنفرانس‌های پایتون در اروپا، با جامعه‌ای فعال و پرشور.
🔗 [EuroPython]

3. PyData: سری کنفرانس‌هایی که بر استفاده از پایتون در علم داده و تحلیل داده‌ها متمرکز است.
🔗 [PyData]

4. DjangoCon: کنفرانسی مختص چارچوب Django، مناسب برای توسعه‌دهندگان وب.
🔗 [DjangoCon]

5. SciPy Conference: کنفرانسی برای جامعه علمی که از پایتون برای محاسبات علمی استفاده می‌کنند.
🔗 [SciPy Conference]

این کنفرانس‌ها فرصت‌های بی‌نظیری برای یادگیری و شبکه‌سازی فراهم می‌کنند. 🎉

[اینم برا کانال ما]

#Python #Programming #Conferences
2👍1
🌟 ترفند پیشرفته پایتون برای حرفه‌ای‌ها 🌟

آیا می‌دانستید می‌توانید با استفاده از کتابخانه functools و تابع lru_cache سرعت اجرای کدهای خود را به طرز چشم‌گیری افزایش دهید؟ 🚀🐍

lru_cache (Least Recently Used Cache) به شما امکان می‌دهد تا نتایج محاسبات پرهزینه را ذخیره کنید و در فراخوانی‌های بعدی، به جای محاسبه مجدد، از نتایج ذخیره شده استفاده کنید.

مثال:
from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(50))

با این ترفند، تابع fibonacci بسیار سریع‌تر اجرا می‌شود زیرا نتایج محاسبات قبلی را به خاطر می‌سپارد! ⚡️📈

این ترفند می‌تواند در بهینه‌سازی کدهای پیچیده و محاسباتی بسیار موثر باشد. 🎉
[اینم کانال ما]

#Python #Programming #AdvancedTips
👍4
📣حوضه‌های برنامه‌نویسی پر ترفدار ‼️

1. توسعه وب (Web Development) 🌐
- میزان درآمد: توسعه‌دهندگان وب با تجربه می‌توانند درآمد بالایی داشته باشند، به ویژه اگر در فناوری‌های مانند Django و Flask مسلط باشند.
- تقاضا: بازار کار برای توسعه وب همیشه پررونق بوده و همچنان در حال رشد است.

2. علم داده و هوش مصنوعی (Data Science & AI) 📊
- میزان درآمد: داده‌های مرتبط با علم داده و هوش مصنوعی به دلیل تحلیل پیچیده داده‌ها، درآمد بالایی دارند. کارشناسان با تجربه در این زمینه معمولاً حقوق خوبی دریافت می‌کنند.
- تقاضا: تقاضا برای تخصص‌های مانند تحلیل داده‌ها، یادگیری ماشین و شبکه‌های عصبی به شدت افزایش یافته است.

3. توسعه نرم‌افزار (Software Development) 🖥️
- میزان درآمد: برنامه‌نویسان نرم‌افزار با تجربه می‌توانند حقوق بسیار خوبی دریافت کنند، به خصوص در صنایعی مانند توسعه اپلیکیشن‌های موبایل یا نرم‌افزارهای تخصصی.
- تقاضا: با توسعه تکنولوژی و افزایش استفاده از نرم‌افزارها، تقاضا برای برنامه‌نویسان نرم‌افزار همواره بالا بوده است.

4. امنیت اطلاعات (Cybersecurity) 🔒
- میزان درآمد: حوزه امنیت اطلاعات به دلیل اهمیت بالای امنیت در دنیای دیجیتال، درآمد بالایی دارد و بسته به تخصص و تجربه، کارشناسان می‌توانند درآمد قابل توجهی داشته باشند.
- تقاضا: با افزایش تهدیدات امنیتی، تقاضا برای کارشناسان امنیت اطلاعات رو به افزایش است.

5. بلاک‌چین (Blockchain) ⛓️
- میزان درآمد: برنامه‌نویسان و توسعه‌دهندگان بلاک‌چین معمولاً درآمد خوبی دارند، زیرا این فناوری در بسیاری از صنایع مورد استفاده قرار می‌گیرد.
- تقاضا: با گسترش استفاده از بلاک‌چین در مختلف صنایع، تقاضا برای توسعه‌دهندگان بلاک‌چین رو به افزایش است.

6. انتقال و پردازش داده (Big Data) 📈
- میزان درآمد: کارشناسان انتقال و پردازش داده معمولاً به دلیل پیچیدگی و حجم بالای داده‌ها درآمد قابل توجهی دارند.
- تقاضا: با افزایش حجم داده‌ها، تقاضا برای کارشناسان انتقال و پردازش داده همچنان به روند صعودی خود ادامه می‌دهد.

این حوضه‌ها فرصت‌های شغلی بسیار خوبی را فراهم می‌کنند و باعث می‌شوند که پروژه‌های کانال تلگرام شما نیز موفق و پرکشش باشند! 🚀

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


#برنامه_نویسی #شغل_برنامه_نویسی
👍5🍾1
🌟 آموزش ساخت انیمیشن حرکت کاراکتر در Pygame 🌟

سلام دوستان! امروز می‌خواهیم یاد بگیریم که چطور در بازی Pygame یک انیمیشن حرکت ساده برای کاراکترمان بسازیم. 🕹️🎮

ابتدا باید تصاویر هر فریم از انیمیشن را بارگذاری کنیم. فرض می‌کنیم که شما شش تصویر از حرکت کاراکتر خود دارید (مانند تصویر زیر). هر کدام از این تصاویر را به ترتیب با نام‌های frame_1.png تا frame_6.png ذخیره کنید.

۱. بارگذاری تصاویر
ابتدا تصاویر انیمیشن را در Pygame بارگذاری می‌کنیم:

import pygame
import os

# مقداردهی اولیه Pygame
pygame.init()

# تنظیمات صفحه نمایش
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("انیمیشن حرکت")

# بارگذاری تصاویر
frame_1 = pygame.image.load("frame_1.png").convert_alpha()
frame_2 = pygame.image.load("frame_2.png").convert_alpha()
frame_3 = pygame.image.load("frame_3.png").convert_alpha()
frame_4 = pygame.image.load("frame_4.png").convert_alpha()
frame_5 = pygame.image.load("frame_5.png").convert_alpha()
frame_6 = pygame.image.load("frame_6.png").convert_alpha()

# ذخیره تصاویر در یک لیست
frames = [frame_1, frame_2, frame_3, frame_4, frame_5, frame_6]

۲. ایجاد متغیرهای انیمیشن
حالا متغیرهایی برای انیمیشن ایجاد می‌کنیم:

# متغیرهای انیمیشن
current_frame = 0
frame_count = len(frames)
frame_delay = 100 # میلی‌ثانیه
last_update_time = pygame.time.get_ticks()

۳. حلقه اصلی بازی
در نهایت حلقه اصلی بازی را می‌سازیم که فریم‌های انیمیشن را به ترتیب نمایش دهد:

# حلقه اصلی بازی
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

# به‌روزرسانی فریم
current_time = pygame.time.get_ticks()
if current_time - last_update_time > frame_delay:
current_frame = (current_frame + 1) % frame_count
last_update_time = current_time

# پاک کردن صفحه
screen.fill((0, 0, 0))

# نمایش فریم فعلی
screen.blit(frames[current_frame], (100, 100))

# به‌روزرسانی صفحه نمایش
pygame.display.flip()

# محدود کردن نرخ فریم
pygame.time.Clock().tick(30)

# خروج از Pygame
pygame.quit()

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

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

#برنامه‌نویسی #بازی‌سازی #Pygame #انیمیشن #آموزش
👍3🔥3
🤕ری اکشن بزنید تا ۴ صب دارم مطلب آپلود میکنم🥺😪
👍4🥰3🥱1
https://t.iss.one/pythonhamid

حالتون چطوره امروز 🌹
2🌭1
آموزش کتابخانه Splinter در پایتون 🌐🐍 (پارت 1)

کتابخانه Splinter یکی از ابزارهای قدرتمند برای اتوماسیون و تعامل با مرورگرهای وب در پایتون است. Splinter اولین بار در سال 2011 معرفی شد و هدف اصلی آن ساده‌سازی فرآیند اتوماسیون مرورگرهای وب برای تست و استخراج اطلاعات است. این کتابخانه قابلیت کار با مرورگرهای مختلفی مثل Chrome، Firefox، Safari و حتی مرورگرهای بدون رابط گرافیکی مانند PhantomJS و zzzzz WebKit را دارد. با استفاده از Splinter، می‌توانیم به‌راحتی کارهایی مانند پر کردن فرم‌ها، کلیک بر روی دکمه‌ها و استخراج اطلاعات از وب‌سایت‌ها را انجام دهیم. در این آموزش، با نحوه نصب و استفاده از این کتابخانه آشنا خواهیم شد. 🚀

نصب Splinter 📦

برای شروع، ابتدا باید کتابخانه Splinter و مرورگری که قصد استفاده از آن را داریم (مثلاً Chrome) نصب کنیم. مراحل نصب به‌صورت زیر است:

# نصب Splinter
!pip install splinter

# نصب WebDriver برای Chrome
!pip install chromedriver-autoinstaller

استفاده اولیه از Splinter 🌟

در این بخش، به شما نشان خواهیم داد که چگونه یک مرورگر را راه‌اندازی کنید و یک وب‌سایت را باز کنید. در این مثال، از Chrome استفاده می‌کنیم:

from splinter import Browser
import chromedriver_autoinstaller

# نصب خودکار chromedriver
chromedriver_autoinstaller.install()

# راه‌اندازی مرورگر
with Browser('chrome') as browser:
# باز کردن یک وب‌سایت
browser.visit('https://example.com')

# بررسی اینکه صفحه به‌درستی بارگذاری شده است
if browser.is_text_present('Example Domain'):
print("صفحه به‌درستی بارگذاری شد!")
else:
print("خطایی در بارگذاری صفحه رخ داده است.")

توضیحات:
1. نصب Splinter و chromedriver-autoinstaller:
- با استفاده از !pip install splinter، کتابخانه Splinter را نصب می‌کنیم.
- با استفاده از !pip install chromedriver-autoinstaller، ابزار نصب خودکار WebDriver برای Chrome را نصب می‌کنیم.

2. وارد کردن کتابخانه‌ها:
- from splinter import Browser: از کتابخانه Splinter برای وارد کردن کلاس Browser استفاده می‌کنیم.
- import chromedriver_autoinstaller: ابزار نصب خودکار chromedriver را وارد می‌کنیم.

3. نصب خودکار chromedriver:
- chromedriver_autoinstaller.install(): این خط کد بررسی می‌کند که آیا chromedriver نصب شده است یا نه، و در صورت نیاز آن را نصب می‌کند.

4. راه‌اندازی مرورگر:
- with Browser('chrome') as browser: مرورگر Chrome را باز می‌کنیم.
- browser.visit('https://example.com'): وب‌سایت مورد نظر را بازدید می‌کنیم.
- if browser.is_text_present('Example Domain'): بررسی می‌کنیم که آیا متن "Example Domain" در صفحه وجود دارد یا نه.
- print("صفحه به‌درستی بارگذاری شد!"): در صورت وجود متن، پیام موفقیت‌آمیز بودن بارگذاری را چاپ می‌کنیم.
- print("خطایی در بارگذاری صفحه رخ داده است."): در صورت عدم وجود متن، پیام خطا را چاپ می‌کنیم.

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

(اینم کانال ما)

#پایتون #برنامه‌نویسی #اتوماسیون #وب
آموزش کتابخانه Splinter در پایتون 🌐🐍 (پارت 2)

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

تعامل با عناصر وب‌سایت 🖱️

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

# پر کردن یک فرم
browser.fill('username', 'your_username')
browser.fill('password', 'your_password')

# کلیک بر روی دکمه ورود
button = browser.find_by_name('login').first
button.click()

# بررسی موفقیت‌آمیز بودن ورود
if browser.is_text_present('Welcome'):
print("ورود موفقیت‌آمیز بود!")
else:
print("ورود ناموفق بود.")

توضیحات:
1. پر کردن فرم:
- browser.fill('username', 'your_username'): فیلد متنی با نام 'username' را با مقدار 'your_username' پر می‌کنیم.
- browser.fill('password', 'your_password'): فیلد متنی با نام 'password' را با مقدار 'your_password' پر می‌کنیم.

2. کلیک بر روی دکمه:
- button = browser.find_by_name('login').first: دکمه‌ای با نام 'login' را پیدا کرده و اولین مورد آن را انتخاب می‌کنیم.
- button.click(): بر روی دکمه کلیک می‌کنیم.

3. بررسی موفقیت‌آمیز بودن ورود:
- if browser.is_text_present('Welcome'): بررسی می‌کنیم که آیا متن 'Welcome' در صفحه وجود دارد یا نه.
- print("ورود موفقیت‌آمیز بود!"): در صورت وجود متن، پیام موفقیت‌آمیز بودن ورود را چاپ می‌کنیم.
- print("ورود ناموفق بود."): در صورت عدم وجود متن، پیام خطا را چاپ می‌کنیم.

استخراج اطلاعات از وب‌سایت 🕵️‍♂️

با استفاده از Splinter می‌توانیم اطلاعات مورد نظر خود را از وب‌سایت‌ها استخراج کنیم. در این مثال، تمام لینک‌های موجود در صفحه را استخراج می‌کنیم:

# استخراج تمام لینک‌های موجود در صفحه
links = browser.find_by_tag('a')

# چاپ متن و URL هر لینک
for link in links:
print(link.text, link['href'])

توضیحات:
1. استخراج لینک‌ها:
- links = browser.find_by_tag('a'): تمام عناصر با تگ 'a' (لینک‌ها) را در صفحه پیدا کرده و در متغیری به نام links ذخیره می‌کنیم.

2. چاپ متن و URL هر لینک:
- for link in links: یک حلقه برای دسترسی به هر لینک در لیست links ایجاد می‌کنیم.
- print(link.text, link['href']): متن و URL هر لینک را چاپ می‌کنیم.

بستن مرورگر 🛑

در پایان کار با مرورگر، حتماً باید مرورگر را ببندیم تا منابع سیستم آزاد شوند:

browser.quit()

توضیحات:
- browser.quit(): این خط کد مرورگر را می‌بندد و منابع سیستم را آزاد می‌کند.

نتیجه‌گیری 🎉

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

(اینم کانال ما)

#پایتون #برنامه‌نویسی #اتوماسیون #وب
👍1
❓️چگونه می‌توانم در پایتون به کاربران اجازه دهم که تا زمانی که ورودی صحیحی وارد نکرده‌اند، به طور مداوم تلاش کنند؟❓️

اینطوری ❗️👇:

برای این کار می‌توانید از حلقه 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]

#پایتون #برنامه‌نویسی #ترفند #ورودی #تایید_ورودی
👍4👏1
آموزش الگوریتم معکوس‌سازی یک رشته به صورت درجا در پایتون 🔄

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

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

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)، لیست کاراکترها را به یک رشته تبدیل می‌کنیم.

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

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

#پایتون #برنامه‌نویسی #الگوریتم #رشته #معکوس_سازی
👍4