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

سلام دوستان! امروز می‌خوایم با هم نگاهی به کتابخانه‌ی TurboGears بندازیم. 🤓

🎯 TurboGears چیست؟
TurboGears یک فریم‌ورک قدرتمند برای توسعه وب با زبان پایتون هست که به شما اجازه می‌ده به راحتی اپلیکیشن‌های وب بسازید. 🌐🐍

🔧 نصب TurboGears
ابتدا باید TurboGears رو نصب کنیم. برای این کار از pip استفاده می‌کنیم:

pip install tg.devtools

🚀 ساخت پروژه جدید
برای ایجاد یک پروژه جدید، از دستور زیر استفاده کنید:

gearbox quickstart myproject

این دستور یک پروژه جدید به نام myproject ایجاد می‌کنه. 📁

🔥 اجرای سرور توسعه
برای اجرای سرور توسعه، به دایرکتوری پروژه بروید و دستور زیر رو اجرا کنید:

gearbox serve

حالا می‌تونید به آدرس | https://127.0.0.1:8080 | برید و پروژه‌ی خودتون رو ببینید. 🌐🚀

🛠️ ساخت یک کنترلر ساده
در TurboGears، کنترلرها بخش اصلی پردازش درخواست‌ها هستند. یک کنترلر ساده به این شکل ساخته می‌شه:

from tg import expose, TGController

class RootController(TGController):
@expose()
def index(self):
return "سلام دنیا!"

