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


!!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
📚 آموزش ران کردن سورس پایتون

سلام دوستان! 👋 امروز می‌خوام بهتون آموزش بدم که چطور می‌تونید یک سورس پایتون رو به راحتی ران کنید. 💻🐍 این آموزش برای همه‌ی سطح‌ها مناسبه، پس نگران نباشید و با ما همراه باشید! 🥳

1. نصب پایتون
اولین قدم اینه که پایتون رو روی سیستم‌تون نصب کنید. 📥 برای این کار به [سایت رسمی پایتون] برید و نسخه مناسب سیستم‌عامل‌تون رو دانلود و نصب کنید.

2. ویرایشگر کد
برای نوشتن و اجرای کدهای پایتون به یک ویرایشگر کد نیاز دارید. پیشنهاد ما استفاده از یکی از موارد زیر هست:
- VS Code 🌟
- PyCharm 💼
- Sublime Text

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

3. اجرای سورس پایتون
بعد از نصب پایتون و ویرایشگر کد، حالا وقتشه که کدتون رو اجرا کنید. 🚀

روش اول: از طریق ترمینال
1. ترمینال یا CMD رو باز کنید.
2. به دایرکتوری که فایل پایتون شما قرار داره برید. با استفاده از دستور cd می‌تونید مسیر رو تغییر بدید.
3. دستور زیر رو تایپ کنید:
python filename.py




به جای filename.py نام فایل پایتون خودتون رو بنویسید.

روش دوم: از طریق ویرایشگر کد
- در VS Code یا PyCharm، فایل پایتون خودتون رو باز کنید و روی دکمه‌ی Run (یا دکمه‌ی مشابه) کلیک کنید. 📂➡️🏃‍♂️

4. رفع مشکلات
اگر هنگام اجرای کد با خطا مواجه شدید، نگران نباشید! 🙌 چند نکته:
- مطمئن بشید که پایتون به درستی نصب شده.
- از درست بودن مسیر فایل مطمئن بشید.
- خطاهای موجود در کد رو با دقت بررسی و اصلاح کنید.

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

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

این بود آموزش امروز! امیدوارم که مفید بوده باشه. 🌟 حتما این آموزش رو با دوستانتون به اشتراک بزارید تا اونها هم بتونن ازش استفاده کنن. 📢

#Python #Programming #Learning #Coding #VSCode #PyCharm #SublimeText #Terminal #Debugging #ErrorHandling
👍2
📚 آموزش ریکاوری فایل‌ها با پایتون

سلام دوستان! 👋 امروز می‌خوام بهتون آموزش بدم که چطور می‌تونید با استفاده از پایتون، فایل‌های حذف شده رو ریکاوری کنید. 💻🗂️ این آموزش خیلی کاربردیه، پس با ما همراه باشید! 🥳

1. نصب کتابخانه‌های مورد نیاز
برای شروع نیاز داریم کتابخانه os و shutil رو که به طور پیش‌فرض با پایتون نصب هستند، استفاده کنیم. اما برای کار با فایل‌های سیستمی و بازیابی آن‌ها نیاز داریم که کتابخانه send2trash رو نصب کنیم:
pip install send2trash

2. وارد کردن کتابخانه‌ها
در این بخش کتابخانه‌های مورد نیاز رو وارد می‌کنیم:
import os
import shutil
from send2trash import send2trash

3. جابجایی فایل‌ها به سطل زباله
برای جلوگیری از حذف دائمی فایل‌ها، می‌تونیم از کتابخانه send2trash استفاده کنیم که فایل‌ها رو به سطل زباله منتقل می‌کنه:
file_path = "مسیر فایل شما"
send2trash(file_path)

4. ریکاوری فایل‌ها از سطل زباله
برای ریکاوری فایل‌ها از سطل زباله، نیاز داریم تا از نرم‌افزارهای ریکاوری مانند Recuva استفاده کنیم، زیرا پایتون به طور مستقیم به سطل زباله دسترسی نداره. اما می‌تونیم از پایتون برای بازیابی فایل‌های حذف شده از یک دایرکتوری خاص استفاده کنیم.

مثال: بازیابی فایل‌های حذف شده از یک دایرکتوری خاص
def recover_files(deleted_files_directory, recovery_directory):
if not os.path.exists(recovery_directory):
os.makedirs(recovery_directory)

for root, dirs, files in os.walk(deleted_files_directory):
for file in files:
file_path = os.path.join(root, file)
shutil.move(file_path, recovery_directory)
print(f"فایل {file} بازیابی شد.")

deleted_files_directory = "مسیر دایرکتوری فایل‌های حذف شده"
recovery_directory = "مسیر دایرکتوری بازیابی فایل‌ها"

recover_files(deleted_files_directory, recovery_directory)

