☑️ ویژگیهای اصلی:
1. افزودن تراکنش: کاربران میتوانند یک تراکنش جدید را با مشخص کردن دستهبندی (مثلاً غذا، حقوق، اجاره)، نوع (درآمد/هزینه)، مقدار و تاریخ اضافه کنند.
2. مشاهده تراکنشها: کاربران میتوانند تمام تراکنشهای ثبتشده را در قالب جدول مشاهده کنند.
3. تولید گزارش: برنامه یک نمودار دایرهای ایجاد میکند که توزیع درآمدها و هزینهها را نشان میدهد.
4. خروج: کاربران میتوانند از برنامه خارج شوند.
---
☑️ توضیحات کد:
1. ساختار دادهها:
- یک
-
-
-
-
2. افزودن تراکنش:
- تابع
3. مشاهده تراکنشها:
- تابع
4. تولید گزارش:
- تابع
5. منوی اصلی:
- یک حلقه
---
☑️ نحوه استفاده:
1. برنامه را اجرا کنید.
2. از منوی اصلی، گزینههای زیر را انتخاب کنید:
- 1: برای افزودن تراکنش جدید.
- 2: برای مشاهده تمام تراکنشها.
- 3: برای تولید گزارش تصویری.
- 4: برای خروج از برنامه.
---
مثال خروجی:
- پس از افزودن چند تراکنش، میتوانید تراکنشها را مشاهده کنید:
- گزارش تصویری یک نمودار دایرهای است که درصد درآمدها و هزینهها را نشان میدهد.
---
🔘 این برنامه بهراحتی قابل توسعه است و میتوان ویژگیهایی مانند ذخیره دادهها در فایل، اضافه کردن دستهبندیهای بیشتر، یا محاسبه موجودی کلی را به آن اضافه کرد.
1. افزودن تراکنش: کاربران میتوانند یک تراکنش جدید را با مشخص کردن دستهبندی (مثلاً غذا، حقوق، اجاره)، نوع (درآمد/هزینه)، مقدار و تاریخ اضافه کنند.
2. مشاهده تراکنشها: کاربران میتوانند تمام تراکنشهای ثبتشده را در قالب جدول مشاهده کنند.
3. تولید گزارش: برنامه یک نمودار دایرهای ایجاد میکند که توزیع درآمدها و هزینهها را نشان میدهد.
4. خروج: کاربران میتوانند از برنامه خارج شوند.
---
☑️ توضیحات کد:
1. ساختار دادهها:
- یک
DataFrame از کتابخانه pandas برای ذخیره اطلاعات مالی استفاده میشود. این DataFrame شامل ستونهای زیر است:-
Category: دستهبندی تراکنش (مثلاً غذا، حقوق، اجاره).-
Type: نوع تراکنش (درآمد یا هزینه).-
Amount: مقدار تراکنش.-
Date: تاریخ تراکنش.2. افزودن تراکنش:
- تابع
add_transaction یک تراکنش جدید را به DataFrame اضافه میکند. این تابع مقادیر ورودی کاربر را دریافت کرده و آنها را به DataFrame اضافه میکند.3. مشاهده تراکنشها:
- تابع
view_summary تمام تراکنشهای ثبتشده را در قالب جدول نمایش میدهد. اگر هیچ تراکنشی ثبت نشده باشد، پیامی مناسب نمایش داده میشود.4. تولید گزارش:
- تابع
generate_report یک نمودار دایرهای ایجاد میکند که درصد درآمدها و هزینهها را نشان میدهد. اگر هیچ تراکنشی ثبت نشده باشد، پیامی مناسب نمایش داده میشود.5. منوی اصلی:
- یک حلقه
while بینهایت وجود دارد که منوی اصلی را نمایش میدهد و بر اساس انتخاب کاربر، عملیات مناسب را انجام میدهد.---
☑️ نحوه استفاده:
1. برنامه را اجرا کنید.
2. از منوی اصلی، گزینههای زیر را انتخاب کنید:
- 1: برای افزودن تراکنش جدید.
- 2: برای مشاهده تمام تراکنشها.
- 3: برای تولید گزارش تصویری.
- 4: برای خروج از برنامه.
---
مثال خروجی:
- پس از افزودن چند تراکنش، میتوانید تراکنشها را مشاهده کنید:
Summary of Transactions:
Category Type Amount Date
0 Food Expense 50.00 2025-03-19
1 Salary Income 2000.00 2025-03-19
- گزارش تصویری یک نمودار دایرهای است که درصد درآمدها و هزینهها را نشان میدهد.
---
🔘 این برنامه بهراحتی قابل توسعه است و میتوان ویژگیهایی مانند ذخیره دادهها در فایل، اضافه کردن دستهبندیهای بیشتر، یا محاسبه موجودی کلی را به آن اضافه کرد.
import pandas as pd
import matplotlib.pyplot as plt
# تعریف DataFrame برای ذخیره اطلاعات مالی
data = {
'Category': [],
'Type': [], # Income or Expense
'Amount': [],
'Date': []
}
df = pd.DataFrame(data)
def add_transaction(category, t_type, amount, date):
global df
new_transaction = {'Category': category, 'Type': t_type, 'Amount': amount, 'Date': date}
df = pd.concat([df, pd.DataFrame([new_transaction])], ignore_index=True)
print("Transaction added successfully!")
def view_summary():
if df.empty:
print("No transactions recorded.")
return
print("\nSummary of Transactions:")
print(df)
def generate_report():
if df.empty:
print("No transactions recorded to generate a report.")
return
# گروهبندی دادهها بر اساس نوع (درآمد و هزینه)
summary = df.groupby('Type')['Amount'].sum()
# رسم نمودار دایرهای
plt.figure(figsize=(6, 6))
summary.plot(kind='pie', autopct='%1.1f%%', startangle=90, labels=summary.index, colors=['#8BC34A', '#F44336'])
plt.title('Income vs Expense')
plt.ylabel('')
plt.show()
# منوی اصلی
while True:
print("\nPersonal Finance Manager")
print("1. Add Transaction")
print("2. View Transactions")
print("3. Generate Report")
print("4. Exit")
choice = input("Choose an option: ")
if choice == "1":
category = input("Enter category (e.g., Food, Salary, Rent): ")
t_type = input("Enter type (Income/Expense): ")
amount = float(input("Enter amount: "))
date = input("Enter date (YYYY-MM-DD): ")
add_transaction(category, t_type, amount, date)
elif choice == "2":
view_summary()
elif choice == "3":
generate_report()
elif choice == "4":
print("Exiting program. Have a great day!")
break
else:
print("Invalid choice. Please try again.")
Forwarded from برنامه نویسی | Teachify (YOUSEF)
✔️ تشخیص عدد زوج در پایتون با یک روش سریعتر!
در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده میکنیم:
اما یک روش جالبتر و بهینهتر هم وجود دارد که از عملیات بیتی استفاده میکند:
در این روش، عملگر
این روش در بسیاری از زبانهای برنامهنویسی مثل پایتون، C، C++، جاوا و Go کار میکند. چون عملیات بیتی ذاتاً سبکتر از مدولوس
#پایتون #Python
✅ @Teachify | برنامه نویسی
در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده میکنیم:
if num % 2 == 0:
اما یک روش جالبتر و بهینهتر هم وجود دارد که از عملیات بیتی استفاده میکند:
if (num & 1) == 0:
در این روش، عملگر
& آخرین بیت عدد را بررسی میکند. در نمایش باینری، اعداد زوج همیشه آخرین بیتشان 0 است، بنابراین نتیجهی این بررسی 0 میشود و تشخیص عدد زوج بهسادگی انجام میگیرد. این روش در بسیاری از زبانهای برنامهنویسی مثل پایتون، C، C++، جاوا و Go کار میکند. چون عملیات بیتی ذاتاً سبکتر از مدولوس
% است، در برخی زبانها عملکرد سریعتری دارد. #پایتون #Python
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ معکوس کردن یک رشته در پایتون با روشی نوآورانه!
برای معکوس کردن یک رشته در پایتون، معمولاً از حلقهها یا متدهای خاص استفاده میکنیم:
اما یک روش سادهتر و سریعتر وجود دارد که میتواند کار ما را بهراحتی انجام دهد:
در اینجا، با استفاده از اسلایسینگ (slicing) میتوانیم رشته را بهسادگی از انتها به ابتدا بخوانیم. با قرار دادن
این روش نه تنها خواناتر است، بلکه بهطور قابل توجهی کارایی بالاتری دارد و میتواند در بیشتر سناریوها بهراحتی استفاده شود.
#pythonMagic | learnpythonicy | آموزش پایتون
برای معکوس کردن یک رشته در پایتون، معمولاً از حلقهها یا متدهای خاص استفاده میکنیم:
reversed_string = ""
for char in my_string:
reversed_string = char + reversed_string
اما یک روش سادهتر و سریعتر وجود دارد که میتواند کار ما را بهراحتی انجام دهد:
reversed_string = my_string[::-1]
در اینجا، با استفاده از اسلایسینگ (slicing) میتوانیم رشته را بهسادگی از انتها به ابتدا بخوانیم. با قرار دادن
::-1 در انتهای رشته، به پایتون میگوییم که هر کاراکتر را با گام منفی یک انتخاب کند و بدین ترتیب رشته را معکوس میکند.این روش نه تنها خواناتر است، بلکه بهطور قابل توجهی کارایی بالاتری دارد و میتواند در بیشتر سناریوها بهراحتی استفاده شود.
#pythonMagic | learnpythonicy | آموزش پایتون
🔥 محاسبه فاکتوریل در پایتون با ۳ روش مختلف!
برای محاسبه فاکتوریل (n!) در پایتون، میتوانید از این روشها استفاده کنید:
1. روش کلاسیک با حلقه:
2. روش بازگشتی (Recursive):
3. روش یکخطی با
#pythonMagic | @learnpythonicy | آموزش پایتون
برای محاسبه فاکتوریل (n!) در پایتون، میتوانید از این روشها استفاده کنید:
1. روش کلاسیک با حلقه:
factorial = 1
for i in range(1, n+1):
factorial *= i
2. روش بازگشتی (Recursive):
def factorial(n):
return 1 if n == 0 else n * factorial(n-1)
3. روش یکخطی با
math (بهینه و سریع!): from math import factorial
result = factorial(n)
#pythonMagic | @learnpythonicy | آموزش پایتون
LEARN PYTHON 3
THE HARD WAY.pdf
THE HARD WAY.pdf
5.9 MB
📚 «Learn Python 3 the Hard Way»
📚 کتاب "یادگیری پایتون ۳ به روش سخت"
✅ آیا میخواهید پایتون را بهصورت عملی و گامبهگام یاد بگیرید؟
✅ این کتاب با روشی متفاوت و تمرینمحور، شما را وادار میکند تا کد بنویسید، اشتباه کنید و از خطاها یاد بگیرید. برخلاف روشهای معمول، اینجا قرار نیست فقط بخوانید، بلکه باید کدنویسی کنید تا واقعاً پایتون را درک کنید!
#معرفی_کتاب | #بوک_تایم | آموزش پایتون
📚 کتاب "یادگیری پایتون ۳ به روش سخت"
✅ آیا میخواهید پایتون را بهصورت عملی و گامبهگام یاد بگیرید؟
✅ این کتاب با روشی متفاوت و تمرینمحور، شما را وادار میکند تا کد بنویسید، اشتباه کنید و از خطاها یاد بگیرید. برخلاف روشهای معمول، اینجا قرار نیست فقط بخوانید، بلکه باید کدنویسی کنید تا واقعاً پایتون را درک کنید!
خلاصهای از کتاب:
- آموزش پایتون ۳ از پایه تا پیشرفته
- شامل ۵۲ تمرین عملی برای تسلط بر مفاهیم
- تاکید بر یادگیری از طریق تکرار و اصلاح خطاها
- پوشش مباحثی مثل توابع، شیءگرایی، مدیریت فایلها، و دیباگ کردن
#معرفی_کتاب | #بوک_تایم | آموزش پایتون
چگونه یک لیست را در پایتون به سرعت مرتب کنیم؟ 🚀
وقتی تازهکارها با نیاز به مرتب سازی یک لیست مواجه میشوند، ممکن است به فکر پیادهسازی الگوریتمهای دستی بیفتند. اما پایتون با متدهای داخلی خود، این کار را در یک خط کد انجام میدهد!
✨ روش سریع با
🎯 تفاوتها:
✅ دستور
✅ دستور
✅ هر دو برای اعداد، رشتهها و دادههای سفارشی (با
🟢 @learnpythonicy | #sort | #sorted
وقتی تازهکارها با نیاز به مرتب سازی یک لیست مواجه میشوند، ممکن است به فکر پیادهسازی الگوریتمهای دستی بیفتند. اما پایتون با متدهای داخلی خود، این کار را در یک خط کد انجام میدهد!
✨ روش سریع با
sorted() و .sort() numbers = [3, 1, 4, 1, 5, 9, 2]
# روش ۱: ایجاد لیست جدید (با sorted)
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 1, 2, 3, 4, 5, 9]
# روش ۲: مرتبسازی درجا (با .sort)
numbers.sort()
print(numbers) # [1, 1, 2, 3, 4, 5, 9]
🎯 تفاوتها:
✅ دستور
sorted() لیست جدیدی برمیگرداند. ✅ دستور
.sort() لیست اصلی را تغییر میدهد (درجا). ✅ هر دو برای اعداد، رشتهها و دادههای سفارشی (با
key=) کار میکنند!🟢 @learnpythonicy | #sort | #sorted
👍2
چگونه یک دیکشنری را در پایتون به سرعت وارونه کنیم؟ (جابجایی کلیدها و مقادیر) 🔄
✨ روش سریع با Dictionary Comprehension
⚠️ نکته مهم:
- این روش فقط زمانی کار میکند که مقادیر دیکشنری منحصربهفرد باشند (در غیر این صورت، مقادیر تکراری بازنویسی میشوند!).
- اگر مقادیر تکراری دارید، از روش های دیگر مانند
🎯 روش
#dict | @learnpythonicy | #بدانیم
✨ روش سریع با Dictionary Comprehension
original_dict = {"a": 1, "b": 2, "c": 3}
# وارونه کردن دیکشنری (مقادیر → کلید، کلیدها → مقدار)
reversed_dict = {value: key for key, value in original_dict.items()}
print(reversed_dict) # {1: 'a', 2: 'b', 3: 'c'}⚠️ نکته مهم:
- این روش فقط زمانی کار میکند که مقادیر دیکشنری منحصربهفرد باشند (در غیر این صورت، مقادیر تکراری بازنویسی میشوند!).
- اگر مقادیر تکراری دارید، از روش های دیگر مانند
defaultdict استفاده کنید. 🎯 روش
defaultdict (مناسب برای مقادیر تکراری): from collections import defaultdict
original_dict = {"a": 1, "b": 2, "c": 2, "d": 3}
reversed_dict = defaultdict(list)
for key, value in original_dict.items():
reversed_dict[value].append(key) # ذخیره لیستی از کلیدها برای مقادیر تکراری
print(dict(reversed_dict)) # {1: ['a'], 2: ['b', 'c'], 3: ['d']}
#dict | @learnpythonicy | #بدانیم
👍2
🔥 جدیدترین دستیار هوشمند تلگرام برای جستجوی پیشرفته!
ربات رسمی Perplexity هم اکنون در تلگرام!
- هر سوالی داری بپرس، جواب دقیق با منابع معتبر میگیری 🔍
- قابلیت سرچ Pro هم فعاله (برای پاسخهای حرفهایتر)
- تو گروهها هم کار میکنه! کافیه @askplexbot رو منشن کنی
- حتی از عکسها هم میتونه اطلاعات استخراج کنه 📸
🚀 ویژگیهای ویژه:
• پاسخهای فوری و مستند
• پشتیبانی از جستجوی زنده (Real-time)
• رابط کاربری ساده و سریع
🔗 لینک ربات:
@askplexbot | https://t.me/askplexbot
💬 حالا دیگه هر سوالی داری، همون لحظه توی تلگرام جوابش رو بگیر!
آزمایشش کردی؟ نظرت چیه؟
Learnpythonicy | #ai | #bot #news
ربات رسمی Perplexity هم اکنون در تلگرام!
- هر سوالی داری بپرس، جواب دقیق با منابع معتبر میگیری 🔍
- قابلیت سرچ Pro هم فعاله (برای پاسخهای حرفهایتر)
- تو گروهها هم کار میکنه! کافیه @askplexbot رو منشن کنی
- حتی از عکسها هم میتونه اطلاعات استخراج کنه 📸
🚀 ویژگیهای ویژه:
• پاسخهای فوری و مستند
• پشتیبانی از جستجوی زنده (Real-time)
• رابط کاربری ساده و سریع
🔗 لینک ربات:
@askplexbot | https://t.me/askplexbot
💬 حالا دیگه هر سوالی داری، همون لحظه توی تلگرام جوابش رو بگیر!
آزمایشش کردی؟ نظرت چیه؟
Learnpythonicy | #ai | #bot #news
🔆 استفاده از تابع
برای ترکیب دو لیست بهطوریکه هر عنصر از لیست اول با عنصر معادل خود در لیست دوم جفت شود، معمولاً از حلقهها استفاده میکنیم:
اما پایتون یک روش سادهتر و بهینهتر به نام تابع
در اینجا، تابع
این روش نه تنها کد را تمیز و مختصر میکند، بلکه باعث افزایش کارایی نیز میشود. همچنین، میتوانیم از تابع
این قابلیتهای جذاب
#zip | @learnpythonicy
zip() برای ترکیب لیستها در پایتون!برای ترکیب دو لیست بهطوریکه هر عنصر از لیست اول با عنصر معادل خود در لیست دوم جفت شود، معمولاً از حلقهها استفاده میکنیم:
combined = []
for i in range(len(list1)):
combined.append((list1[i], list2[i]))
اما پایتون یک روش سادهتر و بهینهتر به نام تابع
zip() ارائه میدهد که این کار را به آسانی انجام میدهد: combined = list(zip(list1, list2))
در اینجا، تابع
zip() به صورت جفتی عناصر دو لیست را ترکیب میکند و نتیجه را بهصورت یک لیست از tupleها برمیگرداند. به عنوان مثال، اگر list1 = [1, 2, 3] و list2 = ['a', 'b', 'c'] باشد، خروجی combined به صورت زیر خواهد بود: [(1, 'a'), (2, 'b'), (3, 'c')]
این روش نه تنها کد را تمیز و مختصر میکند، بلکه باعث افزایش کارایی نیز میشود. همچنین، میتوانیم از تابع
zip() برای ترکیب چند لیست بهطور همزمان استفاده کنیم: combined = list(zip(list1, list2, list3))
این قابلیتهای جذاب
zip() میتواند به شما کمک کند تا دستکاریهای مختلفی روی لیستها و دادهها انجام دهید!#zip | @learnpythonicy
☀️ یکی از ماژولهای جدید و جذاب پایتون، graphlib است که در پایتون ۳.۹ معرفی شد. این ماژول برای انجام توپولوژیکال سورت (مرتبسازی توپولوژیکی) روی گرافهای بدون دور (DAG) بسیار مفید است.
مثال کاربردی
خروجی مثال:
✔️ مزایای graphlib
سبک و سریع: پیادهسازی بهینهشده در خود پایتون
خطایابی آسان اگر گراف دور داشته باشد به خوبی تشخیص میده
انعطافپذیر: هم با دیکشنری و هم با گرافهای دیگر کار میکند
#graphlib | آموزش پایتون
مثال کاربردی
graphlib برای زمانبندی کارها:from graphlib import TopologicalSorter
# تعریف گراف کارها و وابستگیها
tasks = {
'پوشیدن کفش': {'پوشیدن جوراب'},
'پوشیدن جوراب': {'لباس پوشیدن'},
'لباس پوشیدن': {'دوش گرفتن'},
'دوش گرفتن': set(),
'خوردن صبحانه': {'مسواک زدن'},
'مسواک زدن': {'بیدار شدن'},
'بیدار شدن': set()
}
# ایجاد یک مرتبساز توپولوژیک
ts = TopologicalSorter(tasks)
# انجام مرتبسازی و چاپ ترتیب صحیح کارها
print("ترتیب بهینه انجام کارها:")
for task in ts.static_order():
print(f"→ {task}")
خروجی مثال:
ترتیب بهینه انجام کارها:
→ بیدار شدن
→ دوش گرفتن
→ لباس پوشیدن
→ پوشیدن جوراب
→ پوشیدن کفش
→ مسواک زدن
→ خوردن صبحانه
✔️ مزایای graphlib
سبک و سریع: پیادهسازی بهینهشده در خود پایتون
خطایابی آسان اگر گراف دور داشته باشد به خوبی تشخیص میده
انعطافپذیر: هم با دیکشنری و هم با گرافهای دیگر کار میکند
#graphlib | آموزش پایتون