این کنترلر به درخواست‌های (https://127.0.0.1:8080 ) پاسخ می‌ده و "سلام دنیا!" رو نمایش می‌ده. 🌟

📚 منابع بیشتر
برای یادگیری بیشتر می‌تونید به مستندات رسمی TurboGears مراجعه کنید: [مستندات TurboGears] 📖

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

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

#TurboGears #Python #WebDevelopment #پایتون #توسعه_وب
👍1
🚀 ساخت برنامه‌ی اعلام ساعت با پایتون و Flask 🚀

سلام دوستان! امروز می‌خوایم با هم یک برنامه ساده‌ی اعلام ساعت با استفاده از پایتون و Flask بسازیم. 🐍

🎯 Flask چیست؟
Flask یک میکرو فریم‌ورک سبک برای توسعه وب با پایتون است که بسیار ساده و قابل انعطاف است. 🌐

🔧 نصب Flask
ابتدا باید Flask رو نصب کنیم. برای این کار از pip استفاده می‌کنیم:

pip install Flask

🚀 ساخت برنامه‌ی اعلام ساعت
یک فایل جدید به نام app.py بسازید و کد زیر رو در اون قرار بدید:

from flask import Flask
from datetime import datetime

app = Flask(__name__)

@app.route('/')
def time():
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
return f"زمان فعلی: {current_time}"

if __name__ == '__main__':
app.run(debug=True)

این کد یک وب‌سرور ساده راه‌اندازی می‌کنه که زمان فعلی رو در صفحه اصلی نمایش می‌ده. 🌐

🔥 اجرای برنامه
برای اجرای برنامه، به دایرکتوری که فایل app.py رو ساختید برید و دستور زیر رو اجرا کنید:

python app.py

حالا می‌تونید به آدرس https://127.0.0.1:5000 برید و زمان فعلی رو ببینید. 🌟

📚 منابع بیشتر
برای یادگیری بیشتر می‌تونید به مستندات رسمی Flask مراجعه کنید: [مستندات Flask]📖

(کانال ما)

#Flask #Python #WebDevelopment #پایتون #توسعه_وب #اعلام_ساعت
👍2
پارت ۸: توابع در پایتون 🛠️🐍

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

۱. تعریف توابع

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

ساختار تعریف تابع

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

def my_function():
# دستورات اجرایی
print("Hello, World!")

فراخوانی تابع

برای فراخوانی یک تابع، کافیست نام آن را به همراه پرانتزها بنویسیم:

my_function()

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

خروجی:
Hello, World!

۲. پارامترها و آرگومان‌ها

توابع می‌توانند پارامترهایی بپذیرند که به آنها اجازه می‌دهد با داده‌های مختلف کار کنند.

تعریف تابع با پارامتر

در اینجا، تابعی تعریف می‌کنیم که دو پارامتر می‌پذیرد و حاصل جمع آنها را چاپ می‌کند:

def add(a, b):
result = a + b
print("Result:", result)

فراخوانی تابع با آرگومان‌ها

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

add(3, 5)

توضیح: در این مثال، تابع add دو پارامتر a و b می‌پذیرد. سپس حاصل جمع این دو مقدار را محاسبه و چاپ می‌کند.

خروجی:
Result: 8

۳. بازگشت مقادیر از تابع

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

تعریف تابع با مقدار بازگشتی

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

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

استفاده از مقدار بازگشتی

مقدار بازگشتی تابع را می‌توان در متغیری ذخیره کرده و از آن استفاده کرد:

result = add(3, 5)
print("Result:", result)

توضیح: در این مثال، تابع add مقدار حاصل جمع دو عدد را بازمی‌گرداند. این مقدار در متغیر result ذخیره شده و سپس چاپ می‌شود.

خروجی:
Result: 8

۴. توابع با تعداد آرگومان‌های متغیر

پایتون امکان تعریف توابع با تعداد آرگومان‌های متغیر را نیز فراهم می‌کند. این ویژگی با استفاده از *args و **kwargs قابل دستیابی است.

استفاده از args

در اینجا، تابعی تعریف می‌کنیم که تعداد نامحدودی آرگومان عددی می‌پذیرد و مجموع آنها را محاسبه می‌کند:

def add(*args):
result = sum(args)
return result

فراخوانی تابع با تعداد آرگومان‌های مختلف

print(add(1, 2, 3))         # خروجی: 6
print(add(4, 5, 6, 7, 8)) # خروجی: 30

توضیح: در این مثال، تابع add با استفاده از *args تعریف شده و می‌تواند تعداد نامحدودی آرگومان بپذیرد. سپس مجموع این آرگومان‌ها محاسبه و بازگردانده می‌شود.

۵. توابع با پارامترهای کلید-مقدار

با استفاده از **kwargs می‌توان توابعی تعریف کرد که تعداد نامحدودی پارامتر کلید-مقدار بپذیرند.

استفاده از kwargs

در اینجا، تابعی تعریف می‌کنیم که اطلاعات مختلف یک کاربر را به صورت پارامترهای کلید-مقدار می‌پذیرد و چاپ می‌کند:

def print_user_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

فراخوانی تابع با پارامترهای کلید-مقدار

print_user_info(name="Ali", age=25, city="Tehran")

توضیح: در این مثال، تابع print_user_info با استفاده از **kwargs تعریف شده و می‌تواند تعداد نامحدودی پارامتر کلید-مقدار بپذیرد. سپس این اطلاعات چاپ می‌شود.

خروجی:
name: Ali
age: 25
city: Tehran


تمرین‌ها

1. تابعی بنویسید که دو عدد را گرفته و مقدار بزرگتر را بازگرداند.


   def max_number(a, b):
if a > b:
return a
else:
return b

2. تابعی بنویسید که یک لیست از اعداد را گرفته و میانگین آنها را محاسبه و بازگرداند.


   def average(numbers):
return sum(numbers) / len(numbers)
3. تابعی بنویسید که نام و سن چند کاربر را گرفته و نام کاربرانی که سن آنها بالای ۱۸ است را چاپ کند.


   def print_adults(**kwargs):
for name, age in kwargs.items():
if age > 18:
print(name)

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

#پایتون #آموزش_پایتون #برنامه_نویسی #توابع #کدنویسی
👍1
نظرتون چیه درباره این سری آموزش؟
پارت ۷: حلقه‌ها در پایتون 🔄🐍

در این پارت، به بررسی حلقه‌ها (Loops) در پایتون می‌پردازیم. حلقه‌ها ابزارهایی قدرتمند هستند که به ما اجازه می‌دهند تا مجموعه‌ای از دستورات را چندین بار اجرا کنیم. دو نوع حلقه اصلی در پایتون وجود دارد: for و while.

۱. حلقه for

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

ساختار حلقه for

حلقه for با استفاده از یک متغیر تکرارکننده (iterator) و یک مجموعه (iterable) عمل می‌کند. برای هر عنصر در مجموعه، حلقه for بدنه حلقه را یک بار اجرا می‌کند.

for item in iterable:
# دستورات اجرایی

مثال ساده

در این مثال، عناصر یک لیست را با استفاده از حلقه for چاپ می‌کنیم:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)

توضیح: در اینجا، لیستی به نام fruits داریم که شامل سه عنصر است. حلقه for به ازای هر عنصر در این لیست، مقدار آن عنصر را چاپ می‌کند.

خروجی:
apple
banana
cherry

استفاده از range

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

for i in range(5):
print(i)

توضیح: تابع range(5) دنباله‌ای از اعداد ۰ تا ۴ ایجاد می‌کند. حلقه for این اعداد را تکرار کرده و هر عدد را چاپ می‌کند.

