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

📱 | برای کسانی که با «موبایل» کد میزنن «Pydroid 3» رو پیشنهاد میکنم


⚠️ : @hamidpython123
👍5
🖥 | لینک دانلود {Visual Studio Code}

📱| لینک دانلود {Pydroid3}
👍5
پارت ۱۳: ماژول‌ها و پکیج‌ها در پایتون 📦🐍

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

۱. ماژول‌ها (Modules)
ماژول‌ها فایل‌هایی با پسوند .py هستند که شامل کد پایتون می‌باشند. شما می‌توانید از ماژول‌ها برای سازماندهی کدهای خود و جلوگیری از تکرار کدها استفاده کنید.

ایجاد و استفاده از یک ماژول
1. ایجاد ماژول: ابتدا یک فایل به نام my_module.py ایجاد کنید و کدهای زیر را در آن قرار دهید:

    # my_module.py
def greet(name):
return f"Hello, {name}!"

def add(a, b):
return a + b

2. استفاده از ماژول: در یک فایل دیگر می‌توانید از ماژول ایجاد شده استفاده کنید:

    # main.py
import my_module

print(my_module.greet("Alice")) # خروجی: Hello, Alice!
print(my_module.add(5, 3)) # خروجی: 8

۲. پکیج‌ها (Packages)
پکیج‌ها مجموعه‌ای از ماژول‌ها هستند که در یک دایرکتوری قرار دارند و شامل یک فایل init.py هستند. این فایل می‌تواند خالی باشد یا کدهای خاصی را شامل شود.

ایجاد و استفاده از یک پکیج
1. ایجاد پکیج: ساختار زیر را ایجاد کنید:

    my_package/
__init__.py
module1.py
module2.py

2. فایل module1.py:

    # module1.py
def multiply(a, b):
return a * b

3. فایل module2.py:

    # module2.py
def divide(a, b):
if b == 0:
return "Cannot divide by zero!"
return a / b

4. استفاده از پکیج:

    # main.py
from my_package import module1, module2

print(module1.multiply(4, 5)) # خروجی: 20
print(module2.divide(10, 2)) # خروجی: 5.0

۳. نصب و استفاده از پکیج‌های خارجی
شما می‌توانید از پکیج‌های خارجی که توسط جامعه پایتون ایجاد شده‌اند نیز استفاده کنید. این پکیج‌ها معمولاً از طریق PyPI (Python Package Index) در دسترس هستند و می‌توانید آن‌ها را با استفاده از pip نصب کنید.

نصب یک پکیج
به عنوان مثال، نصب پکیج requests برای انجام درخواست‌های HTTP:
pip install requests

استفاده از پکیج نصب شده

import requests

response = requests.get('https://api.github.com')
print(response.status_code) # خروجی: 200 (یا هر کد وضعیت دیگر)
print(response.json()) # خروجی: داده‌های JSON دریافت شده از API

۴. ایجاد و انتشار پکیج خود
اگر شما یک پکیج ایجاد کرده‌اید و می‌خواهید آن را با دیگران به اشتراک بگذارید، می‌توانید آن را در PyPI منتشر کنید. این فرآیند شامل ایجاد فایل‌هایی مانند setup.py و ثبت پکیج در PyPI می‌شود.

فایل setup.py
این فایل شامل اطلاعاتی درباره پکیج شماست:
from setuptools import setup, find_packages

setup(
name='my_package',
version='0.1',
packages=find_packages(),
install_requires=[],
)