5. اجرای برنامه
برنامه رو اجرا کنید تا فایل‌های حذف شده به دایرکتوری بازیابی منتقل بشن:
recover_files(deleted_files_directory, recovery_directory)

پایان
تبریک می‌گم! 🎉 شما موفق شدید فایل‌های حذف شده رو ریکاوری کنید. اگه سوالی دارید یا به کمک نیاز دارید، حتما توی کامنت‌ها بپرسید. 😊

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

این بود آموزش امروز! امیدوارم که مفید بوده باشه. 🌟 حتما این آموزش رو با دوستانتون به اشتراک بزارید تا اونها هم بتونن ازش استفاده کنن. 📢

#Python #Programming #Recovery #Files #Coding #Learnin
2👍1
اینا به کارتون میاد اصلا 🧐
👍3👎1
آموزش درخت قرمز-سیاه با پایتون 🌳🐍

در این آموزش، نحوه پیاده‌سازی درخت قرمز-سیاه (Red-Black Tree) را در پایتون به شما آموزش می‌دهیم. 😊

درخت قرمز-سیاه چیست؟ 🤔

درخت قرمز-سیاه یک درخت جستجوی دودویی است که به دلیل ویژگی‌های خاص خود، همواره متعادل باقی می‌ماند. این ویژگی‌ها عبارتند از:
1. هر گره یا قرمز است یا سیاه.
2. ریشه درخت همیشه سیاه است.
3. تمام برگ‌های نهایی (NIL) سیاه هستند.
4. هر گره قرمز باید دو فرزند سیاه داشته باشد.
5. هر مسیری از ریشه به یک برگ نهایی، تعداد یکسانی گره سیاه دارد.

پیاده‌سازی در پایتون 🐍

مرحله 1: تعریف ساختارهای داده

ابتدا ساختارهای داده‌ای برای یک گره درخت قرمز-سیاه و کلاس درخت را تعریف می‌کنیم.

class Node:
def __init__(self, key, color='red'):
self.key = key
self.color = color
self.left = self.right = self.parent = None

class RedBlackTree:
def __init__(self):
self.TNULL = Node(0, 'black')
self.root = self.TNULL

def left_rotate(self, x):
y = x.right
x.right = y.left
if y.left != self.TNULL:
y.left.parent = x
y.parent = x.parent
if x.parent is None:
self.root = y
elif x == x.parent.left:
x.parent.left = y
else:
x.parent.right = y
y.left = x
x.parent = y

def right_rotate(self, x):
y = x.left
x.left = y.right
if y.right != self.TNULL:
y.right.parent = x
y.parent = x.parent
if x.parent is None:
self.root = y
elif x == x.parent.right:
x.parent.right = y
else:
x.parent.left = y
y.right = x
x.parent = y

def insert_fix(self, k):
while k.parent.color == 'red':
if k.parent == k.parent.parent.right:
u = k.parent.parent.left
if u.color == 'red':
u.color = 'black'
k.parent.color = 'black'
k.parent.parent.color = 'red'
k = k.parent.parent
else:
if k == k.parent.left:
k = k.parent
self.right_rotate(k)
k.parent.color = 'black'
k.parent.parent.color = 'red'
self.left_rotate(k.parent.parent)
else:
u = k.parent.parent.right

if u.color == 'red':
u.color = 'black'
k.parent.color = 'black'
k.parent.parent.color = 'red'
k = k.parent.parent
else:
if k == k.parent.right:
k = k.parent
self.left_rotate(k)
k.parent.color = 'black'
k.parent.parent.color = 'red'
self.right_rotate(k.parent.parent)
if k == self.root:
break
self.root.color = 'black'

def insert(self, key):
node = Node(key)
node.left = self.TNULL
node.right = self.TNULL
parent = None
current = self.root

while current != self.TNULL:
parent = current
if node.key < current.key:
current = current.left
else:
current = current.right

node.parent = parent
if parent is None:
self.root = node
elif node.key < parent.key:
parent.left = node
else:
parent.right = node

if node.parent is None:
node.color = 'black'
return

if node.parent.parent is None:
return

self.insert_fix(node)

def inorder_helper(self, node):
if node != self.TNULL:
self.inorder_helper(node.left)
print(node.key, end=" ")
self.inorder_helper(node.right)

def print_tree(self):
self.inorder_helper(self.root)
print()
مرحله 2: استفاده از درخت قرمز-سیاه

در اینجا یک مثال ساده از استفاده از درخت قرمز-سیاه را نشان می‌دهیم:

if __name__ == "__main__":
bst = RedBlackTree()

# درج چند کلید در درخت
bst.insert(55)
bst.insert(40)
bst.insert(65)
bst.insert(60)
bst.insert(75)
bst.insert(57)

# چاپ درخت
bst.print_tree()

در این مثال، تعدادی کلید به درخت قرمز-سیاه اضافه می‌کنیم و سپس آن را به صورت ترتیب‌دار چاپ می‌کنیم. 🌟

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