خروجی:
0
1
2
3
4

۲. حلقه while

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

ساختار حلقه while

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

while condition:
# دستورات اجرایی

مثال ساده

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

count = 5
while count > 0:
print(count)
count -= 1

توضیح: متغیر count با مقدار اولیه ۵ تعریف شده است. حلقه while تا زمانی که count بزرگتر از ۰ باشد، بدنه حلقه را اجرا می‌کند و مقدار count را در هر تکرار کاهش می‌دهد و چاپ می‌کند.

خروجی:
5
4
3
2
1

۳. کنترل جریان در حلقه‌ها

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

دستور break

دستور break برای خروج فوری از حلقه استفاده می‌شود.

for i in range(10):
if i == 5:
break
print(i)

توضیح: در این مثال، حلقه for اعداد ۰ تا ۹ را تکرار می‌کند. زمانی که مقدار i برابر با ۵ می‌شود، دستور break اجرا شده و حلقه متوقف می‌شود.

خروجی:
0
1
2
3
4

دستور continue

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

for i in range(10):
if i % 2 == 0:
continue
print(i)

توضیح: در این مثال، حلقه for اعداد ۰ تا ۹ را تکرار می‌کند. اگر مقدار i زوج باشد (i % 2 == 0)، دستور continue اجرا شده و باقی دستورات حلقه نادیده گرفته می‌شود و به تکرار بعدی می‌رود. در نتیجه فقط اعداد فرد چاپ می‌شوند.

خروجی:
1
3
5
7
9

۴. حلقه‌های تو در تو (Nested Loops)

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

for i in range(3):
for j in range(2):
print(f"i: {i}, j: {j}")

توضیح: در اینجا، یک حلقه for تو در تو داریم. حلقه بیرونی ۳ بار تکرار می‌شود و هر بار که حلقه بیرونی تکرار می‌شود، حلقه داخلی ۲ بار تکرار می‌شود. بنابراین مجموعاً ۶ بار بدنه حلقه داخلی اجرا می‌شود و مقادیر i و j چاپ می‌شوند.

خروجی:
i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1

تمرین‌ها

1. یک لیست از اعداد ایجاد کنید و مجموع اعداد موجود در آن لیست را با استفاده از حلقه for محاسبه کنید.


    numbers = [1, 2, 3, 4, 5]
total = 0
for number in numbers:
total += number
print("Total:", total)

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

2. از یک حلقه while استفاده کنید تا اعداد زوج بین ۱ تا ۲۰ را چاپ کنید.
num = 1
while num <= 20:
if num % 2 == 0:
print(num)
num += 1

توضیح: حلقه while تا زمانی که num کمتر یا برابر با ۲۰ باشد، اجرا می‌شود. اگر num زوج باشد، چاپ می‌شود و سپس num افزایش می‌یابد.

3. با استفاده از یک حلقه تو در تو، جدول ضرب اعداد ۱ تا ۵ را چاپ کنید.


    for i in range(1, 6):
for j in range(1, 6):
print(f"{i} * {j} = {i * j}")

توضیح: دو حلقه for تو در تو داریم که هر کدام از ۱ تا ۵ تکرار می‌شوند. در هر تکرار، حاصل ضرب i و j چاپ می‌شود و جدول ضرب ایجاد می‌شود.

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

#پایتون #آموزش_پایتون #برنامه_نویسی #حلقه #کدنویسی
👍1
آموزش گرفتن اطلاعات از دیتابیس و پردازش آنها با پایتون 🗄️🐍

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

۱. نصب و راه‌اندازی

برای استفاده از دیتابیس SQLite و کتابخانه Pandas، ابتدا باید اطمینان حاصل کنید که این کتابخانه‌ها نصب شده‌اند. برای نصب، از دستورهای زیر استفاده کنید:

pip install pandas

۲. اتصال به دیتابیس SQLite

ابتدا باید به دیتابیس SQLite متصل شویم. برای این کار از کتابخانه sqlite3 استفاده می‌کنیم.

import sqlite3

# اتصال به دیتابیس
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

توضیح: در اینجا به یک دیتابیس به نام example.db متصل می‌شویم. اگر این فایل وجود نداشته باشد، به طور خودکار ایجاد خواهد شد.

۳. ایجاد جدول و وارد کردن داده‌ها

در این مرحله، یک جدول نمونه ایجاد کرده و تعدادی داده به آن وارد می‌کنیم.

# ایجاد جدول
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

# وارد کردن داده‌ها
cursor.execute("INSERT INTO users (name, age) VALUES ('Ali', 25)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Sara', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Reza', 22)")