انتشار پکیج
مراحل کلی برای انتشار پکیج شامل ساخت و آپلود بسته به PyPI است:
python setup.py sdist bdist_wheel
twine upload dist/*

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

#پایتون #آموزش_پایتون #ماژول #پکیج #PythonModules #PythonPackages
پارت ۱۴: کتابخانه‌های استاندارد پایتون 📚🐍

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

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

مثال‌هایی از کتابخانه math
import math

# محاسبه جذر
print(math.sqrt(16)) # خروجی: 4.0

# محاسبه سینوس
print(math.sin(math.pi / 2)) # خروجی: 1.0

# محاسبه لگاریتم
print(math.log(10)) # خروجی: 2.302585092994046

۲. کتابخانه datetime
کتابخانه datetime برای کار با تاریخ و زمان استفاده می‌شود. این کتابخانه امکان انجام محاسبات تاریخ و زمان، قالب‌بندی و تجزیه را فراهم می‌کند.

مثال‌هایی از کتابخانه datetime
import datetime

# ایجاد یک شیء تاریخ و زمان
now = datetime.datetime.now()
print(now) # خروجی: تاریخ و زمان فعلی

# قالب‌بندی تاریخ
print(now.strftime("%Y-%m-%d %H:%M:%S")) # خروجی: قالب‌بندی شده به صورت سال-ماه-روز ساعت:دقیقه:ثانیه

# محاسبه اختلاف بین دو تاریخ
date1 = datetime.datetime(2023, 7, 5)
date2 = datetime.datetime(2024, 7, 5)
diff = date2 - date1
print(diff.days) # خروجی: 366

۳. کتابخانه os
کتابخانه os ابزارهایی برای تعامل با سیستم‌عامل فراهم می‌کند، از جمله کار با فایل‌ها و دایرکتوری‌ها، اجرای دستورات سیستم‌عامل و دسترسی به متغیرهای محیطی.

مثال‌هایی از کتابخانه os
import os

# دریافت مسیر دایرکتوری فعلی
current_directory = os.getcwd()
print(current_directory) # خروجی: مسیر دایرکتوری فعلی

# ایجاد یک دایرکتوری جدید
os.mkdir("new_directory")

# لیست کردن فایل‌ها و دایرکتوری‌ها
files = os.listdir(".")
print(files) # خروجی: لیستی از فایل‌ها و دایرکتوری‌ها در دایرکتوری فعلی

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

مثال‌هایی از کتابخانه sys
import sys

# دریافت آرگومان‌های خط فرمان
print(sys.argv) # خروجی: لیستی از آرگومان‌های خط فرمان

# چاپ پیام خطا و خروج از برنامه
sys.stderr.write("This is an error message\n")
sys.exit(1)

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

مثال‌هایی از کتابخانه random
import random

# تولید یک عدد تصادفی بین 1 و 10
print(random.randint(1, 10)) # خروجی: یک عدد تصادفی بین 1 و 10

# انتخاب تصادفی از لیست
choices = ['apple', 'banana', 'cherry']
print(random.choice(choices)) # خروجی: یکی از عناصر لیست به صورت تصادفی

# مخلوط کردن عناصر لیست
random.shuffle(choices)
print(choices) # خروجی: لیست مخلوط شده

۶. کتابخانه json
کتابخانه json برای کار با داده‌های JSON استفاده می‌شود. این کتابخانه ابزارهایی برای تبدیل داده‌های پایتون به فرمت JSON و برعکس فراهم می‌کند.

مثال‌هایی از کتابخانه json
import json

# تبدیل دیکشنری به رشته JSON
data = {'name': 'Alice', 'age': 30}
json_string = json.dumps(data)
print(json_string) # خروجی: {"name": "Alice", "age": 30}

# تبدیل رشته JSON به دیکشنری
data_parsed = json.loads(json_string)
print(data_parsed) # خروجی: {'name': 'Alice', 'age': 30}

(آموزش های خیلی مفید کانال ما)

#پایتون #آموزش_پایتون #کتابخانه_استاندارد #PythonStandardLibrary #PythonModules
👍2
| سوالی داشتین Pv پیام بدید :
🏆 :
@Mr_Xplus
👍2
آیا می‌دانستید؟ 🤓

اولین کامپیوتر مکانیکی قابل برنامه‌ریزی در جهان توسط کنراد تسوزه (Konrad Zuse) ساخته شد و به نام Z1 شناخته می‌شود. 💻 این شاهکار مهندسی در سال 1938 در آلمان ساخته شد و یکی از اولین تلاش‌ها برای ایجاد یک کامپیوتر دیجیتال واقعی بود.

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

از ویژگی‌های جالب Z1 می‌توان به موارد زیر اشاره کرد:
- استفاده از مموری مکانیکی برای ذخیره داده‌ها 🗄🔧
- قابلیت برنامه‌ریزی با استفاده از نوارهای پانچ 📜🎛
- انجام محاسبات منطقی و ریاضی با استفاده از سیستم دو دویی 🔢🤓

Z1 توسط تسوزه در خانه‌اش و با استفاده از منابع محدودی که در دسترس داشت، ساخته شد. این دستگاه نشان‌دهنده نبوغ و پیشگامی تسوزه در حوزه کامپیوتر بود و راه را برای نسل‌های بعدی کامپیوترها هموار کرد. 👨‍🔬🚀

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

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

#تاریخچه_کامپیوتر #کنراد_تسوزه #Z1 #کامپیوتر_مکانیکی #نوآوری #دانستنی #علم_و_فناوری
👍1
آیا می‌دانستید؟ 🤓

یکی از نکات بسیار مهم در کار با توابع در پایتون که می‌تواند به شما کمک کند تا با خطاهای کمتری مواجه شوید، استفاده از آرگومان‌های پیش‌فرض (Default Arguments) است. 🌟

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

مثال
def greet(name, message="سلام!"):
print(f"{message}, {name}")

# فراخوانی تابع بدون ارسال آرگومان message
greet("علی")
# خروجی: سلام!, علی

# فراخوانی تابع با ارسال آرگومان message
greet("علی", "صبح بخیر")
# خروجی: صبح بخیر, علی

چرا استفاده از آرگومان‌های پیش‌فرض مهم است؟
1. جلوگیری از خطاهای رایج: وقتی شما آرگومان‌های پیش‌فرض تعیین می‌کنید، در صورتی که برخی از آرگومان‌ها فراموش شوند، کد شما همچنان به درستی کار خواهد کرد و با خطای "آرگومان کافی نیست" مواجه نخواهید شد. 🚫

2. افزایش خوانایی و کارایی کد: با استفاده از آرگومان‌های پیش‌فرض، کد شما خواناتر و استفاده از توابع شما راحت‌تر خواهد شد، به خصوص زمانی که توابع پیچیده‌تری دارید. 📖

3. انعطاف‌پذیری بیشتر: شما می‌توانید توابعی بنویسید که در شرایط مختلف و با مقادیر ورودی مختلف به درستی عمل کنند، بدون اینکه نیاز باشد چندین تابع مختلف برای شرایط متفاوت تعریف کنید. 🎛🔄

این نکته ساده اما قدرتمند می‌تواند به شما کمک کند تا کدهای تمیزتر و پایدارتر بنویسید و با خطاهای کمتری مواجه شوید. 🛠🔍

🔻برای نکته های بیشتر اینجا کلیک کن

#پایتون #برنامه‌نویسی #آموزش_پایتون #تابع‌ها #توسعه_دهنده #نکات_برنامه‌نویسی
👍1
📰 اخبار داغ از تورنومنت‌های برنامه‌نویسی در ایران!

1. مسابقات برنامه‌نویسی دانشجویی ایران (ACM ICPC):
- این مسابقات یکی از معتبرترین رقابت‌های برنامه‌نویسی در ایران و جهان است. تیم‌های شرکت‌کننده در این مسابقات باید مسائل پیچیده‌ی الگوریتمی را در زمان محدود حل کنند. برگزاری این مسابقات به صورت منطقه‌ای و ملی انجام می‌شود و تیم‌های برتر به مسابقات جهانی راه می‌یابند.

2. مسابقات برنامه‌نویسی CodeCup:
- CodeCup که توسط دانشگاه شریف برگزار می‌شود، شامل چالش‌های الگوریتمی و برنامه‌نویسی است که باید در مدت زمان مشخص حل شوند. این مسابقات به صورت آنلاین برگزار می‌شود و شرکت‌کنندگان از سراسر ایران می‌توانند در آن شرکت کنند.

3. مسابقات کدنویسی لیگ کدنویسی ایران (Codeninja):
- Codeninja یک لیگ کدنویسی آنلاین است که در طول سال برگزار می‌شود. این لیگ شامل مسابقات ماهانه است و شرکت‌کنندگان با حل مسائل الگوریتمی و برنامه‌نویسی می‌توانند امتیاز کسب کنند. این مسابقات فرصت خوبی برای تمرین مداوم و ارتقاء مهارت‌های برنامه‌نویسی است.

📅 منتظر چه هستید؟ اگر به برنامه‌نویسی علاقه‌مندید، حتماً در این مسابقات شرکت کنید و مهارت‌های خود را به چالش بکشید! 🖥️🚀

🔻اخبار مهم پایتون در این کانال

#ACM_ICPC #CodeCup #Codeninja #برنامه_نویسی #تورنومنت #ایران #اخبار #TechNews
📰 اخبار مهم امروز از دنیای پایتون!

1. انتشار نسخه جدید پایتون 3.12.0:
- نسخه جدید پایتون با ویژگی‌های بهبود یافته و رفع باگ‌های مختلف منتشر شد. این نسخه شامل بهبود عملکرد، ارتقاء قابلیت‌های تایپینگ، و اضافه شدن امکانات جدید به استاندارد لایبرری می‌باشد. 🌟🐍

2. محبوبیت روزافزون فریم‌ورک FastAPI:
- FastAPI همچنان به رشد محبوبیت خود ادامه می‌دهد و به یکی از محبوب‌ترین فریم‌ورک‌های پایتون برای ساخت API‌های سریع و کارا تبدیل شده است. توسعه‌دهندگان از سرعت و کارایی بالای این فریم‌ورک بسیار راضی هستند. 🚀📈

3. انتشار Pandas 2.0 با قابلیت‌های جدید:
- تیم توسعه Pandas نسخه 2.0 این لایبرری محبوب داده‌کاوی را منتشر کردند. این نسخه شامل بهبود‌های عمده در عملکرد و امکانات جدید برای تجزیه و تحلیل داده‌ها است. 📊🐼

4. شروع کارگاه‌های آموزشی Django در دانشگاه‌های ایران:
- چندین دانشگاه در ایران کارگاه‌های آموزشی فریم‌ورک Django را برای دانشجویان و علاقه‌مندان برگزار کرده‌اند. این کارگاه‌ها فرصتی عالی برای یادگیری و توسعه مهارت‌های وب است. 🏫🌐

5. استفاده از پایتون در پروژه‌های بزرگ داده کاوی:
- شرکت‌های بزرگ تکنولوژی در حال استفاده گسترده از پایتون در پروژه‌های داده‌کاوی خود هستند. پایتون به دلیل کتابخانه‌های قدرتمند مانند NumPy و SciPy انتخاب اول بسیاری از دانشمندان داده است. 🧠💾

6. افزایش تقاضا برای توسعه‌دهندگان پایتون در بازار کار:
- بازار کار برای توسعه‌دهندگان پایتون بسیار داغ است و تقاضا برای این مهارت‌ها همچنان در حال افزایش است. پایتون به عنوان یک زبان چند منظوره و قدرتمند، در صنایع مختلف مورد استفاده قرار می‌گیرد. 💼📈

7. پروژه‌های متن‌باز پایتون همچنان در حال رشد:
- تعداد پروژه‌های متن‌باز مبتنی بر پایتون روز به روز در حال افزایش است. این پروژه‌ها شامل ابزارها و کتابخانه‌های جدید برای توسعه‌دهندگان و محققان است. 🌍🔓

🔻اخبار مهم پایتون اینجا هست کلیک کن

#Python #پایتون #اخبار_تکنولوژی #FastAPI #Pandas #Django #داده_کاوی #بازار_کار #پروژه_متن_باز
👍3
🔤 آموزش کامل متدهای کار با رشته‌ها در پایتون 🔤

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

1. lower()
این متد تمام حروف رشته را به حروف کوچک تبدیل می‌کند.

text = "Hello, WORLD!"
print(text.lower()) # خروجی: hello, world!

2. upper()
این متد تمام حروف رشته را به حروف بزرگ تبدیل می‌کند.

text = "Hello, world!"
print(text.upper()) # خروجی: HELLO, WORLD!

3. capitalize()
این متد حرف اول رشته را به حروف بزرگ و بقیه را به حروف کوچک تبدیل می‌کند.

text = "hello, world!"
print(text.capitalize()) # خروجی: Hello, world!

4. title()
این متد حرف اول هر کلمه در رشته را به حروف بزرگ تبدیل می‌کند.

text = "hello, world!"
print(text.title()) # خروجی: Hello, World!

5. strip()
این متد فاصله‌های خالی در ابتدای و انتهای رشته را حذف می‌کند.

text = "  hello, world!  "
print(text.strip()) # خروجی: hello, world!

6. startswith()
این متد بررسی می‌کند که آیا رشته با زیررشته‌ی خاصی شروع می‌شود یا نه.

text = "hello, world!"
print(text.startswith("hello")) # خروجی: True

7. endswith()
این متد بررسی می‌کند که آیا رشته با زیررشته‌ی خاصی پایان می‌یابد یا نه.

text = "hello, world!"
print(text.endswith("world!")) # خروجی: True

8. replace()
این متد یک زیررشته را با زیررشته‌ای دیگر در رشته جایگزین می‌کند.

text = "hello, world!"
print(text.replace("world", "Python")) # خروجی: hello, Python!

9. split()
این متد رشته را بر اساس یک جداکننده خاص جدا کرده و به لیست تبدیل می‌کند.

text = "one, two, three"
print(text.split(", ")) # خروجی: ['one', 'two', 'three']

10. join()
این متد عناصر یک لیست را با استفاده از یک جداکننده خاص به یکدیگر متصل می‌کند.

items = ['one', 'two', 'three']
print(", ".join(items)) # خروجی: one, two, three

11. find()
این متد اولین موقعیت یک زیررشته را در رشته پیدا می‌کند. اگر زیررشته وجود نداشته باشد، -1 برمی‌گرداند.

text = "hello, world!"
print(text.find("world")) # خروجی: 7

12. index()
این متد اولین موقعیت یک زیررشته را در رشته پیدا می‌کند. اگر زیررشته وجود نداشته باشد، خطا برمی‌گرداند.

text = "hello, world!"
print(text.index("world")) # خروجی: 7

13. count()
این متد تعداد تکرار یک زیررشته در رشته را شمارش می‌کند.

text = "hello, world! hello again!"
print(text.count("hello")) # خروجی: 2

14. isnumeric()
این متد بررسی می‌کند که آیا همه کاراکترهای رشته اعداد هستند یا نه.

text = "12345"
print(text.isnumeric()) # خروجی: True

15. zfill()
این متد طول رشته را به طول مشخصی می‌رساند و با اضافه کردن صفر از سمت چپ، رشته را پر می‌کند.

text = "42"
print(text.zfill(5)) # خروجی: 00042

16. swapcase()
این متد حروف بزرگ را به کوچک و حروف کوچک را به بزرگ تبدیل می‌کند.

text = "Hello, World!"
print(text.swapcase()) # خروجی: hELLO, wORLD!

17. format()
این متد رشته‌ها را با استفاده از جایگزینی قالب‌بندی می‌کند.

name = "Alice"
age = 30
print("My name is {} and I am {} years old.".format(name, age))
# خروجی: My name is Alice and I am 30 years old.

18. rjust()
این متد رشته را به طول مشخصی می‌رساند و از سمت چپ با کاراکتر خاصی پر می‌کند.

text = "42"
print(text.rjust(5, '0')) # خروجی: 00042

19. ljust()
این متد رشته را به طول مشخصی می‌رساند و از سمت راست با کاراکتر خاصی پر می‌کند.

text = "42"
print(text.ljust(5, '0')) # خروجی: 42000

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

🔻برای بیشتر یاد گرفتن اینجا کلیک کن

#Python #Programming #Coding #Strings #Learning #PythonTips
ساخت کلاس و متدها در پایتون

ابتدا یک کلاس ساده به نام Car تعریف می‌کنیم و چند متد برای آن ایجاد می‌کنیم.

class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year

def start_engine(self):
print(f"The engine of the {self.brand} {self.model} is now running.")

def stop_engine(self):
print(f"The engine of the {self.brand} {self.model} has been turned off.")

def honk(self):
print("Beep beep!")

def display_info(self):
print(f"Car Info: {self.brand} {self.model}, Year: {self.year}")

توضیحشinitit__ یک متد ویژه است که به عنوان سازنده (constructor) کلاس عمل می‌کند و هنگام ایجاد یک شیء از کلاس فراخوانی می‌شود. این متد برای مقداردهی اولیه به متغیرهای نمونه (instance variables) استفاده می‌شود.
- start_engine یک متد معمولی است که پیام شروع به کار موتور را چاپ می‌کند.
- stop_engine یک متد معمولی است که پیام خاموش شدن موتور را چاپ می‌کند.
- honk یک متد معمولی است که صدای بوق را چاپ می‌کند.
- display_info یک متد معمولی است که اطلاعات خودرو را چاپ می‌کند.

استفاده از کلاس و متدها

حال می‌توانیم از کلاس Car استفاده کنیم و متدهای آن را فراخوانی کنیم.

if __name__ == "__main__":
my_car = Car("Toyota", "Corolla", 2020)
my_car.start_engine() # خروجی: The engine of the Toyota Corolla is now running.
my_car.honk() # خروجی: Beep beep!
my_car.display_info() # خروجی: Car Info: Toyota Corolla, Year: 2020
my_car.stop_engine() # خروجی: The engine of the Toyota Corolla has been turned off.

توضیحش

- با استفاده از Car("Toyota", "Corolla", 2020) یک شیء جدید از کلاس Car با نام my_car ایجاد می‌کنیم.
- سپس متدهای مختلف را با استفاده از my_car فراخوانی می‌کنیم.

نکات مهم

1. متدهای یک کلاس همیشه باید حداقل یک پارامتر داشته باشند که به طور معمول self نامیده می‌شود. این پارامتر به شیء فعلی اشاره دارد.
2. شما می‌توانید متدهای کلاس را برای انجام هر عملیاتی که می‌خواهید تعریف کنید. این متدها می‌توانند پارامترهای اضافی داشته باشند و هر عملیاتی را که نیاز دارید انجام دهند.

امیدوارم این آموزش به شما کمک کرده باشد که بفهمید چطور می‌توانید متدهای خود را در پایتون تعریف کنید و از آن‌ها استفاده کنید. هر سوالی داشتید، حتماً بپرسید! 😊

🔻برای بیشتر یاد گرفتن اینجا کلیک کن

#Python #Programming #OOP #Methods #Learning #PythonTips
👍3
👍2
سلام دوستان ، ببخشید فعالیت کم شده ، به دلیل اینکه هم من هم مدیر کانال سر کار میریم و وقتی برای پست گذاشتن نداریم ، سعی میکنم براتون ساعت هایی که کار ندارم پست بزارم ، ممنون که درک میکنید❤️
امنیت از طریق عدم شفافیت (Security through Obscurity) در لینوکس 🛡️🐧

یکی از مفاهیم جذاب و بحث‌برانگیز در دنیای امنیت اطلاعات، مفهوم "امنیت از طریق عدم شفافیت" (Security through Obscurity) است. این روش به معنای پنهان کردن جزئیات سیستم به منظور افزایش امنیت است. در این مطلب به بررسی این مفهوم در سیستم‌عامل لینوکس می‌پردازیم. 🖥️🔍

توضیحات:

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

مثال‌هایی از استفاده در لینوکس:

1. پنهان کردن نسخه هسته (Kernel) لینوکس:
- در بسیاری از توزیع‌های لینوکس، نسخه دقیق هسته در فایل /proc/version قابل مشاهده است.
- با پنهان کردن یا تغییر این اطلاعات، دسترسی به اطلاعاتی که ممکن است به هکرها کمک کند، کاهش می‌یابد.


    echo "kernel_version_string" > /proc/version

2. پیکربندی SSH:
- در فایل تنظیمات SSH، می‌توانید نسخه نرم‌افزار SSH و بنر خوش‌آمدگویی را تغییر دهید تا اطلاعات کمتر قابل دسترس باشد.


    # در فایل sshd_config
Banner /etc/issue.net



    # در فایل issue.net
Unauthorized access is prohibited

3. پنهان کردن سرویس‌ها:
- پنهان کردن سرویس‌های در حال اجرا از طریق پیکربندی فایروال و ابزارهای نظارتی مثل netstat و lsof.


    # استفاده از iptables برای فیلتر کردن پورت‌ها
iptables -A INPUT -p tcp --dport 22 -j DROP

مزایا و معایب:

- مزایا:
- کاهش سطح دسترسی به اطلاعات حساس.
- کاهش احتمال حملات خودکار.

- معایب:
- ایجاد یک حس کاذب از امنیت.
- عدم توانایی در جایگزینی روش‌های امنیتی اساسی.

نتیجه‌گیری:

"امنیت از طریق عدم شفافیت" یک لایه اضافی از امنیت فراهم می‌کند، اما نباید به عنوان تنها روش امنیتی مورد استفاده قرار گیرد. استفاده از روش‌های امنیتی قوی‌تر مانند به‌روزرسانی مداوم، پیکربندی صحیح و نظارت مداوم بر سیستم‌ها نیز ضروری است. 🛡️🔒

🔻برای دونستن چیزای بیشتر اینجا کلیک کن

#امنیت #لینوکس #آموزش_برنامه_نویسی #سیستم_عامل #امنیت_شبکه #پروژه_های_پایتون
👍4
پارت ۱۵: پروژه ۱ - مدیریت مخاطبین 📞📝

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

۱. تعریف ساختار پروژه
این پروژه شامل قابلیت‌های زیر خواهد بود:
- اضافه کردن مخاطب جدید
- نمایش لیست مخاطبین
- جستجو در مخاطبین
- حذف مخاطب
- ذخیره و بازیابی مخاطبین در فایل

۲. ایجاد فایل اصلی پروژه
ابتدا فایل اصلی پروژه را ایجاد کنید و ساختار اولیه آن را پیاده‌سازی کنید.

import json

# مسیر فایل ذخیره مخاطبین
CONTACTS_FILE = 'contacts.json'

def load_contacts():
"""بارگذاری مخاطبین از فایل"""
try:
with open(CONTACTS_FILE, 'r') as file:
return json.load(file)
except FileNotFoundError:
return []

def save_contacts(contacts):
"""ذخیره مخاطبین در فایل"""
with open(CONTACTS_FILE, 'w') as file:
json.dump(contacts, file, indent=4)

def add_contact(contacts):
"""اضافه کردن مخاطب جدید"""
name = input("نام: ")
phone = input("شماره تلفن: ")
email = input("ایمیل: ")

contact = {
'name': name,
'phone': phone,
'email': email
}
contacts.append(contact)
print("مخاطب جدید اضافه شد.")

def display_contacts(contacts):
"""نمایش لیست مخاطبین"""
for idx, contact in enumerate(contacts, start=1):
print(f"{idx}. {contact['name']} - {contact['phone']} - {contact['email']}")

def search_contacts(contacts):
"""جستجو در مخاطبین"""
search_name = input("نام برای جستجو: ")
found_contacts = [c for c in contacts if search_name.lower() in c['name'].lower()]

if found_contacts:
for contact in found_contacts:
print(f"{contact['name']} - {contact['phone']} - {contact['email']}")
else:
print("مخاطبی پیدا نشد.")

def delete_contact(contacts):
"""حذف مخاطب"""
display_contacts(contacts)
idx = int(input("شماره مخاطب برای حذف: ")) - 1

if 0 <= idx < len(contacts):
deleted_contact = contacts.pop(idx)
print(f"مخاطب {deleted_contact['name']} حذف شد.")
else:
print("شماره نامعتبر است.")

def main():
contacts = load_contacts()

while True:
print("\nمدیریت مخاطبین:")
print("1. اضافه کردن مخاطب")
print("2. نمایش لیست مخاطبین")
print("3. جستجو در مخاطبین")
print("4. حذف مخاطب")
print("5. خروج")

choice = input("انتخاب شما: ")

if choice == '1':
add_contact(contacts)
elif choice == '2':
display_contacts(contacts)
elif choice == '3':
search_contacts(contacts)
elif choice == '4':
delete_contact(contacts)
elif choice == '5':
save_contacts(contacts)
break
else:
print("انتخاب نامعتبر است.")

if __name__ == '__main__':
main()

۳. توضیحات هر تابع
- تابع load_contacts: مخاطبین را از فایل JSON بارگذاری می‌کند. اگر فایل موجود نباشد، یک لیست خالی برمی‌گرداند.
- تابع save_contacts: مخاطبین را در فایل JSON ذخیره می‌کند.
- تابع add_contact: اطلاعات یک مخاطب جدید را از کاربر می‌گیرد و به لیست مخاطبین اضافه می‌کند.
- تابع display_contacts: لیست مخاطبین را با استفاده از یک حلقه چاپ می‌کند.
- تابع search_contacts: نام وارد شده را جستجو کرده و مخاطبین مرتبط را نمایش می‌دهد.
- تابع delete_contact: مخاطب مورد نظر را بر اساس شماره انتخاب شده از لیست حذف می‌کند.
- تابع main: حلقه اصلی برنامه که منوی اصلی را نمایش داده و انتخاب کاربر را مدیریت می‌کند.

۴. نکات مهم
- مدیریت فایل: برای ذخیره و بارگذاری مخاطبین از فایل JSON استفاده شده است تا بتوانیم داده‌ها را بین اجراهای مختلف برنامه حفظ کنیم.
- پیشگیری از خطا: در حذف مخاطب، اطمینان حاصل می‌شود که شماره وارد شده معتبر است.
- تعامل با کاربر: اطلاعات مخاطب را از ورودی کاربر گرفته و نتیجه عملیات را به کاربر نمایش می‌دهد.

🔻اینجا کلیک کن برای آموزش های بیشتر

#پایتون #آموزش_پایتون #پروژه_پایتون #مدیریت_مخاطبین #PythonProjects #ContactsManagement
👍2
پارت ۱۶: پروژه ۲ - ماشین حساب پیشرفته 🧮

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

۱. تعریف ساختار پروژه
این پروژه شامل قابلیت‌های زیر خواهد بود:
- انجام عملیات جمع، تفریق، ضرب و تقسیم
- محاسبه توان و ریشه
- انجام محاسبات مثلثاتی (سینوس، کسینوس و تانژانت)
- استفاده از توابع لگاریتم و نمایی

۲. ایجاد فایل اصلی پروژه
ابتدا فایل اصلی پروژه را ایجاد کنید و ساختار اولیه آن را پیاده‌سازی کنید.

import math

def add(x, y):
return x + y

def subtract(x, y):
return x - y

def multiply(x, y):
return x * y

def divide(x, y):
if y == 0:
return "تقسیم بر صفر امکان‌پذیر نیست!"
return x / y

def power(x, y):
return x ** y

def sqrt(x):
if x < 0:
return "جذر عدد منفی امکان‌پذیر نیست!"
return math.sqrt(x)

def sine(x):
return math.sin(math.radians(x))

def cosine(x):
return math.cos(math.radians(x))

def tangent(x):
return math.tan(math.radians(x))

def logarithm(x, base=10):
if x <= 0:
return "لگاریتم عدد صفر یا منفی امکان‌پذیر نیست!"
return math.log(x, base)

def exponential(x):
return math.exp(x)

def display_menu():
print("\nماشین حساب پیشرفته:")
print("1. جمع")
print("2. تفریق")
print("3. ضرب")
print("4. تقسیم")
print("5. توان")
print("6. جذر")
print("7. سینوس")
print("8. کسینوس")
print("9. تانژانت")
print("10. لگاریتم")
print("11. نمایی")
print("12. خروج")

def main():
while True:
display_menu()
choice = input("انتخاب شما: ")

if choice == '1':
x = float(input("عدد اول: "))
y = float(input("عدد دوم: "))
print(f"نتیجه: {add(x, y)}")
elif choice == '2':
x = float(input("عدد اول: "))
y = float(input("عدد دوم: "))
print(f"نتیجه: {subtract(x, y)}")
elif choice == '3':
x = float(input("عدد اول: "))
y = float(input("عدد دوم: "))
print(f"نتیجه: {multiply(x, y)}")
elif choice == '4':
x = float(input("عدد اول: "))
y = float(input("عدد دوم: "))
print(f"نتیجه: {divide(x, y)}")
elif choice == '5':
x = float(input("عدد اول: "))
y = float(input("توان: "))
print(f"نتیجه: {power(x, y)}")
elif choice == '6':
x = float(input("عدد: "))
print(f"نتیجه: {sqrt(x)}")
elif choice == '7':
x = float(input("زاویه (درجه): "))
print(f"نتیجه: {sine(x)}")
elif choice == '8':
x = float(input("زاویه (درجه): "))
print(f"نتیجه: {cosine(x)}")
elif choice == '9':
x = float(input("زاویه (درجه): "))
print(f"نتیجه: {tangent(x)}")
elif choice == '10':
x = float(input("عدد: "))
base = float(input("پایه (پیش‌فرض 10): ") or 10)
print(f"نتیجه: {logarithm(x, base)}")
elif choice == '11':
x = float(input("عدد: "))
print(f"نتیجه: {exponential(x)}")
elif choice == '12':
print("خروج از ماشین حساب...")
break
else:
print("انتخاب نامعتبر است.")

if __name__ == '__main__':
main()

۳. توضیحات هر تابع
- توابع عملیات پایه‌ای: add, subtract, multiply, divide برای انجام عملیات جمع، تفریق، ضرب و تقسیم.
- توابع عملیات پیشرفته: power, sqrt برای محاسبه توان و جذر.
- توابع مثلثاتی: sine, cosine, tangent برای محاسبات مثلثاتی.
- توابع لگاریتم و نمایی: logarithm, exponential برای انجام محاسبات لگاریتمی و نمایی.
- تابع display_menu: نمایش منوی اصلی.
- تابع main: حلقه اصلی برنامه که منوی اصلی را نمایش داده و انتخاب کاربر را مدیریت می‌کند.
👍1
۴. نکات مهم
- مدیریت خطاها: در توابع divide, sqrt و logarithm برای جلوگیری از وقوع خطاها، بررسی‌های لازم انجام شده است.
- ورودی کاربر: برنامه از کاربر مقادیر ورودی را دریافت کرده و نتیجه محاسبات را نمایش می‌دهد.
- تابع math: برای انجام محاسبات پیچیده‌تر از کتابخانه math استفاده شده است.

🔻برای آموزش های بیشتر اینجا کلیک کن

#پایتون #آموزش_پایتون #پروژه_پایتون #ماشین_حساب #PythonProjects #AdvancedCalculator
👍1
صبح همتون بخیر دوستان ☕️
👍2
تشابهات زبان پایتون و C 🐍💻

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

1. مفاهیم پایه‌ای مشترک 📚

هر دو زبان پایتون و C از مفاهیم پایه‌ای برنامه‌نویسی مانند متغیرها، توابع و ساختارهای کنترلی (if، for، while) استفاده می‌کنند. این مفاهیم پایه‌ای در بیشتر زبان‌های برنامه‌نویسی مشترک هستند و یادگیری یکی از این زبان‌ها می‌تواند به یادگیری زبان دیگر کمک کند.

2. مدیریت حافظه 🔄

اگرچه مدیریت حافظه در C به صورت دستی انجام می‌شود (با استفاده از malloc و free)، پایتون نیز از مدیریت حافظه استفاده می‌کند، اما به صورت خودکار. در پایتون، مدیریت حافظه با استفاده از سیستم جمع‌آوری زباله (Garbage Collection) انجام می‌شود. در هر دو زبان، اهمیت مدیریت بهینه حافظه به منظور جلوگیری از نشتی حافظه و بهبود عملکرد برنامه وجود دارد.

3. استفاده از کتابخانه‌ها 📚

هر دو زبان از کتابخانه‌ها برای گسترش قابلیت‌ها و انجام کارهای خاص استفاده می‌کنند. در C، کتابخانه‌های استاندارد مانند stdio.h و math.h برای ورودی/خروجی و محاسبات ریاضی استفاده می‌شوند. در پایتون، کتابخانه‌های استاندارد و شخص ثالث زیادی مانند math، numpy و pandas وجود دارند که برای انجام کارهای مختلف به کار می‌روند.

4. استفاده در سیستم‌عامل‌ها و توسعه سیستم‌های نرم‌افزاری 🖥️

C به عنوان یکی از زبان‌های پایه‌ای برای نوشتن سیستم‌عامل‌ها و نرم‌افزارهای سیستمی شناخته می‌شود. بسیاری از سیستم‌عامل‌ها مانند Unix و Linux با استفاده از C نوشته شده‌اند. از سوی دیگر، پایتون نیز به دلیل سادگی و قدرتش در توسعه اسکریپت‌ها و ابزارهای مدیریتی سیستم‌عامل‌ها به کار می‌رود.

5. قابلیت‌های پردازش رشته‌ها 📝

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

6. پشتیبانی از توابع 📜

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

امیدوارم این معرفی کوتاه از تشابهات پایتون و C برای شما مفید باشه! اگر سوالی دارید یا نکته‌ای هست که دوست دارید بیشتر بدونید، در نظرات بپرسید. 😊

🔻آموزش های بیشتر اینجاست

#پایتون #C #برنامه_نویسی #آموزش_برنامه_نویسی #تشابهات_زبان_های_برنامه_نویسی
👍8
آموزش استفاده از متدهای کاربردی پایتون برای مدیریت تاریخ و زمان 📅🕒

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

1. وارد کردن کتابخانه datetime 📚

ابتدا کتابخانه datetime را وارد می‌کنیم:

import datetime

2. دریافت تاریخ و زمان فعلی 🕒

برای دریافت تاریخ و زمان فعلی، از متد datetime.now() استفاده می‌کنیم:

now = datetime.datetime.now()
print("Current date and time:", now)

3. قالب‌بندی تاریخ و زمان

می‌توانیم تاریخ و زمان را به فرمت‌های مختلف قالب‌بندی کنیم. برای مثال:

formatted_date = now.strftime("%Y-%m-%d")
formatted_time = now.strftime("%H:%M:%S")
print("Formatted date:", formatted_date)
print("Formatted time:", formatted_time)

4. کار با زمان‌های دلخواه

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

specific_date = datetime.datetime(2023, 7, 5, 15, 30, 0)
print("Specific date and time:", specific_date)

5. محاسبات زمانی 🕰️

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

future_date = now + datetime.timedelta(days=10)
past_date = now - datetime.timedelta(days=10)
print("Date 10 days in the future:", future_date)
print("Date 10 days in the past:", past_date)

6. تبدیل رشته به تاریخ و زمان 🔄

می‌توانیم رشته‌های متنی را به تاریخ و زمان تبدیل کنیم:

date_string = "2024-07-06 14:30:00"
date_object = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("Date object from string:", date_object)

7. استفاده از کتابخانه pytz برای منطقه‌های زمانی 🌍

کتابخانه pytz به ما امکان می‌دهد که با منطقه‌های زمانی مختلف کار کنیم:

import pytz

# منطقه زمانی UTC
utc = pytz.utc
utc_now = datetime.datetime.now(utc)
print("UTC time:", utc_now)

# منطقه زمانی محلی
local_tz = pytz.timezone("Asia/Tehran")
local_time = utc_now.astimezone(local_tz)
print("Local time in Tehran:", local_time)

8. جمع‌بندی 📜

مدیریت تاریخ و زمان در پایتون با استفاده از کتابخانه‌های datetime و pytz بسیار ساده و کاربردی است. با استفاده از این متدها و تکنیک‌ها می‌توانید برنامه‌های خود را بهبود بخشید و مدیریت دقیقی بر روی تاریخ و زمان داشته باشید. امیدوارم این آموزش برای شما مفید باشد!

🔻آموزش های مفید بیشتر تو این کانال


#پایتون #برنامه_نویسی #تاریخ_زمان #مدیریت_زمان #آموزش #کتابخانه #datetime #pytz
👍1