
۱۰ ایده پروژه پایتون برای مبتدیان + نمونه کد و آموزش رایگان
۱۰ ایده جذاب پروژه پایتون برای افراد مبتدی + نمونه کد و راهنمای کامل
۱۰ ایده پروژه پایتون برای مبتدیان
پایتون (Python) یکی از محبوبترین زبانهای برنامهنویسی دنیاست.سادگی، انعطافپذیری و کاربرد گستردهی آن باعث شده بسیاری از برنامهنویسان تازهکاریادگیری آن را آغاز کنند.اما بعد از یادگیری مبانی پایتون، یک سوال مهم پیش میآید:
چه پروژههایی میتوانم با پایتون انجام دهم؟
برای پاسخ به این سوال، در این مقاله ۱۰ ایده پروژه پایتون برای افراد مبتدی را با جزئیات کامل و نمونه کد معرفی میکنیم.
این پروژهها کمک میکنند:
✅ مهارتهای تئوری خود را به عمل تبدیل کنید
✅ با چالشهای واقعی روبهرو شوید
✅ رزومه خود را تقویت کنید
✅ برای بازار کار آماده شوید
اگر هنوز با پایتون آشنا نیستید، میتوانید از دوره آموزش پایتون مقدماتی تا پیشرفته ما استفاده کنید.
فهرست مطالب
1️⃣ شبیهساز پرتاب تاس (Dice Rolling Simulator)
2️⃣ بررسی دما (Temperature Checker)
3️⃣ بررسی پالیندروم (Palindrome Checker)
4️⃣ ویرایشگر متن (Text Editor)
5️⃣ مبدل ارز (Currency Converter)
6️⃣ بازی Hangman
7️⃣ماشین حساب (Calculator)
8️⃣ پیشبینی آب و هوا (Weather Forecaster)
9️⃣ بازی حدس عدد (Guess the Number Game)
🔟 دفترچه مخاطبین (Contact Book)
شبیهساز پرتاب تاس (Dice Rolling Simulator)
معرفی پروژه
در این پروژه، یک برنامه میسازید که هر بار کاربر دکمه یا کلیدی را فشار دهد، شبیهسازی پرتاب تاس انجام شود و عدد تصادفی از ۱ تا ۶ نمایش داده شود — دقیقاً مانند پرتاب یک تاس واقعی.همچنین میتوانید با توسعهی این پروژه، آن را به یک شبیهساز بازیهای تختهای تبدیل کنید.
مراحل انجام پروژه
دریافت ورودی از کاربر برای شروع یا تکرار پرتاب تاستولید یک عدد تصادفی بین ۱ تا ۶
نمایش نتیجه پرتاب به کاربر
تکرار فرآیند در صورت تمایل کاربر
خاتمهی برنامه در صورت انتخاب کاربر
نکات یادگیری
ورودی/خروجی (I/O): تعامل ساده با کاربرحلقهها (Loops): پیادهسازی روند تکرار پرتاب تاس
ساختار شرطی (if-else): مدیریت تصمیمهای کاربر
مقدمات طراحی بازیهای کوچک: درک سادهی منطق یک شبیهساز بازی
چرا این پروژه مهم است؟
تقویت مهارت در ساختارهای تکراری و شرطییادگیری نحوهی طراحی برنامههای تعاملی با کاربر
آمادهسازی برای ساخت بازیهای کوچک در آینده
پروژهای جذاب برای رزومه به عنوان نمونهی کاربردی ابتدایی
شبیهساز پرتاب تاس (Dice Rolling Simulator) یکی از پروژههای ساده اما بسیار کاربردی برای شروع برنامهنویسی با پایتون است.
این پروژه یک تمرین عالی برای یادگیری اعداد تصادفی، ورودی/خروجی ساده و ساختارهای کنترلی است.
نمایش یک پیام خوشامد به کاربر
تولید اعداد تصادفی (Random Numbers): آشنایی با کتابخانهی random
تمرین عالی برای کار با اعداد تصادفی
این بخش شامل یک شبیهساز پرتاب تاس ساده در پایتون است. با اجرای این برنامه، در هر بار اجرا یا با زدن یک دکمه، یک عدد تصادفی شبیهسازیشده از پرتاب تاس نمایش داده میشود.
این بخش شامل یک شبیهساز پرتاب تاس ساده در پایتون است. با اجرای این برنامه، در هر بار اجرا یا با زدن یک دکمه، یک عدد تصادفی شبیهسازیشده از پرتاب تاس نمایش داده میشود.
import random
def roll_dice():
# تولید عدد تصادفی بین 1 تا 6
return random.randint(1, 6)
def main():
print("🎲 به شبیهساز پرتاب تاس خوش آمدید! 🎲")
while True:
user_input = input("\nبرای پرتاب تاس Enter را بزنید (برای خروج q را تایپ کنید): ")
if user_input.lower() == 'q':
print("خروج از برنامه. موفق باشید! 👋")
break
else:
result = roll_dice()
print(f"🎲 عدد تاس: {result}")
if __name__ == "__main__":
main()
توضیحات کد:
ماژول random
برای تولید عدد تصادفی استفاده شده.
تابع roll_dice()
عدد تصادفی بین ۱ تا ۶ تولید میکند.
در main()
یک حلقهی while
داریم که تا زمانی که کاربر q
نزند ادامه مییابد.
کاربر با زدن Enter یک پرتاب جدید انجام میدهد.
برنامه در هر بار پرتاب، عدد تاس را چاپ میکند.
مزیت این نسخه:
معرفی پروژه ماشین حساب (Calculator)
در این پروژه، شما یک برنامه خط فرمان مینویسید که عملیاتهای پایه ریاضی مانند جمع، تفریق، ضرب و تقسیم را انجام میدهد.
مراحل انجام پروژه ماشین حساب
سپس از کاربر میخواهیم که یک عملگر ریاضی (مانند +
، -
، *
، /
) وارد کند.
برنامه با توجه به عملگر، عملیات مربوطه را انجام داده و نتیجه را نمایش میدهد.
در صورتی که کاربر عملگر نامعتبری وارد کند، برنامه باید پیغام مناسب نمایش دهد.
برای جلوگیری از بروز خطا، باید تقسیم بر صفر را نیز مدیریت کنیم.
نکات یادگیری پروژه ماشین حساب
ورودی/خروجی (I/O): نحوه گرفتن داده از کاربر (input
) و چاپ خروجی (print
) را تمرین میکنیم.
شرطها (if-else): با کمک شرطها تصمیم میگیریم که کدام عملیات باید انجام شود.
مدیریت خطا (Exception Handling): با استفاده از مدیریت خطا میتوانیم از بروز مشکلاتی مثل تقسیم بر صفر جلوگیری کنیم و برنامه پایدار بنویسیم.
چرا این پروژه ماشین حساب مهم است؟
برای پاسخ به این سوال، در این مقاله ۱۰ ایده پروژه پایتون برای افراد مبتدی را با جزئیات کامل و نمونه کد معرفی میکنیم.یکی از بهترین پروژههای ابتدایی برای تمرین پایتون، ساخت یک ماشین حساب ساده است.در نگاه اول این پروژه ساده به نظر میرسد، اما در عمل به شما کمک میکند با چندین مفهوم کلیدی در برنامهنویسی پایتون آشنا شوید. از جمله ساخت توابع، دریافت ورودی از کاربر، استفاده از ساختارهای شرطی و همچنین مدیریت خطاها.
ساخت یک ماشین حساب به عنوان اولین پروژه واقعی حس خوبی به شما میدهد؛ چون در نهایت یک برنامه کاربردی خواهید داشت که واقعاً میتوانید از آن استفاده کنید. علاوه بر این، این پروژه سنگ بنای بسیار خوبی برای یادگیری مفاهیم پیشرفتهتر در آینده است.
ابتدا از کاربر میخواهیم که دو عدد وارد کند.
توابع (Functions): برای سازماندهی کد بهتر است از توابع استفاده کنیم؛ مثلاً یک تابع مخصوص انجام عملیات ریاضی بنویسیم.
شما را با مفاهیم بنیادی پایتون آشنا میکند.
تمرینی عالی برای مدیریت ورودی کاربر است.
باعث میشود که منطق برنامهنویسی خود را تقویت کنید.
تجربهی کار با خطاهای رایج در برنامهها را به شما میدهد.
یک پروژه کوچک ولی کاملاً کاربردی و قابل استفاده است.
در ادامه یک نمونه کد ساده برای ساخت ماشین حساب در پایتون مشاهده میکنید. این ماشین حساب با استفاده از توابع و ساختارهای شرطی نوشته شده و قابلیت انجام عملیات جمع، تفریق، ضرب و تقسیم را دارد.
def calculator(a, b, operator):
if operator == '+':
return a + b
elif operator == '-':
return a - b
elif operator == '*':
return a * b
elif operator == '/':
if b != 0:
return a / b
else:
return "خطا: تقسیم بر صفر مجاز نیست!"
else:
return "عملگر نامعتبر!"
# برنامه اصلی
if __name__ == "__main__":
print("🧮 ماشین حساب ساده (Simple Calculator)")
a = float(input("عدد اول را وارد کنید: "))
b = float(input("عدد دوم را وارد کنید: "))
operator = input("عملگر را وارد کنید (+, -, *, /): ")
result = calculator(a, b, operator)
print(f"نتیجه: {result}")
def show_calculator_demo():
print("╔══════════════════════════════════╗")
print("║ 🧮 ماشین حساب ساده ║")
print("╚══════════════════════════════════╝\n")
print("➤ عدد اول را وارد کنید: 10")
print("➤ عدد دوم را وارد کنید: 5")
print("➤ عملگر را وارد کنید (+, -, *, /): +")
print("✅ نتیجه: 15\n")
print("➤ عدد اول را وارد کنید: 7")
print("➤ عدد دوم را وارد کنید: 3")
print("➤ عملگر را وارد کنید (+, -, *, /): *")
print("✅ نتیجه: 21\n")
print("➤ عدد اول را وارد کنید: 9")
print("➤ عدد دوم را وارد کنید: 0")
print("➤ عملگر را وارد کنید (+, -, *, /): /")
print("❌ خطا: تقسیم بر صفر مجاز نیست!\n")
if __name__ == "__main__":
show_calculator_demo()
#!/bin/bash
clear
echo "╔══════════════════════════════════╗"
echo "║ 🧮 ماشین حساب ساده ║"
echo "╚══════════════════════════════════╝"
echo ""
echo "➤ عدد اول را وارد کنید: 10"
echo "➤ عدد دوم را وارد کنید: 5"
echo "➤ عملگر را وارد کنید (+, -, *, /): +"
echo "✅ نتیجه: 15"
echo ""
echo "➤ عدد اول را وارد کنید: 7"
echo "➤ عدد دوم را وارد کنید: 3"
echo "➤ عملگر را وارد کنید (+, -, *, /): *"
echo "✅ نتیجه: 21"
echo ""
echo "➤ عدد اول را وارد کنید: 9"
echo "➤ عدد دوم را وارد کنید: 0"
echo "➤ عملگر را وارد کنید (+, -, *, /): /"
echo "❌ خطا: تقسیم بر صفر مجاز نیست!"
echo ""
گسترش پروژه (برای تمرین بیشتر)
اضافه کردن عملیاتهای پیشرفتهتر مثل توان، جذر و درصد
طراحی یک رابط کاربری گرافیکی (GUI) ساده با استفاده از کتابخانههایی مانند Tkinter
پشتیبانی از محاسبات چندمرحلهای (مثلاً 5 + 2 * 3)
این پروژه به ظاهر ساده یکی از بهترین روشها برای شروع مسیر برنامهنویسی با پایتون است.
بررسی دما (Temperature Checker)
معرفی پروژه
بررسی دما (Temperature Checker) یکی از پروژههای بسیار ساده اما کاربردی برای مبتدیان پایتون است.
در این پروژه شما یاد میگیرید که چگونه دادههای عددی از کاربر بگیرید، بر اساس آن تصمیمگیری کنید و به کاربر خروجی مناسب نمایش دهید.ایده اصلی این پروژه این است که کاربر یک دما (به سانتیگراد) وارد میکند و برنامه با استفاده از شرطها (if-else)، وضعیت آب و هوا را به او اطلاع میدهد.این پروژه در عین سادگی، مقدمهای مناسب برای درک ساختارهای شرطی و مدیریت منطق برنامهها است.همچنین همین ایده ساده میتواند در آینده به یک پروژهی حرفهایتر مثل نمایش پیشبینی آبوهوا یا سیستم هشدار دمایی هوشمند تبدیل شود.
مراحل انجام پروژه
دریافت دما از کاربر به صورت عددی
بررسی بازه دما با استفاده از شرطها
نمایش وضعیت متناسب با دما (مثلاً سرد، معتدل، گرم و...)
مدیریت ورودیهای نامعتبر (اختیاری) برای تجربه کاربری بهتر
نکات یادگیری
ورودی/خروجی (I/O): تمرین دریافت ورودی عددی از کاربر و نمایش خروجی مناسب
عملگرهای مقایسهای: استفاده از عملگرهایی مثل <, >, <=, >= برای مقایسه دما
ساختار شرطی (if-elif-else): پیادهسازی منطق تصمیمگیری در برنامه
مدیریت انواع داده: تبدیل ورودی کاربر از رشته به عدد صحیح یا اعشاری
بهبود تجربه کاربری: ارائه پیامهای خوانا و کاربرپسند
چرا این پروژه مهم است؟
به شما کمک میکند با ساختارهای شرطی به صورت عملی کار کنید
درک نحوهی مدیریت ورودیهای عددی را تقویت میکند
به شما یاد میدهد که چگونه یک منطق تصمیمگیری ساده در برنامه پیاده کنید
پروژهای بسیار مناسب برای افرادی است که به تازگی با برنامهنویسی آشنا شدهاند
پایهای برای توسعهی پروژههای پیشرفتهتر در حوزهی اینترنت اشیا (IoT) و سیستمهای هوشمند است.
در این بخش یک نمونه کد برای بررسی و تبدیل دما در پایتون میبینید. این برنامه میتواند دمای ورودی را از کاربر دریافت کرده و آن را بین واحدهای مختلف (سلسیوس، فارنهایت، کلوین) تبدیل کند.
def check_temperature(temp_celsius):
if temp_celsius < 0:
return "❄️ خیلی سرد است!"
elif 0 <= temp_celsius < 10:
return "🥶 سرد است."
elif 10 <= temp_celsius < 20:
return "🌤️ معتدل متمایل به سرد."
elif 20 <= temp_celsius < 30:
return "☀️ هوای معتدل و خوب."
elif 30 <= temp_celsius < 40:
return "🔥 گرم است."
else:
return "🥵 خیلی گرم است!"
# برنامه اصلی
if __name__ == "__main__":
print("🌡️ بررسی دما (Temperature Checker)")
temp = float(input("لطفاً دما را به سانتیگراد وارد کنید: "))
result = check_temperature(temp)
print(result)
def show_temperature_demo():
print("╔════════════════════════════════════════╗")
print("║ 🌡️ بررسی دما (Temperature Checker) ║")
print("╚════════════════════════════════════════╝\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: -5")
print("❄️ خیلی سرد است!\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: 8")
print("🥶 سرد است.\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: 15")
print("🌤️ معتدل متمایل به سرد.\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: 25")
print("☀️ هوای معتدل و خوب.\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: 35")
print("🔥 گرم است.\n")
print("➤ لطفاً دما را به سانتیگراد وارد کنید: 45")
print("🥵 خیلی گرم است!\n")
if __name__ == "__main__":
show_temperature_demo()
#!/bin/bash
clear
echo "╔════════════════════════════════════════╗"
echo "║ 🌡️ بررسی دما (Temperature Checker) ║"
echo "╚════════════════════════════════════════╝"
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: -5"
echo "❄️ خیلی سرد است!"
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: 8"
echo "🥶 سرد است."
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: 15"
echo "🌤️ معتدل متمایل به سرد."
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: 25"
echo "☀️ هوای معتدل و خوب."
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: 35"
echo "🔥 گرم است."
echo ""
echo "➤ لطفاً دما را به سانتیگراد وارد کنید: 45"
echo "🥵 خیلی گرم است!"
echo ""
گسترش پروژه (برای تمرین بیشتر)
افزودن پشتیبانی از واحدهای مختلف دما (سانتیگراد، فارنهایت)
اضافه کردن گزینه برای نمایش راهنمای لباس مناسب
استفاده از رنگبندی و نمادهای گرافیکی برای جذابتر کردن خروجی
ترکیب این پروژه با API پیشبینی هواشناسی (OpenWeatherMap)
جمعبندی
پروژهی بررسی دما یک تمرین ساده اما بسیار کاربردی برای افراد تازهکار در یادگیری پایتون است.
با پیادهسازی این پروژه، مهارت شما در دریافت ورودی کاربر، استفاده از شرطها و نمایش خروجی هدفمند به طور محسوسی تقویت میشود.
از اینجا میتوانید به سراغ پروژههای پیچیدهتری مانند پیشبینی وضعیت آبوهوا یا سیستمهای هشدار هوشمند بروید.
بررسی پالیندروم (Palindrome Checker)
معرفی پروژه
در این پروژه شما یاد میگیرید چگونه رشتهها (Strings) را پردازش کنید و منطق برنامهنویسی را به کار ببرید.
مثلاً:
"121"
"racecar"
"madam"
مراحل انجام پروژه
حذف فاصلهها یا کاراکترهای اضافی (اختیاری)تبدیل همهی حروف به یک حالت (کوچک یا بزرگ) برای مقایسه صحیح
مقایسه رشتهی اصلی با معکوس آن
نمایش نتیجه به کاربر (پالیندروم هست یا نه)
نکات یادگیری
ورودی/خروجی: دریافت رشته از کاربر و نمایش نتیجه مناسبمنطق برنامهنویسی: پیادهسازی الگوریتم ساده برای مقایسه معکوس رشته
عملگرهای مقایسهای: استفاده از == برای بررسی برابری رشتهها
بهینهسازی: نحوهی پاکسازی رشته از کاراکترهای غیرمجاز برای دقت بیشتر در بررسی
چرا این پروژه مهم است؟
باعث میشود درک بهتری از ساختار دادهها و حلقهها/منطق مقایسه پیدا کنیدبرای درک سازگاری کد با ورودیهای مختلف بسیار مفید است
پروژهای مناسب برای آزمونهای کدنویسی در مصاحبههای شغلی است (سوالات مربوط به پالیندروم بسیار رایج هستند)
پایهای عالی برای پروژههای پیشرفتهتر در کار با متون و دادههای متنی محسوب میشود
در ادامه یک کد ساده برای بررسی پالیندروم بودن کلمات یا جملات نوشته شده است. این برنامه به شما میگوید که آیا عبارت وارد شده از هر دو سمت به یک شکل خوانده میشود یا خیر.
def is_palindrome(text):
# حذف فاصلهها و حروف غیر الفانامریک و کوچک کردن حروف
cleaned_text = ''.join(char.lower() for char in text if char.isalnum())
return cleaned_text == cleaned_text[::-1]
# برنامه اصلی
if __name__ == "__main__":
print("🔍 بررسی پالیندروم (Palindrome Checker)")
user_input = input("لطفاً یک عبارت یا عدد وارد کنید: ")
if is_palindrome(user_input):
print("✅ بله! این یک پالیندروم است.")
else:
print("❌ خیر. این یک پالیندروم نیست.")
#!/bin/bash
clear
echo "╔════════════════════════════════════════╗"
echo "║ 🔍 بررسی پالیندروم (Palindrome Checker) ║"
echo "╚════════════════════════════════════════╝"
echo ""
echo "➤ لطفاً یک عبارت یا عدد وارد کنید: madam"
echo "✅ بله! این یک پالیندروم است."
echo ""
echo "➤ لطفاً یک عبارت یا عدد وارد کنید: 12321"
echo "✅ بله! این یک پالیندروم است."
echo ""
echo "➤ لطفاً یک عبارت یا عدد وارد کنید: python"
echo "❌ خیر. این یک پالیندروم نیست."
echo ""
ویرایشگر متن (Text Editor)
معرفی پروژه
در این پروژه، شما یاد میگیرید چگونه یک برنامه ساده بسازید که به کاربر اجازه میدهد متن دلخواه را بنویسد، ویرایش کند، ذخیره کند و دوباره باز کند.مراحل انجام پروژه
اضافه کردن نوار منو شامل گزینههای: باز کردن فایل، ذخیره فایل، خروجپیادهسازی ناحیه ویرایش متن که کاربر بتواند در آن تایپ کند
مدیریت رویدادهای باز و ذخیرهسازی فایلها
افزودن امکانات پیشرفته (اختیاری) مثل تغییر فونت، جستجو در متن و...
نکات یادگیری
رابط گرافیکی (GUI): ساخت یک محیط گرافیکی ساده با Tkinterمدیریت رویدادها: واکنش به کلیکهای کاربر روی منوها و دکمهها
ساختار برنامهنویسی رویدادمحور (Event-driven Programming): برنامهای که بر اساس تعامل کاربر کار میکند
پردازش رشتهها: مدیریت متنهای طولانی و کار با محتواهای متنی
چرا این پروژه مهم است؟
درک مفاهیم پیشرفتهتر در پایتون مانند ساخت GUI
تمرین کار با فایلهای متنی به شکل کاربردی
تقویت مهارتهای مدیریت رویدادها و کار با توابع گرافیکی
پروژهای قابل ارائه در رزومه به عنوان نمونه کار واقعی
پروژهی ویرایشگر متن (Text Editor) یکی از جذابترین و آموزندهترین پروژههای پایتون برای مبتدیان و علاقهمندان به توسعه نرمافزارهای کاربردی است.ساخت یک ویرایشگر متن کوچک کمک میکند مفاهیمی چون کار با فایلها، رابط گرافیکی (GUI)، مدیریت رویدادها و کار با رشتهها را به خوبی درک کنید.این پروژه نقطهی شروع مناسبی برای ورود به دنیای نرمافزارهای دسکتاپ است.
ایجاد یک رابط کاربری ساده با استفاده از کتابخانه Tkinter
کار با فایلها (File I/O): یاد میگیرید چگونه فایلهای متنی را بخوانید و بنویسید
ورود عملی به دنیای توسعه نرمافزارهای دسکتاپ
ویرایشگر متن (Text Editor)نمونه کد زیر یک ویرایشگر متن ساده با رابط گرافیکی (GUI) را در پایتون پیادهسازی میکند. در این برنامه میتوانید متن وارد کنید، آن را ویرایش نمایید و در نهایت در فایل ذخیره کنید.
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter import scrolledtext
def new_file():
text_area.delete(1.0, tk.END)
def open_file():
file_path = filedialog.askopenfilename(defaultextension=".txt",
filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
if file_path:
try:
with open(file_path, "r", encoding="utf-8") as file:
content = file.read()
text_area.delete(1.0, tk.END)
text_area.insert(tk.END, content)
except Exception as e:
messagebox.showerror("خطا", f"خطا در باز کردن فایل: {e}")
def save_file():
file_path = filedialog.asksaveasfilename(defaultextension=".txt",
filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
if file_path:
try:
with open(file_path, "w", encoding="utf-8") as file:
content = text_area.get(1.0, tk.END)
file.write(content)
messagebox.showinfo("موفق", "فایل با موفقیت ذخیره شد.")
except Exception as e:
messagebox.showerror("خطا", f"خطا در ذخیره فایل: {e}")
def exit_app():
if messagebox.askokcancel("خروج", "آیا مطمئن هستید که میخواهید خارج شوید؟"):
root.destroy()
# ساخت پنجره اصلی
root = tk.Tk()
root.title("📝 ویرایشگر متن ساده با پایتون")
root.geometry("800x600")
# ساخت Text Area با Scrollbar
text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, font=("Arial", 14))
text_area.pack(expand=True, fill='both')
# ساخت Menu Bar
menu_bar = tk.Menu(root)
# منوی File
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="جدید (New)", command=new_file)
file_menu.add_command(label="باز کردن (Open)", command=open_file)
file_menu.add_command(label="ذخیره (Save)", command=save_file)
file_menu.add_separator()
file_menu.add_command(label="خروج (Exit)", command=exit_app)
menu_bar.add_cascade(label="فایل (File)", menu=file_menu)
# افزودن منو به برنامه
root.config(menu=menu_bar)
# اجرای برنامه
root.mainloop()
#!/bin/bash
clear
echo "╔══════════════════════════════════════════════╗"
echo "║ 📝 ویرایشگر متن ساده با پایتون ║"
echo "╚══════════════════════════════════════════════╝"
echo ""
echo "[ File ] New | Open | Save | Exit"
echo ""
echo "+----------------------------------------------+"
echo "| |"
echo "| سلام! |"
echo "| این یک نمونه ویرایشگر متن ساده است. |"
echo "| |"
echo "+----------------------------------------------+"
def show_text_editor_ui():
print("╔══════════════════════════════════════════════╗")
print("║ 📝 ویرایشگر متن ساده با پایتون ║")
print("╚══════════════════════════════════════════════╝\n")
print("[ File ] New | Open | Save | Exit\n")
print("+----------------------------------------------+")
print("| |")
print("| سلام! |")
print("| این یک نمونه ویرایشگر متن ساده است. |")
print("| |")
print("+----------------------------------------------+")
if __name__ == "__main__":
show_text_editor_ui()
مبدل ارز (Currency Converter)
معرفی پروژه
مبدل ارز (Currency Converter) یکی از پروژههای بسیار کاربردی و جذاب برای یادگیری پایتون است.
در این پروژه شما یک برنامه میسازید که به کاربر اجازه میدهد یک مبلغ مشخص را از یک ارز به ارز دیگر تبدیل کند.
برای پیادهسازی این پروژه، میتوانید به صورت ساده نرخ تبدیل ثابت را در برنامه تعریف کنید، یا از سطح پیشرفتهتر با APIهای نرخ ارز آنلاین استفاده کنید و نرخهای بهروز را دریافت نمایید.
این پروژه یک تمرین عالی برای یادگیری ورودی/خروجی دادهها، کار با اعداد اعشاری و پردازش دادههای خارجی است.
مراحل انجام پروژه
دریافت ارز مبدا و ارز مقصد از کاربردریافت مبلغ قابل تبدیل از کاربر
استفاده از نرخ تبدیل ارز (ثابت یا آنلاین)
انجام محاسبه تبدیل
نمایش نتیجه به کاربر
(اختیاری) افزودن رابط کاربری یا دریافت نرخهای زنده از API
نکات یادگیری
ورودی/خروجی (I/O): دریافت اطلاعات از کاربر و نمایش نتیجهکار با اعداد اعشاری: مدیریت دقت محاسبات مالی
منطق برنامهنویسی: پیادهسازی الگوریتم ساده برای تبدیل ارز
مدیریت دادهها: استفاده از دیکشنریها برای نگهداری نرخ تبدیل ارزها
کار با APIها (سطح پیشرفته): دریافت نرخهای بهروز از سرویسهای خارجی (مثلاً ExchangeRate-API یا Open Exchange Rates)
چرا این پروژه مهم است؟
تمرین در دنیای واقعی برای پردازش دادههای مالییادگیری نحوهی کار با دادههای عددی حساس
ورود به دنیای یکپارچهسازی با APIهای آنلاین
تمرین مدیریت خطا و برخورد با ورودیهای نامعتبر
امکان ساخت ابزار مالی واقعی که در زندگی روزمره نیز کاربرد دارد
مبدل ارز (Currency Converter) کد زیر یک نمونه مبدل ارز ساده در پایتون را نشان میدهد. این برنامه با استفاده از API نرخ تبدیل ارز، امکان تبدیل بین واحدهای ارزی مختلف را فراهم میکند.
import requests
# کلید API رایگان از سایت ExchangeRate-API یا API Layer یا هر API دلخواه
API_KEY = "YOUR_API_KEY_HERE" # اینو باید از سایت بگیری و اینجا بذاری
BASE_URL = f"https://v6.exchangerate-api.com/v6/{API_KEY}/latest/"
def get_exchange_rate(base_currency, target_currency):
try:
url = BASE_URL + base_currency.upper()
response = requests.get(url)
data = response.json()
if response.status_code != 200 or data['result'] != 'success':
raise Exception("مشکل در دریافت نرخ تبدیل. لطفاً دوباره تلاش کنید.")
rates = data['conversion_rates']
if target_currency.upper() not in rates:
raise Exception(f"ارز مقصد '{target_currency}' یافت نشد.")
return rates[target_currency.upper()]
except Exception as e:
print(f"❌ خطا: {e}")
return None
def currency_converter():
print("----------------------------")
print("💱 مبدل ارز حرفهای 💱")
print("----------------------------\n")
while True:
try:
amount = float(input("🔢 مقدار ارز را وارد کنید: "))
base_currency = input("💵 ارز مبدا (مثلاً USD, EUR, IRR): ").strip()
target_currency = input("💶 ارز مقصد (مثلاً USD, EUR, IRR): ").strip()
print("\n🔄 در حال دریافت نرخ تبدیل...\n")
rate = get_exchange_rate(base_currency, target_currency)
if rate is None:
continue
converted_amount = amount * rate
print(f"✅ {amount:.2f} {base_currency.upper()} = {converted_amount:.2f} {target_currency.upper()}\n")
again = input("آیا میخواهید تبدیل دیگری انجام دهید؟ (y/n): ").lower()
if again != 'y':
print("👋 خداحافظ!")
break
except ValueError:
print("❌ لطفاً یک مقدار عددی معتبر وارد کنید.\n")
if __name__ == "__main__":
currency_converter()
----------------------------
💱 مبدل ارز حرفهای 💱
----------------------------
🔢 مقدار ارز را وارد کنید: 100
💵 ارز مبدا (مثلاً USD, EUR, IRR): USD
💶 ارز مقصد (مثلاً USD, EUR, IRR): EUR
🔄 در حال دریافت نرخ تبدیل...
✅ 100.00 USD = 92.00 EUR
آیا میخواهید تبدیل دیگری انجام دهید؟ (y/n): y
🔢 مقدار ارز را وارد کنید: 500
💵 ارز مبدا (مثلاً USD, EUR, IRR): EUR
💶 ارز مقصد (مثلاً USD, EUR, IRR): GBP
🔄 در حال دریافت نرخ تبدیل...
✅ 500.00 EUR = 425.00 GBP
آیا میخواهید تبدیل دیگری انجام دهید؟ (y/n): n
👋 خداحافظ!
🔢 مقدار ارز را وارد کنید: 50
💵 ارز مبدا (مثلاً USD, EUR, IRR): ABC
💶 ارز مقصد (مثلاً USD, EUR, IRR): USD
🔄 در حال دریافت نرخ تبدیل...
❌ خطا: ارز مقصد 'USD' یافت نشد.
🔢 مقدار ارز را وارد کنید: xyz
❌ لطفاً یک مقدار عددی معتبر وارد کنید.
API_KEY = "YOUR_API_KEY_HERE"
بازی Hangman
معرفی پروژه
بازی Hangman یکی از محبوبترین و سرگرمکنندهترین پروژههای پایتون برای مبتدیان است.در این پروژه، شما یک بازی کلاسیک پیادهسازی میکنید که در آن کاربر باید یک کلمه مخفی را حدس بزند.کاربر با وارد کردن حروف تلاش میکند کلمه کامل را پیدا کند. با هر حدس اشتباه، یک بخش از شکل "مرد آویزان" (Hangman) ترسیم میشود.اگر کاربر پیش از کامل شدن Hangman بتواند کلمه را کامل کند، برنده میشود.این پروژه تمرین بسیار خوبی برای یادگیری مدیریت ورودیهای کاربر، کار با رشتهها و منطق بازی است.
مراحل انجام پروژه
انتخاب یک کلمهی تصادفی برای بازی
نمایش وضعیت فعلی کلمه (با خطوط فاصله برای حروف ناشناخته)
دریافت حدسهای کاربر به صورت یک حرف در هر بار
بررسی صحیح بودن حدس و بهروزرسانی وضعیت کلمه
شمارش تعداد حدسهای اشتباه و نمایش پیشرفت Hangman
پایان بازی با پیروزی یا شکست و نمایش نتیجه به کاربر
نکات یادگیری
کار با رشتهها (Strings): بررسی و پردازش حروف کلمه
ورودی/خروجی (I/O): تعامل مستمر با کاربر
حلقهها و شرطها (Loops and Conditionals): پیادهسازی منطق تکراری بازی
لیستها و دیکشنریها: مدیریت حروف حدس زدهشده
ساختارهای کنترلی: مدیریت حالتهای مختلف بازی (ادامه، پیروزی، شکست)
چرا این پروژه مهم است؟
تمرین عالی برای مدیریت وضعیت بازی در طول زمان
تقویت مهارت در نوشتن کدهای تعاملی و پویا
یادگیری ساخت بازیهای متنی با پایتون
آمادهسازی برای ورود به برنامهنویسی بازی (Game Development)
پروژهای جذاب برای رزومه و جلب توجه در مصاحبههای شغلی
import random
# لیست کلمات برای بازی
word_list = ['python', 'hangman', 'programming', 'computer', 'developer', 'algorithm', 'variable', 'function']
# انتخاب یک کلمه به صورت تصادفی
word = random.choice(word_list)
word_letters = set(word) # حروف کلمه
guessed_letters = set() # حروفی که بازیکن حدس زده
alphabet = set('abcdefghijklmnopqrstuvwxyz')
lives = 6 # تعداد تلاشهای مجاز
# پیام خوشآمدگویی
print("----------------------------")
print("🎮 بازی Hangman 🎮")
print("----------------------------\n")
print(f"یک کلمه انتخاب شده است. {len(word)} حرف دارد.")
print("شما 6 فرصت دارید تا کلمه را حدس بزنید.")
print("شروع کنیم!\n")
# حلقه اصلی بازی
while len(word_letters) > 0 and lives > 0:
# نمایش وضعیت فعلی کلمه
word_display = [letter if letter in guessed_letters else '_' for letter in word]
print("کلمه:", ' '.join(word_display))
print(f"❤️ فرصتهای باقیمانده: {lives}")
print(f"📜 حروف حدس زدهشده: {' '.join(sorted(guessed_letters))}\n")
# دریافت ورودی از کاربر
guess = input("یک حرف وارد کنید: ").lower()
# بررسی ورودی
if len(guess) != 1 or guess not in alphabet:
print("⛔ لطفاً یک حرف معتبر وارد کنید.\n")
continue
if guess in guessed_letters:
print("⚠️ این حرف را قبلاً حدس زدهاید.\n")
continue
# افزودن حرف به حروف حدسزده شده
guessed_letters.add(guess)
# بررسی اینکه حرف در کلمه هست یا نه
if guess in word_letters:
word_letters.remove(guess)
print("✅ درست حدس زدید!\n")
else:
lives -= 1
print("❌ اشتباه حدس زدید!\n")
# پایان بازی
if lives == 0:
print("💀 باختید! فرصتها تمام شد.")
print(f"کلمهی درست: {word}")
else:
print(f"🎉 تبریک! شما کلمهی {word} را درست حدس زدید! 👏")
گسترش پروژه (برای تمرین بیشتر)
افزودن قابلیت نمایش شکل Hangman به صورت گرافیکی (ASCII art)
افزودن حالت چند سطحی (سطح آسان، متوسط، سخت)
افزودن ذخیرهی رکورد بازیکنها و بالاترین امتیازها
استفاده از رابط گرافیکی (GUI) برای جذابتر کردن بازی
افزودن صدا یا افکتهای صوتی هنگام حدس صحیح یا اشتباه
جمعبندی
این پروژه به شما کمک میکند مهارتهای مهمی مانند ساختار حلقهها، مدیریت ورودی کاربر و بهروزرسانی وضعیت برنامه را به خوبی تمرین کنید.پیشبینی آب و هوا (Weather Forecaster)
معرفی پروژه پیش بینی
پیشبینی آب و هوا (Weather Forecaster) یکی از پروژههای بسیار جذاب و کاربردی برای یادگیری برنامهنویسی با پایتون است.
در این پروژه شما یک برنامه میسازید که با استفاده از APIهای آنلاین اطلاعات آب و هوای یک شهر خاص را دریافت کرده و پیشبینی وضعیت جوی را برای چند روز آینده نمایش میدهد.
این پروژه به شما کمک میکند با مفاهیم کار با APIها، پردازش دادههای JSON و مدیریت دادههای خارجی در پایتون آشنا شوید — که مهارتهای بسیار مهمی برای ورود به بازار کار هستند.
مراحل انجام پروژه
دریافت نام شهر از کاربر
ارسال درخواست به یک API هواشناسی (مانند OpenWeatherMap)
دریافت اطلاعات آب و هوا به صورت JSON
پردازش دادههای دریافتی
نمایش پیشبینی وضعیت آب و هوای روزهای آینده به کاربر
افزودن امکانات تکمیلی (نمایش دما، رطوبت، سرعت باد و وضعیت آسمان)
نکات یادگیری
کار با APIها: نحوه ارسال درخواست و دریافت پاسخ از سرویسهای آنلاین
مدیریت دادههای JSON: پردازش و استخراج دادههای کلیدی از ساختار JSON
ورودی/خروجی (I/O): تعامل پویا با کاربر
مدیریت خطا (Exception Handling): برخورد صحیح با خطاهای شبکه یا ورودیهای نامعتبر
کار با تاریخ و زمان: مدیریت و نمایش پیشبینی برای بازههای زمانی مختلف
چرا این پروژه مهم است؟
تمرین عالی برای کار با دادههای دنیای واقعی
یادگیری مهارت کلیدی یکپارچهسازی با APIها که در بسیاری از پروژههای حرفهای استفاده میشود
ارتقای دانش در زمینه پردازش و تحلیل دادهها
امکان ساخت یک ابزار کاربردی روزمره برای کاربران
پروژهای کاملاً مناسب برای رزومه و نمونه کار حرفهای
مراحل:
دریافت اطلاعات برای یک شهر خاص
نمایش پیشبینی ۵ روز آینده
پیشنیازها:
نصب کتابخانه requests (برای ارسال درخواست HTTP):
استفاده از API های OpenWeatherMap
باید در سایت OpenWeatherMap ثبتنام کنی و کلید API (API Key) بگیری.
pip install requests
در ادامه نمونه کدی برای پیشبینی وضعیت آب و هوا با استفاده از API سرویسهای آنلاین مشاهده میکنید. این برنامه اطلاعات هواشناسی شهر مورد نظر را دریافت و نمایش میدهد.
import requests
import datetime
# ⚠️ کلید API خودت رو اینجا وارد کن
API_KEY = 'YOUR_API_KEY'
# آدرس API
BASE_URL = 'http://api.openweathermap.org/data/2.5/forecast'
# تابع پیشبینی آب و هوا
def get_weather_forecast(city):
params = {
'q': city,
'appid': API_KEY,
'units': 'metric', # دما به درجه سلسیوس
'lang': 'fa' # زبان فارسی
}
response = requests.get(BASE_URL, params=params)
if response.status_code == 200:
data = response.json()
print(f"\n📍 پیشبینی ۵ روز آینده برای شهر: {city}\n")
# دادههای پیشبینی در بازههای ۳ ساعته است. برای سادهتر شدن، فقط یکبار در روز (مثلاً ساعت 12:00) را نمایش میدهیم.
for forecast in data['list']:
dt_txt = forecast['dt_txt']
if '12:00:00' in dt_txt:
date = dt_txt.split(' ')[0]
temp = forecast['main']['temp']
weather_description = forecast['weather'][0]['description']
print(f"{date} 🌤️ {weather_description}, 🌡️ {temp}°C")
else:
print("⛔ خطا در دریافت اطلاعات! لطفاً نام شهر یا کلید API را بررسی کنید.")
if __name__ == '__main__':
city_name = input("نام شهر را وارد کنید: ")
get_weather_forecast(city_name)
نکات یادگیری:
استفاده از کتابخانه requests برای فراخوانی API
مدیریت پاسخهای JSON
نمایش تاریخ و پیشبینی آب و هوا
کار با پارامترهای URL
نکته مهم:
برای اینکه کد درست کار کنه باید:
به سایت OpenWeatherMap بری.
ثبت نام کنی و کلید API بگیری (مثلاً: 123456abcdef...).
مقدار YOUR_API_KEY در کد رو به اون کلید تغییر بدی.
نمونه خروجی (مثلاً برای شهر Tehran):
📍 پیشبینی ۵ روز آینده برای شهر: Tehran
2025-06-11 🌤️ صاف, 🌡️ 34°C
2025-06-12 🌤️ کمی ابری, 🌡️ 33°C
2025-06-13 🌤️ آفتابی, 🌡️ 35°C
2025-06-14 🌤️ صاف, 🌡️ 36°C
2025-06-15 🌤️ ابری, 🌡️ 32°C
گسترش پروژه (برای تمرین بیشتر)
افزودن قابلیت نمایش پیشبینی ۷ یا ۱۰ روزه
افزودن رابط کاربری گرافیکی (GUI) برای تجربه کاربری بهتر
افزودن نقشههای آب و هوایی با استفاده از APIهای پیشرفته
افزودن ذخیرهی تاریخچهی وضعیت آب و هوا برای شهرهای مختلف
افزودن قابلیت اطلاعرسانی خودکار (Notifications) در صورت پیشبینی آب و هوای خاص (مانند باران شدید، طوفان و...)
امکان مقایسه وضعیت آب و هوا بین چند شهر
جمعبندی
این پروژه نه تنها مهارتهای برنامهنویسی شما را تقویت میکند، بلکه به شما کمک میکند یک برنامه کاربردی واقعی تولید کنید که میتواند در دنیای واقعی نیز مورد استفاده قرار بگیرد.پروژهی پیشبینی آب و هوا یک فرصت عالی برای یادگیری و تمرین مفاهیم مهمی مانند کار با APIها، پردازش دادههای JSON و مدیریت ورودی/خروجی در پایتون است.این نوع پروژهها در نمونه کار (Portfolio) شما بسیار جذاب به نظر میرسند و در مصاحبههای کاری به عنوان توانایی کار با دادههای آنلاین و APIها مطرح خواهند شد.
بازی حدس عدد (Guess the Number Game)
معرفی پروژه
بازی حدس عدد (Guess the Number Game) یکی از سادهترین و در عین حال موثرترین پروژههای تمرینی برای یادگیری پایتون است.در این بازی، برنامه یک عدد تصادفی انتخاب میکند و کاربر باید با وارد کردن حدسهای متوالی، آن عدد را پیدا کند.برنامه در هر مرحله به کاربر بازخورد میدهد که حدس او کمتر یا بیشتر از عدد هدف است تا به جواب نزدیک شود.این پروژه فرصتی عالی است برای تمرین ساختارهای کنترلی، حلقهها و مدیریت ورودی/خروجی در پایتون.
مراحل انجام پروژه بازی حدس عدد در پایتون
تولید یک عدد تصادفی در یک بازهی مشخص (مثلاً ۱ تا ۱۰۰)
دریافت حدس کاربر به عنوان ورودی
مقایسهی حدس کاربر با عدد هدف
ارائهی بازخورد به کاربر (بیشتر/کمتر بودن)
تکرار فرآیند تا زمانی که کاربر عدد صحیح را حدس بزند
نمایش تعداد تلاشهای انجامشده در پایان بازی
نکات یادگیری برنامه بازی حدس عدد در پایتون
تولید اعداد تصادفی: استفاده از ماژول random برای تولید عدد هدف
ورودی/خروجی: دریافت حدسهای کاربر و ارائه بازخورد
حلقهها (Loops): اجرای مکرر فرآیند تا رسیدن به جواب
ساختار شرطی (if-else): مقایسهی حدس با عدد هدف و تعیین مسیر برنامه
مدیریت خطا: برخورد مناسب با ورودیهای نامعتبر
چرا این پروژه مهم است؟
تمرین عالی برای درک منطق تکرار و تصمیمگیری در برنامهها
تقویت مهارت در نوشتن کدهای تعاملی
یادگیری نحوهی بهبود تجربهی کاربری با بازخورد مستمر
ساخت یک پروژهی جذاب که میتواند به راحتی در رزومه گنجانده شود
پایهای مناسب برای توسعه به بازیهای پیشرفتهتر
در این بخش یک نمونه کد برای بازی حدس عدد (Guess the Number Game) در پایتون ارائه شده است. بازی حدس عدد (Guess the Number Game)کد زیر نمونهای از بازی حدس عدد در پایتون است. برنامه یک عدد تصادفی تولید میکند و کاربر باید با وارد کردن حدسهای متوالی به عدد صحیح برسد.
import random
def guess_the_number():
print("🎮 بازی حدس عدد 🎮")
print("یک عدد بین 1 تا 100 حدس بزن!")
# تولید عدد تصادفی
secret_number = random.randint(1, 100)
attempts = 0
while True:
try:
guess = int(input("حدس شما: "))
attempts += 1
if guess < 1 or guess > 100:
print("⛔ لطفاً عددی بین 1 تا 100 وارد کنید.")
continue
if guess < secret_number:
print("⬆️ بیشتر حدس بزن!")
elif guess > secret_number:
print("⬇️ کمتر حدس بزن!")
else:
print(f"🎉 تبریک! عدد {secret_number} را در {attempts} تلاش حدس زدی!")
break
except ValueError:
print("⛔ لطفاً یک عدد صحیح وارد کنید.")
if __name__ == '__main__':
guess_the_number()
گسترش پروژه (برای تمرین بیشتر)
افزودن قابلیت انتخاب سطح سختی (بازههای مختلف عددی)
محدود کردن تعداد تلاشها و نمایش پیام شکست در صورت اتمام تلاشها
افزودن سیستم امتیازدهی بر اساس تعداد تلاشها
ذخیرهی رکورد بهترین عملکرد کاربر
افزودن رابط کاربری گرافیکی (GUI) برای جذابیت بیشتر
افزودن حالت چندنفره یا رقابتی (مثلاً بازیکنان نوبتی عدد یکدیگر را حدس بزنند)
جمعبندی
بازی حدس عدد یک پروژهی بسیار مناسب برای شروع مسیر پیادهسازی بازیهای ساده و تعاملی در پایتون است.این پروژه به شما کمک میکند با مفاهیم پایهای برنامهنویسی مانند حلقهها، شرطها و ورودی/خروجی آشنا شوید و آنها را در یک پروژه عملی به کار ببرید.همچنین میتوانید این بازی را به سادگی گسترش داده و به عنوان نمونهای از توانایی حل مسئله و طراحی بازیهای کوچک در رزومهی خود استفاده کنید.
دفترچه مخاطبین (Contact Book)
معرفی پروژه
در این پروژه شما یک برنامه طراحی میکنید که بتواند اطلاعات مخاطبین شامل نام، شماره تلفن، ایمیل و دیگر جزئیات را ذخیره، ویرایش، حذف و جستجو کند. همچنین امکان خروجی گرفتن از دادهها به صورت فایل CSV نیز فراهم میشود.
مراحل انجام پروژه
افزودن مخاطب جدید با دریافت ورودی از کاربر
جستجوی مخاطب بر اساس نام یا سایر مشخصات
ویرایش یا حذف مخاطب موجود
ذخیرهسازی دادهها در فایل CSV برای حفظ اطلاعات
بارگذاری دادهها از فایل CSV هنگام شروع برنامه
مدیریت خطاها و اطمینان از صحت دادهها
نکات یادگیری
مدیریت فایلها: خواندن و نوشتن فایل CSV با ماژول csv
ورودی/خروجی: طراحی منوی تعاملی برای افزودن، جستجو، ویرایش و حذف مخاطبین
مدیریت خطا: برخورد با مواردی مانند مخاطب تکراری، دادههای ناقص یا اشتباه
کار با دادههای ساختاریافته: ذخیره و بازیابی اطلاعات به صورت منظم و قابل دسترس
چرا این پروژه مهم است؟
یادگیری نحوه مدیریت و سازماندهی دادهها در برنامههای بزرگتر
کسب مهارت در کار با فایلها و فرمتهای داده مانند CSV که در صنعت بسیار کاربرد دارد
تقویت مهارت در طراحی رابط کاربری متنی و منوهای تعاملی
آمادهسازی برای پروژههای پیچیدهتر مدیریت داده و پایگاه دادهها
در این بخش یک نمونه کد برای ایجاد دفترچه مخاطبین ساده در پایتون ارائه شده است. این برنامه امکان افزودن، جستجو، ویرایش و حذف مخاطبین را فراهم میکند و اطلاعات را در فایل CSV ذخیره مینماید.
import csv
# نام فایل CSV
FILENAME = 'contacts.csv'
# لیست مخاطبین
contacts = []
# بارگذاری مخاطبین از فایل CSV
def load_contacts():
try:
with open(FILENAME, mode='r', newline='', encoding='utf-8') as file:
reader = csv.DictReader(file)
contacts.clear()
for row in reader:
contacts.append(row)
except FileNotFoundError:
# اگر فایل وجود نداشت، مشکلی نیست
pass
# ذخیره مخاطبین در فایل CSV
def save_contacts():
with open(FILENAME, mode='w', newline='', encoding='utf-8') as file:
fieldnames = ['name', 'phone', 'email']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for contact in contacts:
writer.writerow(contact)
# افزودن مخاطب جدید
def add_contact():
name = input("نام: ")
phone = input("شماره تلفن: ")
email = input("ایمیل: ")
contacts.append({'name': name, 'phone': phone, 'email': email})
save_contacts()
print("✅ مخاطب افزوده شد.\n")
# نمایش همه مخاطبین
def show_contacts():
if not contacts:
print("⛔ لیست مخاطبین خالی است.\n")
return
for i, contact in enumerate(contacts, start=1):
print(f"{i}. {contact['name']} | {contact['phone']} | {contact['email']}")
print()
# جستجو مخاطب
def search_contact():
keyword = input("نام یا شماره یا ایمیل برای جستجو: ").lower()
results = [c for c in contacts if keyword in c['name'].lower() or keyword in c['phone'] or keyword in c['email'].lower()]
if results:
print("نتایج جستجو:")
for c in results:
print(f"{c['name']} | {c['phone']} | {c['email']}")
else:
print("⛔ مخاطبی پیدا نشد.")
print()
# ویرایش مخاطب
def edit_contact():
show_contacts()
index = int(input("شماره مخاطب برای ویرایش: ")) - 1
if 0 <= index < len(contacts):
print("🔄 مقادیر جدید (برای خالی گذاشتن Enter بزنید):")
name = input(f"نام [{contacts[index]['name']}]: ") or contacts[index]['name']
phone = input(f"شماره تلفن [{contacts[index]['phone']}]: ") or contacts[index]['phone']
email = input(f"ایمیل [{contacts[index]['email']}]: ") or contacts[index]['email']
contacts[index] = {'name': name, 'phone': phone, 'email': email}
save_contacts()
print("✅ مخاطب ویرایش شد.\n")
else:
print("⛔ شماره مخاطب نامعتبر.\n")
# حذف مخاطب
def delete_contact():
show_contacts()
index = int(input("شماره مخاطب برای حذف: ")) - 1
if 0 <= index < len(contacts):
confirm = input(f"آیا مطمئن هستید که میخواهید {contacts[index]['name']} را حذف کنید؟ (y/n): ")
if confirm.lower() == 'y':
contacts.pop(index)
save_contacts()
print("✅ مخاطب حذف شد.\n")
else:
print("⛔ شماره مخاطب نامعتبر.\n")
# منوی اصلی
def main_menu():
load_contacts()
while True:
print("📒 دفترچه مخاطبین")
print("1. افزودن مخاطب")
print("2. نمایش همه مخاطبین")
print("3. جستجو مخاطب")
print("4. ویرایش مخاطب")
print("5. حذف مخاطب")
print("6. خروج")
choice = input("انتخاب کنید (1-6): ")
print()
if choice == '1':
add_contact()
elif choice == '2':
show_contacts()
elif choice == '3':
search_contact()
elif choice == '4':
edit_contact()
elif choice == '5':
delete_contact()
elif choice == '6':
print("👋 خداحافظ!")
break
else:
print("⛔ گزینه نامعتبر.\n")
if __name__ == '__main__':
main_menu()
گسترش پروژه (برای تمرین بیشتر)
طراحی رابط کاربری گرافیکی (GUI) برای سهولت کاربر
افزودن قابلیت پشتیبانگیری خودکار و بازیابی اطلاعات
افزودن امکانات پیشرفته جستجو با فیلترهای مختلف
اضافه کردن امکان صادرات و واردات به فرمتهای دیگر (مانند JSON)
افزودن قابلیت مدیریت گروهبندی مخاطبین و برچسبگذاری آنها
جمعبندی
این پروژه برای هر برنامهنویس مبتدی و حتی متوسط که قصد ورود به دنیای توسعه نرمافزارهای کاربردی را دارد، یک تمرین بسیار ارزشمند است.دفترچه مخاطبین یا Contact Book یکی از پروژههای کاربردی و مفید در دنیای برنامهنویسی است که به شما کمک میکند با مدیریت دادهها، ساختارهای ذخیرهسازی و کار با فایلها در پایتون آشنا شوید.این پروژه به طور عملی نحوه مدیریت دادههای پیچیدهتر و تعامل با فایلهای متنی را به شما آموزش میدهد.
ساختاردهی دادهها با استفاده از دیکشنریها و لیستها
ساختار دادهها: کار با لیستها و دیکشنریها برای ذخیره اطلاعات مخاطبین
ایجاد یک برنامه کاربردی واقعی با کاربرد روزمره
افزودن امکان ذخیرهسازی در پایگاه داده (مانند SQLite)
دفترچه مخاطبین یک پروژهی کامل و جامع است که مهارتهای مهمی همچون کار با دادههای ساختاریافته، فایلها و تعامل با کاربر را در قالب یک برنامه کاربردی به شما آموزش میدهد.با انجام این پروژه، علاوه بر تقویت تواناییهای برنامهنویسی، میتوانید نمونه کاری کاربردی و قابل ارائه به بازار کار یا مشتریان داشته باشید.
دیدگاه و پرسش
-
امیرحسین پورسمیع
2 سال پیش