# ذخیره تغییرات
conn.commit()

توضیح: در اینجا جدولی به نام users با ستون‌های id، name و age ایجاد کرده‌ایم و تعدادی داده به آن اضافه کرده‌ایم.

۴. خواندن داده‌ها از دیتابیس

برای خواندن داده‌ها از دیتابیس، از دستور SELECT استفاده می‌کنیم.

# خواندن داده‌ها
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

for row in rows:
print(row)

توضیح: در اینجا تمام داده‌های جدول users را انتخاب کرده و چاپ می‌کنیم.

خروجی:
(1, 'Ali', 25)
(2, 'Sara', 30)
(3, 'Reza', 22)

۵. پردازش داده‌ها با Pandas

برای پردازش داده‌ها از کتابخانه pandas استفاده می‌کنیم. ابتدا داده‌ها را به یک DataFrame تبدیل می‌کنیم.

import pandas as pd

# تبدیل داده‌ها به DataFrame
df = pd.DataFrame(rows, columns=['id', 'name', 'age'])

print(df)

توضیح: در اینجا داده‌های خوانده شده از دیتابیس را به یک DataFrame از pandas تبدیل کرده و چاپ می‌کنیم.

خروجی:
   id  name  age
0 1 Ali 25
1 2 Sara 30
2 3 Reza 22

۶. انجام عملیات پردازش

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

# محاسبه میانگین سن
average_age = df['age'].mean()
print(f"Average age: {average_age}")

توضیح: در اینجا میانگین سن کاربران را محاسبه و چاپ می‌کنیم.

خروجی:
Average age: 25.666666666666668

۷. بستن اتصال به دیتابیس

پس از اتمام کار، باید اتصال به دیتابیس را ببندیم.

# بستن اتصال
conn.close()


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

#پایتون #آموزش_پایتون #برنامه_نویسی #دیتابیس #پردازش_داده #SQLite #Pandas
3
یه الگوریتمم شما بگید آموزش ازش بزارم
👍21
سلام دوستان! 😊 امروز می‌خوایم درباره‌ی یکی از الگوریتم‌های معروف در حوزه‌ی بهینه‌سازی و هوش مصنوعی صحبت کنیم: الگوریتم ژنتیک (Genetic Algorithm) 🌱. این الگوریتم از فرآیند تکامل طبیعی الهام گرفته شده و برای حل مسائل پیچیده و بهینه‌سازی به کار می‌ره.

🧬 الگوریتم ژنتیک چیست؟

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

📊 مفاهیم کلیدی

- کروموزوم (Chromosome): یک راه‌حل احتمالی برای مسئله.
- ژن (Gene): کوچکترین واحد اطلاعاتی در کروموزوم.
- جمعیت (Population): مجموعه‌ای از کروموزوم‌ها که در هر نسل وجود دارند.
- تابع برازش (Fitness Function): معیاری برای سنجش کیفیت هر کروموزوم. هر چقدر مقدار برازش بیشتر باشه، کروموزوم بهتر است.
- انتخاب (Selection): فرآیند انتخاب کروموزوم‌های برتر برای تولید نسل بعدی.
- تقاطع (Crossover): ترکیب دو کروموزوم برای تولید فرزندان جدید. این فرآیند باعث می‌شه تا ویژگی‌های والدین به فرزندان منتقل بشه.
- جهش (Mutation): تغییرات تصادفی در ژن‌های کروموزوم برای ایجاد تنوع و جلوگیری از گیر افتادن در بهینه‌های محلی.

🛠️ مراحل اجرای الگوریتم ژنتیک

1. ایجاد جمعیت اولیه: شروع با یک مجموعه‌ای از راه‌حل‌های احتمالی که به‌صورت تصادفی ایجاد می‌شوند. این مجموعه به عنوان جمعیت اولیه شناخته می‌شود.
2. ارزیابی برازش: هر کروموزوم در جمعیت با استفاده از تابع برازش ارزیابی می‌شود تا کیفیت آن مشخص شود.
3. انتخاب: کروموزوم‌هایی که بهترین عملکرد را دارند (برازش بیشتری دارند) انتخاب می‌شوند تا والدین نسل بعدی باشند.
4. تقاطع (Crossover): از دو کروموزوم انتخاب‌شده (والدین) برای تولید کروموزوم‌های جدید (فرزندان) استفاده می‌شود. این فرزندان ویژگی‌های ترکیبی از والدین خود را به ارث می‌برند.
5. جهش (Mutation): به‌صورت تصادفی، برخی از ژن‌های کروموزوم‌ها تغییر می‌کنند. این فرآیند باعث می‌شود تا تنوع در جمعیت حفظ شود و از گیر افتادن در بهینه‌های محلی جلوگیری شود.
6. تکرار مراحل ۲ تا ۵: مراحل ارزیابی، انتخاب، تقاطع و جهش برای چندین نسل تکرار می‌شود تا بهترین راه‌حل پیدا شود.