#برنامه‌نویسی #پایتون #الگوریتم #داده‌ساختار #درخت_قرمز_سیاه #آموزش #کدنویسی #Python #RedBlackTree #Coding #DataStructures #Algorithms
🍓1
توضیحات کامل درباره الگوریتم درخت قرمز-سیاه 🌳🔍

مقدمه

درخت قرمز-سیاه (Red-Black Tree) یک نوع درخت جستجوی دودویی است که به منظور حفظ تعادل درخت در زمان درج و حذف گره‌ها به کار می‌رود. این تعادل باعث می‌شود که عملیات جستجو، درج و حذف به صورت کارآمد و با پیچیدگی زمانی O(log n) انجام شود. در این متن، به توضیح دقیق‌تر و جزئیات بیشتری درباره این الگوریتم می‌پردازیم. 😊

ویژگی‌های درخت قرمز-سیاه

درخت قرمز-سیاه دارای ویژگی‌های زیر است:

1. هر گره یا قرمز است یا سیاه: این ویژگی باعث ساده‌تر شدن تشخیص و اصلاح نقض‌های احتمالی قوانین درخت می‌شود.
2. ریشه درخت همیشه سیاه است: این ویژگی تضمین می‌کند که مسیرهای از ریشه به برگ‌ها همیشه دارای حداقل یک گره سیاه هستند.
3. تمام برگ‌های نهایی (NIL) سیاه هستند: برگ‌های نهایی اشاره‌گرهایی هستند که به گره‌های واقعی متصل نیستند و به عنوان نگهبان عمل می‌کنند.
4. هر گره قرمز دو فرزند سیاه دارد: این ویژگی از وجود دو گره قرمز پشت سر هم جلوگیری می‌کند و به تعادل درخت کمک می‌کند.
5. هر مسیری از ریشه به یک برگ نهایی تعداد یکسانی گره سیاه دارد: این ویژگی تضمین می‌کند که مسیرها از لحاظ ارتفاع سیاه متعادل هستند.

عملیات اصلی در درخت قرمز-سیاه

1. درج (Insertion): هنگام درج یک گره جدید، ابتدا گره را به عنوان یک گره قرمز درج می‌کنیم. سپس، با بررسی و اصلاح نقض‌های احتمالی، تعادل درخت را حفظ می‌کنیم.
2. حذف (Deletion): حذف یک گره نیز ممکن است باعث نقض قوانین درخت شود. در این صورت، با استفاده از چرخش‌ها و تغییر رنگ‌ها، درخت را به حالت متعادل برمی‌گردانیم.
3. چرخش‌ها (Rotations): دو نوع چرخش در درخت قرمز-سیاه وجود دارد: چرخش به چپ و چرخش به راست. این چرخش‌ها برای اصلاح ساختار درخت و حفظ تعادل به کار می‌روند.

چرخش به چپ و راست

چرخش به چپ

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

def left_rotate(self, x):
y = x.right
x.right = y.left
if y.left != self.TNULL:
y.left.parent = x
y.parent = x.parent
if x.parent is None:
self.root = y
elif x == x.parent.left:
x.parent.left = y
else:
x.parent.right = y
y.left = x
x.parent = y

چرخش به راست

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

def right_rotate(self, x):
y = x.left
x.left = y.right
if y.right != self.TNULL:
y.right.parent = x
y.parent = x.parent
if x.parent is None:
self.root = y
elif x == x.parent.right:
x.parent.right = y
else:
x.parent.left = y
y.right = x
x.parent = y

مزایای استفاده از درخت قرمز-سیاه

1. زمان جستجوی بهینه: به دلیل تعادل درخت، زمان جستجو در درخت قرمز-سیاه به O(log n) محدود می‌شود.
2. درج و حذف کارآمد: عملیات درج و حذف در درخت قرمز-سیاه نیز با پیچیدگی زمانی O(log n) انجام می‌شود.
3. پیاده‌سازی آسان‌تر نسبت به سایر درخت‌های متعادل: الگوریتم درخت قرمز-سیاه نسبت به برخی از درخت‌های متعادل دیگر مانند درخت AVL، ساده‌تر پیاده‌سازی می‌شود.

نتیجه‌گیری

درخت قرمز-سیاه یک ابزار قدرتمند برای مدیریت داده‌ها و حفظ تعادل در عملیات‌های جستجو، درج و حذف است. این الگوریتم با ویژگی‌های خاص خود، عملکرد بهینه و پیاده‌سازی نسبتاً ساده‌ای دارد. امیدوارم این توضیحات به درک بهتر شما از درخت قرمز-سیاه کمک کرده باشد. 🌟

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

#برنامه‌نویسی #پایتون #داده‌ساختار #آموزش #درخت_قرمز_سیاه #الگوریتم #مهندسی_نرم_افزار #کدنویسی
🔥1