🎯 مزایای استفاده از الگوریتم ژنتیک

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

🏁 نتیجه‌گیری

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

#الگوریتم_ژنتیک #بهینه_سازی #آموزش #هوش_مصنوعی #برنامه_نویسی
2
پارت ۹: مدیریت فایل‌ها در پایتون 🗂️🐍

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

۱. باز کردن و بستن فایل‌ها

برای کار با فایل‌ها در پایتون از تابع open استفاده می‌کنیم. این تابع دو آرگومان اصلی دارد: نام فایل و حالت باز کردن فایل.

حالت‌های باز کردن فایل

- r: باز کردن فایل برای خواندن (پیش‌فرض)
- w: باز کردن فایل برای نوشتن (اگر فایل وجود نداشته باشد، ایجاد می‌شود؛ اگر فایل وجود داشته باشد، محتوای آن پاک می‌شود)
- a: باز کردن فایل برای اضافه کردن محتوا (اگر فایل وجود نداشته باشد، ایجاد می‌شود)
- b: باز کردن فایل در حالت باینری (برای فایل‌های غیر متنی)

باز کردن و بستن فایل
# باز کردن فایل
file = open('example.txt', 'r')

# انجام عملیات با فایل

# بستن فایل
file.close()

در اینجا فایل example.txt را برای خواندن باز کرده و سپس آن را بسته‌ایم.

** ۲. خواندن از فایل
برای خواندن محتوای فایل از متدهای read, readline و readlines استفاده می‌کنیم.**

خواندن کل محتوا با read

file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

در این مثال، تمام محتوای فایل example.txt خوانده و چاپ می‌شود.

خواندن یک خط با readline

file = open('example.txt', 'r')
line = file.readline()
print(line)
file.close()

در این مثال، فقط یک خط از فایل خوانده و چاپ می‌شود.

خواندن تمام خطوط با readlines

file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line)
file.close()

در این مثال، تمام خطوط فایل به صورت لیست خوانده و هر خط به طور جداگانه چاپ می‌شود.

** ۳. نوشتن به فایل
برای نوشتن در فایل از متد write استفاده می‌کنیم.**

نوشتن در فایل
file = open('example.txt', 'w')
file.write('Hello, World!\n')
file.write('This is a test.\n')
file.close()

در این مثال، دو خط متن به فایل example.txt نوشته می‌شود.

اضافه کردن به فایل
file = open('example.txt', 'a')
file.write('Appending a new line.\n')
file.close()

در این مثال، یک خط جدید به انتهای فایل example.txt اضافه می‌شود.

** ۴. استفاده از with برای مدیریت فایل‌ها
با استفاده از کلمه کلیدی with می‌توانیم به طور خودکار فایل را پس از اتمام عملیات ببندیم.**

استفاده از with
with open('example.txt', 'r') as file:
content = file.read()
print(content)

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

**۵. کار با فایل‌های CSV
برای کار با فایل‌های CSV از کتابخانه csv استفاده می‌کنیم.**

خواندن فایل CSV
import csv

with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)

در این مثال، فایل data.csv خوانده شده و هر ردیف آن چاپ می‌شود.

نوشتن به فایل CSV
import csv

with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age', 'City'])
writer.writerow(['Ali', 25, 'Tehran'])
writer.writerow(['Sara', 30, 'Mashhad'])

در این مثال، داده‌ها به فایل data.csv نوشته می‌شوند.

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

خواندن فایل JSON
import json

with open('data.json', 'r') as file:
data = json.load(file)
print(data)

در این مثال، فایل data.json خوانده شده و محتوای آن چاپ می‌شود.

نوشتن به فایل JSON
import json

data = {
'name': 'Ali',
'age': 25,
'city': 'Tehran'
}

with open('data.json', 'w') as file:
json.dump(data, file)

در این مثال، داده‌ها به فایل data.json نوشته می‌شوند.
__________
تمرین‌ها

1. یک فایل متنی به نام notes.txt ایجاد کنید و چند خط متن به آن اضافه کنید. سپس محتوای آن را بخوانید و چاپ کنید.


   with open('notes.txt', 'w') as file:
file.write('Line 1\n')
file.write('Line 2\n')

with open('notes.txt', 'r') as file:
content = file.read()
print(content)
2. یک فایل CSV به نام employees.csv ایجاد کنید که شامل ستون‌های Name, Age و Department باشد و چند ردیف داده به آن اضافه کنید. سپس داده‌های فایل را بخوانید و چاپ کنید.


   import csv

with open('employees.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age', 'Department'])
writer.writerow(['Ali', 25, 'IT'])
writer.writerow(['Sara', 30, 'HR'])

with open('employees.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)

3. یک فایل JSON به نام config.json ایجاد کنید که شامل تنظیمات مختلف یک برنامه باشد. سپس تنظیمات را از فایل خوانده و چاپ کنید.


   import json

config = {
'setting1': 'value1',
'setting2': 'value2',
'setting3': 'value3'
}

with open('config.json', 'w') as file:
json.dump(config, file)

with open('config.json', 'r') as file:
settings = json.load(file)
print(settings)

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

#پایتون #آموزش_پایتون #برنامه_نویسی #مدیریت_فایل #فایل_متنی #CSV #JSON
👍4
پارت ۱۰: مدیریت استثناها در پایتون 🛠️🐍

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

۱. ساختار کلی مدیریت استثناها
پایتون از بلوک‌های try, except, else و finally برای مدیریت استثناها استفاده می‌کند.

بلوک try و except

try:
# کد اصلی که ممکن است خطا ایجاد کند
x = 1 / 0
except ZeroDivisionError:
# کد مدیریت خطا
print("خطا: تقسیم بر صفر غیرمجاز است.")

در این مثال، سعی می‌کنیم عددی را بر صفر تقسیم کنیم که منجر به خطای ZeroDivisionError می‌شود. در بلوک except، این خطا را مدیریت کرده و پیام خطا را چاپ می‌کنیم.

بلوک else

try:
x = 10 / 2
except ZeroDivisionError:
print("خطا: تقسیم بر صفر غیرمجاز است.")
else:
print(f"نتیجه تقسیم: {x}")

در اینجا، اگر هیچ خطایی رخ ندهد، بلوک else اجرا می‌شود و نتیجه عملیات چاپ می‌شود.

بلوک finally

try:
x = 10 / 0
except ZeroDivisionError:
print("خطا: تقسیم بر صفر غیرمجاز است.")
finally:
print("این بلوک همیشه اجرا می‌شود.")

بلوک finally همیشه، چه خطایی رخ دهد و چه رخ ندهد، اجرا می‌شود.

۲. مدیریت چندین نوع استثنا
می‌توانیم چندین نوع استثنا را در یک بلوک except مدیریت کنیم.

try:
x = int(input("یک عدد وارد کنید: "))
y = 10 / x
except ZeroDivisionError:
print("خطا: تقسیم بر صفر غیرمجاز است.")
except ValueError:
print("خطا: لطفا یک عدد صحیح وارد کنید.")

در این مثال، هم خطای تقسیم بر صفر و هم خطای ورود داده نامعتبر مدیریت می‌شود.

۳. ایجاد استثنای سفارشی
می‌توانیم استثناهای سفارشی خود را با ایجاد یک کلاس جدید تعریف کنیم.

class MyCustomError(Exception):
pass

try:
raise MyCustomError("این یک استثنای سفارشی است.")
except MyCustomError as e:
print(e)

در اینجا، یک استثنای سفارشی به نام MyCustomError ایجاد کرده‌ایم و از آن استفاده می‌کنیم.

۴. نمونه‌های عملی
خواندن فایل و مدیریت استثناها

try:
with open('example.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("خطا: فایل یافت نشد.")
else:
print(content)
finally:
print("پایان عملیات فایل.")

در این مثال، سعی می‌کنیم یک فایل را بخوانیم و در صورت عدم وجود فایل، خطای FileNotFoundError را مدیریت می‌کنیم.

ورودی کاربر و مدیریت استثناها

try:
number = int(input("یک عدد وارد کنید: "))
result = 10 / number
except ValueError:
print("خطا: لطفا یک عدد صحیح وارد کنید.")
except ZeroDivisionError:
print("خطا: تقسیم بر صفر غیرمجاز است.")
else:
print(f"نتیجه: {result}")
finally:
print("پایان عملیات.")

در اینجا، ورود کاربر را مدیریت کرده و در صورت ورود داده نامعتبر یا تقسیم بر صفر، خطاها را مدیریت می‌کنیم.



تمرین‌ها

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


   try:
a = int(input("عدد اول را وارد کنید: "))
b = int(input("عدد دوم را وارد کنید: "))
result = a / b
except ValueError:
print("خطا: لطفا یک عدد صحیح وارد کنید.")
except ZeroDivisionError:
print("خطا: تقسیم بر صفر غیرمجاز است.")
else:
print(f"نتیجه تقسیم: {result}")
finally:
print("پایان عملیات.")

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


   try:
with open('data.txt', 'r') as file:
lines = file.readlines()
except FileNotFoundError:
print("خطا: فایل یافت نشد.")
else:
print(f"تعداد خطوط فایل: {len(lines)}")
finally:
print("پایان عملیات فایل.")

3. یک استثنای سفارشی ایجاد کنید که زمانی که کاربر سنی کمتر از ۱۸ سال وارد می‌کند، آن را مدیریت کند.
class UnderageError(Exception):
pass
try:
age = int(input("سن خود را وارد کنید: "))
if age < 18:
raise UnderageError("خطا: شما زیر ۱۸ سال هستید.")
except ValueError:
print("خطا: لطفا یک عدد صحیح وارد کنید.")
except UnderageError as e:
print(e)
finally:
print("پایان بررسی سن.")



🔗لینک کانال ما 👇
(https://t.iss.one/hamidpython123)

#پایتون #آموزش_پایتون #برنامه_نویسی #مدیریت_استثنا #مدیریت_خطا #Exception_Handling
👍4
📝 نکته‌ای که شاید ندانید: استفاده از Memory-Mapped Files در پایتون

Memory-Mapped Files یا فایل‌های نگاشت شده به حافظه، یک تکنیک پیشرفته برای دسترسی به محتوای فایل‌ها است که به شما اجازه می‌دهد تا به بخش‌های مختلف یک فایل بزرگ بدون نیاز به خواندن کل آن، دسترسی پیدا کنید. این تکنیک می‌تواند در بهینه‌سازی عملکرد و کاهش مصرف حافظه موثر باشد.

پایتون با استفاده از ماژول mmap این قابلیت را فراهم می‌کند. در اینجا یک مثال ساده برای استفاده از mmap آورده شده است:

💻 مثال: خواندن و نوشتن در فایل با استفاده از Memory-Mapped Files

import mmap

# باز کردن فایل 📂
with open("example.txt", "r+b") as f:
# ایجاد یک memory-map به اندازه کل فایل 📜
mm = mmap.mmap(f.fileno(), 0)

# خواندن اولین خط فایل 📖
first_line = mm.readline()
print("First Line:", first_line.decode('utf-8'))

# جایگزینی محتوای خاص در فایل ✏️
mm.seek(0) # برگشت به ابتدای فایل
mm.write(b'New content that replaces old content\n')

# بستن memory-map 🗄️
mm.close()

توضیح:
1. باز کردن فایل: ابتدا فایل را در حالت خواندن و نوشتن باینری باز می‌کنیم (r+b). 📂
2. ایجاد memory-map: یک mmap ایجاد می‌کنیم که به کل فایل نگاشت می‌شود. 📜
3. خواندن از فایل: می‌توانیم مانند یک فایل عادی از mmap بخوانیم. 📖
4. نوشتن در فایل: می‌توانیم محتوای فایل را تغییر دهیم بدون نیاز به بارگذاری کل فایل در حافظه. ✏️
5. بستن memory-map: پس از انجام عملیات، memory-map را می‌بندیم. 🗄️

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

💡 نکته خیلی خیلی مهم: استفاده از memory-mapped files می‌تواند به شدت به بهبود عملکرد و کارایی برنامه‌های شما در مواقعی که نیاز به دسترسی سریع به بخش‌های خاصی از فایل دارید، کمک کند. 🚀

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

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

#پایتون #برنامه_نویسی #فایل_ها #بهینه_سازی #حافظه
👍5
👍5
ساخت یک مفسر ساده در پایتون 🚀

مرحله ۱: تعریف زبان برنامه‌نویسی 📜

ابتدا باید قواعد و دستورات زبان برنامه‌نویسی خودتون رو تعریف کنید. برای این آموزش، ما یک زبان ساده به نام "MiniLang" با دستورات پایه‌ای تعریف می‌کنیم:

1. دستور PRINT برای چاپ متن.
2. دستور SET برای تعریف متغیرها.
3. دستور ADD برای جمع کردن مقادیر.

مرحله ۲: نوشتن Lexer 🔍

Lexer یا تجزیه‌کننده لغوی، متن برنامه را به توکن‌ها (قطعات کوچکتر) تقسیم می‌کند.

import re

def lexer(code):
tokens = []
for line in code.splitlines():
line = line.strip()
if line:
if line.startswith("PRINT"):
tokens.append(("PRINT", line[6:]))
elif line.startswith("SET"):
match = re.match(r"SET (\w+) (.+)", line)
if match:
tokens.append(("SET", match.group(1), match.group(2)))
elif line.startswith("ADD"):
match = re.match(r"ADD (\w+) (\w+)", line)
if match:
tokens.append(("ADD", match.group(1), match.group(2)))
return tokens

مرحله ۳: نوشتن Parser 🔍

Parser یا تجزیه‌کننده نحوی، توکن‌ها را به دستورات قابل اجرا تبدیل می‌کند.

def parser(tokens):
commands = []
for token in tokens:
if token[0] == "PRINT":
commands.append(("PRINT", token[1]))
elif token[0] == "SET":
commands.append(("SET", token[1], token[2]))
elif token[0] == "ADD":
commands.append(("ADD", token[1], token[2]))
return commands

مرحله ۴: اجرای دستورات 🏃‍♂️

Interpreter یا مفسر، دستورات را اجرا می‌کند.

def interpreter(commands):
variables = {}
for command in commands:
if command[0] == "PRINT":
print(command[1])
elif command[0] == "SET":
variables[command[1]] = eval(command[2], {}, variables)
elif command[0] == "ADD":
if command[1] in variables and command[2] in variables:
variables[command[1]] += variables[command[2]]
return variables

مرحله ۵: استفاده از مفسر 📟

حالا کد کامل برای مفسر خودمون رو داریم. می‌تونیم یک برنامه MiniLang رو اجرا کنیم.

code = """
SET x 5
SET y 10
ADD x y
PRINT x
"""

tokens = lexer(code)
commands = parser(tokens)
interpreter(commands)

این کد مقدار ۱۵ را چاپ خواهد کرد چون ابتدا مقدار ۵ به متغیر x و مقدار ۱۰ به متغیر y اختصاص داده شده و سپس این دو مقدار با هم جمع شده و نتیجه چاپ می‌شود.

[آموزش ساخت مفسر]

#Python #Programming #CodingTips #LearnPython #Interpreter #MiniLang
👍2
👇نمونش کامل 👇

import re

# Lexer: تبدیل کد به توکن‌ها
def lexer(code):
tokens = []
for line in code.splitlines():
line = line.strip()
if line:
if line.startswith("PRINT"):
tokens.append(("PRINT", line[6:]))
elif line.startswith("SET"):
match = re.match(r"SET (\w+) (.+)", line)
if match:
tokens.append(("SET", match.group(1), match.group(2)))
elif line.startswith("ADD"):
match = re.match(r"ADD (\w+) (\w+)", line)
if match:
tokens.append(("ADD", match.group(1), match.group(2)))
return tokens

# Parser: تبدیل توکن‌ها به دستورات قابل اجرا
def parser(tokens):
commands = []
for token in tokens:
if token[0] == "PRINT":
commands.append(("PRINT", token[1]))
elif token[0] == "SET":
commands.append(("SET", token[1], token[2]))
elif token[0] == "ADD":
commands.append(("ADD", token[1], token[2]))
return commands

# Interpreter: اجرای دستورات
def interpreter(commands):
variables = {}
for command in commands:
if command[0] == "PRINT":
if command[1] in variables:
print(variables[command[1]])
else:
print(command[1])
elif command[0] == "SET":
variables[command[1]] = eval(command[2], {}, variables)
elif command[0] == "ADD":
if command[1] in variables and command[2] in variables:
variables[command[1]] += variables[command[2]]
return variables

# کد نمونه MiniLang
code = """
SET x 5
SET y 10
ADD x y
PRINT x
"""

# اجرای مراحل Lexer، Parser و Interpreter
tokens = lexer(code)
commands = parser(tokens)
interpreter(commands)
👍6
آقا سه ری اکشن بزنین ادن روحیه فعالیت بگیره خو
👍63
🔴اینو جواب بدید دیگه خدایش میخام برای منظم شدن چنل
Anonymous Poll
76%
تازه کار هستم 🥺
24%
کهنه کار و حرفه ای🤫😏
سلام دوستان ❤️
ادمین جدید هستم
امیدوارم از من خوشتون بیاد 😅

قراره چالش ها و دانستنی های زیادی درباره پایتون داشته باشیم✔️

ری‌اکشن بیشتر = حمایت از ما ❤️
👇
5👍2