۶۰ پروژه کوچک و کاربردی برای پایتون
در این بخش ۶۰ پروژه کوچک و کاربردی برای پایتون قرار داده ایم، این ۶۰ تمرین به شما کمک می کند تسلط زیادی را نسبت به زبان برنامه نویسی پایتون پیدا کنید.
پست های مرتبط که پیشنهاد می شود ببینید:
فهرست پروژه ها:
۱. برنامه ای بنویسید که میانگین اعداد را محاسبه کند.
برای حل تمرین اول که محاسبه میانگین اعداد است، باید یک برنامه ساده بنویسیم که یک لیست از اعداد را به عنوان ورودی دریافت کند و سپس میانگین اعداد را محاسبه کند و آن را چاپ کند. برای این کار میتوانیم از تابع sum()
جهت محاسبه مجموع اعداد و تابع len()
جهت تعداد اعداد در لیست استفاده کنیم.
حال بیایید برنامه را با پایتون بنویسیم:
این برنامه یک تابع به نام calculate_average()
دارد که یک لیست از اعداد را به عنوان ورودی دریافت میکند و میانگین آن را محاسبه میکند و به عنوان خروجی برمیگرداند. سپس با استفاده از این تابع، یک لیست از اعداد را به عنوان ورودی به تابع میدهیم و میانگین آن را در خروجی چاپ میکنیم.
در این مثال، میانگین اعداد لیست [3، 5، 7، 9، 12] برابر با 7.2 است.
۲. برنامه ای بنویسید که فاکتوریل یک عدد را محاسبه کند.
برای محاسبه فاکتوریل یک عدد، میتوانیم از یک حلقه for استفاده کنیم که به ترتیب اعداد را از ۱ تا آن عدد در نظر بگیرد و آنها را با هم ضرب کند. برای مثال، برای محاسبه فاکتوریل یک عدد به نام n میتوانیم این کد را بنویسیم:
در این برنامه، تابع factorial()
یک عدد به عنوان ورودی دریافت میکند و فاکتوریل آن را با استفاده از حلقه for محاسبه میکند. سپس با استفاده از تابع input()
، یک عدد از کاربر گرفته میشود و به عنوان ورودی به تابع factorial()
داده میشود. سپس مقدار بازگشتی تابع، یعنی فاکتوریل آن عدد، در خروجی چاپ میشود.
به عنوان مثال، اگر کاربر عدد ۵ را وارد کند، فاکتوریل آن برابر با ۱۲۰ خواهد بود (۵ × ۴ × ۳ × ۲ × ۱).
۳. برنامه ای بنویسید که یک متن را معکوس کند.
برای معکوس کردن یک رشته متنی، میتوانیم از روشی استفاده کنیم که ابتدا رشته را به صورت رشتهای اعکس میکند و سپس آن را چاپ میکند. برای این کار میتوانیم از عملگر ترکیبی [::-1]
استفاده کنیم که به معنای این است که از ابتدا تا انتهای رشته را در نظر گرفته و برعکس کرده و سپس این رشته را بازگردانده و چاپ کنیم. برای مثال:
در این برنامه، تابع reverse_string()
یک رشته به عنوان ورودی دریافت میکند و از عملگر ترکیبی [::-1]
برای اعکس کردن رشته استفاده میکند. سپس رشته معکوس شده در خروجی بازگردانده میشود. سپس با استفاده از تابع input()
، یک رشته از کاربر گرفته میشود و به عنوان ورودی به تابع reverse_string()
داده میشود. سپس مقدار بازگشتی تابع، یعنی رشته معکوس شده، در خروجی چاپ میشود.
به عنوان مثال، اگر کاربر رشته “Hello, World!” را وارد کند، متن معکوس شده آن به شکل “!dlroW ,olleH” در خروجی چاپ میشود.
۴. برنامه ای بنویسید که اعداد زوج و فرد در یک لیست را پیدا کند.
برای جداسازی اعداد زوج و فرد در یک لیست، میتوانیم از یک حلقه برای گرفتن هر عنصر لیست استفاده کنیم و سپس با استفاده از عملگر modulo، عدد را بررسی کنیم که زوج یا فرد است. سپس عدد را به یکی از دو لیست جداگانه برای اعداد فرد و زوج اضافه میکنیم. برای مثال:
در این برنامه، تابع even_odd()
یک لیست از اعداد به عنوان ورودی دریافت میکند و دو لیست جداگانه برای اعداد زوج و فرد ایجاد میکند. سپس با استفاده از یک حلقه برای گرفتن هر عدد از لیست، عدد را با عملگر modulo 2 بررسی میکند و در صورتی که باقیمانده صفر باشد، عدد را به لیست اعداد زوج اضافه میکند، در غیر این صورت، عدد را به لیست اعداد فرد اضافه میکند. در نهایت، دو لیست اعداد زوج و فرد در خروجی بازگردانده میشود.
سپس با استفاده از تابع input()
، یک رشته از کاربر گرفته میشود و با استفاده از تابع split()
، اعداد جداگانه از هم جدا میشوند و به عنوان ورودی به تابع even_odd()
داده میشوند. سپس مقدار بازگشتی تابع، یعنی دو لیست اعداد زوج و فرد، در خروجی چاپ میشود.
به عنوان مثال، فرض کنید کاربر اعداد زیر را وارد کرده باشد:
1, 5, 7, 10, 12, 15, 20
در این صورت، برنامه خروجی زیر را خواهد داد:
اعداد زوج: [10, 12, 20]
اعداد فرد: [1, 5, 7, 15]
در این خروجی، لیست اعداد زوج شامل اعداد 10، 12 و 20 است و لیست اعداد فرد شامل اعداد 1، 5، 7 و 15 است.
۵. برنامه ای بنویسید که تعداد حروف و اعداد در یک رشته را مشخص کند.
برای حل این مسئله، می توانید از حلقه و توابع مربوط به کاراکترها در پایتون استفاده کنید. کد زیر یک مثال ساده برای محاسبه تعداد حروف و اعداد در یک رشته است:
در این کد، یک تابع با نام count_chars_and_digits
تعریف شده است که یک رشته به عنوان ورودی دریافت می کند. در این تابع، یک حلقه برای پیمایش کردن تمام کاراکترهای رشته به کار گرفته شده است. در هر مرحله، با استفاده از توابع isalpha
و isdigit
بررسی می شود که کاراکتر فعلی حرف یا عدد است. در صورتی که حرف باشد، تعداد حروف یک واحد افزایش می یابد و در صورتی که عدد باشد، تعداد اعداد یک واحد افزایش می یابد. در نهایت، تابع یک دوتایی را به عنوان خروجی برمی گرداند که شامل تعداد حروف و تعداد اعداد در رشته است. می توانید از این تابع به شکل زیر استفاده کنید:
input_str = "Hello World 123"
char_count, digit_count = count_chars_and_digits(input_str)
print("تعداد حروف: ", char_count)
print("تعداد اعداد: ", digit_count)
این کد خروجی زیر را تولید می کند:
تعداد حروف: 10
تعداد اعداد: 3
۶. برنامه ای بنویسید که مجموع اعداد در یک لیست را محاسبه کند.
برای حل این مسئله، می توانید از حلقه و تابع sum در پایتون استفاده کنید. کد زیر یک مثال ساده برای محاسبه مجموع یک لیست از اعداد است:
+ مشاهده کد منبع
در این کد، یک تابع با نام calculate_sum
تعریف شده است که یک لیست از اعداد به عنوان ورودی دریافت می کند. در این تابع، یک حلقه برای پیمایش کردن تمام اعداد لیست به کار گرفته شده است. در هر مرحله، مقدار عدد فعلی به مجموع تعریف شده اضافه می شود. در نهایت، تابع مجموع را به عنوان خروجی برمی گرداند. می توانید از این تابع به شکل زیر استفاده کنید:
numbers = [1, 2, 3, 4, 5]
total = calculate_sum(numbers)
print("مجموع: ", total)
این کد خروجی زیر را تولید می کند:
مجموع: 15
۷. برنامه ای بنویسید که یک لیست را مرتب کند.
برای مرتبسازی یک لیست از اعداد در پایتون، میتوانید از تابع sorted()
استفاده کنید که یک لیست را به صورت صعودی مرتب میکند. برای مرتبکردن به صورت نزولی، میتوانید از پارامتر reverse=True
استفاده کنید. همچنین میتوانید از تابع sort()
لیست نیز استفاده کنید که به صورت مستقیم لیست را مرتب میکند.
+ مشاهده کد منبع
خروجی این کد به صورت زیر است:
ترتیب صعودی: [1, 2, 3, 4, 5]
ترتیب نزولی: [5, 4, 3, 2, 1]
ترتیب صعودی: [1, 2, 3, 4, 5]
ترتیب نزولی: [5, 4, 3, 2, 1]
۸. برنامه ای بنویسید که بررسی کند یک عدد اول هست یا خیر.
برای بررسی اینکه آیا یک عدد اول است یا نه، میتوانیم از یک حلقه for
استفاده کنیم و همه اعداد را از ۲ تا عدد ورودی بررسی کنیم. اگر عددی را پیدا کردیم که برای عدد ورودی بخشپذیر است، آن عدد اول نیست. اگر هیچ عددی پیدا نشد که برای عدد ورودی بخشپذیر باشد، آن عدد اول است.
به عنوان مثال، برای عدد ۱۳، از ۲ تا ۱۲ همه اعداد را بررسی میکنیم و میبینیم که هیچ عددی برای ۱۳ بخشپذیر نیست، پس ۱۳ یک عدد اول است.
کد برنامه به صورت زیر است:
+ مشاهده کد منبع
در این برنامه ابتدا عدد ورودی از کاربر گرفته شده و در متغیر num
ذخیره شده است. سپس با بررسی شرط، اگر عدد ورودی کوچکتر از ۲ باشد، خروجی “is not a prime number” چاپ میشود چون عددی کوچکتر از ۲ هیچ وقت اول نخواهد بود.
اگر شرط بالا برقرار نباشد، متغیر prime
به ابتدا به True
مقدار دهی شده است. سپس با استفاده از حلقه for
، اعداد از ۲ تا num
بررسی میشوند. اگر عددی پیدا شود که برای num
بخشپذیر باشد، متغیر prime
به False
تغییر مقدار میدهد و حلقه for
با استفاده از دستور break
متوقف میشود.
۹. برنامه ای بنویسید که تعداد تکرار یک عدد را مشخص کند.
برای حل این مسئله، می توانید از حلقه for
استفاده کنید و با استفاده از یک متغیر شمارنده، تعداد تکرار عدد داده شده در لیست را محاسبه کنید. به عنوان مثال:
+ مشاهده کد منبع
در این برنامه، ابتدا تابع count_occurrences
را تعریف کرده ایم که دو ورودی یک لیست و یک عدد می گیرد. سپس با استفاده از حلقه for
، تمامی اعضای لیست را بررسی کرده و هر بار که عدد داده شده با یکی از اعضای لیست برابر بود، متغیر شمارنده count
را یک واحد افزایش می دهیم. در نهایت، تعداد تکرار را به عنوان خروجی تابع بر می گردانیم.
در انتها، با ایجاد یک لیست و یک عدد دلخواه، تابع count_occurrences
را فراخوانی کرده و تعداد تکرار آن عدد را چاپ می کنیم.
۱۰. برنامه ای بنویسید که اعداد مثبت را به باینری تبدیل کند.
برنامه زیر یک عدد را از ورودی میگیرد و آن را به شکل باینری نمایش میدهد:
+ مشاهده کد منبع
ابتدا تابع decimal_to_binary تعریف شده است که یک عدد دهدهی را به شکل باینری تبدیل میکند و خروجی آن را به صورت یک رشته برمیگرداند. سپس عدد مورد نظر از ورودی گرفته و با استفاده از تابع decimal_to_binary به شکل باینری تبدیل شده و نمایش داده میشود.
۱۱. برنامهای بنویسید که یک فایل متنی را باز کند و محتوای آن را به صورت متنی چاپ کند.
برای این کار، میتوانید از تابع open()
استفاده کنید تا فایل را باز کرده و با استفاده از تابع read()
محتوای آن را بخوانید و چاپ کنید.
کد زیر یک مثال ساده برای این کار است:
+ مشاهده کد منبع
در این کد، ابتدا نام فایل مورد نظر را در متغیر filename
ذخیره میکنیم. سپس با استفاده از دستور with open(filename, "r") as f:
فایل را باز کرده و به عنوان یک شیء فایل در متغیر f
ذخیره میکنیم. سپس با استفاده از تابع read()
محتوای فایل را خوانده و در متغیر content
ذخیره میکنیم. در نهایت، با استفاده از دستور print(content)
محتوای فایل را چاپ میکنیم.
توجه کنید که برای اجرای این کد، فایل متنی با نام example.txt
در همان دایرکتوری کد باید وجود داشته باشد. همچنین، میتوانید نام فایل را به صورت مستقیم در دستور open()
قرار دهید. به عنوان مثال open("example.txt", "r")
.
۱۲. برنامهای بنویسید که یک فایل متنی را باز کند و تعداد کلمات، تعداد خطوط و تعداد حروف در فایل را محاسبه کند.
برای این کار، میتوانید از تابع open()
برای باز کردن فایل استفاده کنید و سپس با استفاده از تابعهای مربوط به رشتهها (str
)، تعداد کلمات، خطوط و حروف را محاسبه کنید.
کد زیر یک مثال ساده برای این کار است:
+ مشاهده کد منبع
در این کد، ابتدا نام فایل مورد نظر را در متغیر filename
ذخیره میکنیم. سپس با استفاده از دستور with open(filename, "r") as f:
فایل را باز کرده و به عنوان یک شیء فایل در متغیر f
ذخیره میکنیم. سپس با استفاده از تابع read()
محتوای فایل را خوانده و در متغیر content
ذخیره میکنیم. در ادامه، با استفاده از تابع split()
تعداد کلمات را با شمارش تعداد عناصر لیستی که با استفاده از split()
حاصل شدهاند محاسبه کرده و در متغیر num_words
ذخیره میکنیم. برای محاسبه تعداد خطوط از تعداد حروف خود استفاده میکنیم، با شمارش تعداد کاراکتر ‘\n’ و افزودن ۱ به آن تعداد خطوط محاسبه میشود. و در نهایت با تابع len()
تعداد حروف را محاسبه میکنیم و در متغیر num_chars
ذخیره میکنیم. سپس با استفاده از دستور print()
این مقادیر را چاپ میکنیم.
۱۳. برنامهای بنویسید که از کاربر دو ماتریس دو بعدی را با اندازه یکسان دریافت کند و ماتریس جمع و ماتریس ضرب آنها را محاسبه کند و چاپ کند.
برای این کار، میتوانید از لیستهای تو در تو (nested list
) برای نمایش ماتریسها استفاده کنید. برای محاسبه جمع دو ماتریس، میتوانید از دو حلقه for
استفاده کنید و در هر مرحله مقادیر دو ماتریس را جمع کنید و در یک ماتریس جدید ذخیره کنید. برای محاسبه ضرب دو ماتریس، میتوانید از تابع zip()
برای ترکیب ستونهای یک ماتریس با ردیفهای دیگری استفاده کنید و با ضرب مقادیر متناظر آنها، مقدار جدید را در یک ماتریس جدید ذخیره کنید.
کد زیر یک مثال ساده برای این کار است:
+ مشاهده کد منبع
در این کد، ابتدا با دستور input()
ابعاد ماتریسها را از کاربر دریافت کرده و در متغیر n
ذخیره میکنیم. سپس با استفاده از حلقه for
دوباره برای دریافت ماتریسها از کاربر، ابتدا یک لیست خالی به نام matrix1
یا matrix2
ایجاد کرده و در هر مرحله، یک ردیف جدید با استفاده از دستور input()
و تابع map()
و تابع int()
دریافت کرده و به شکل یک لیست به لیستهای matrix1
یا matrix2
اضافه میکنیم.
سپس برای محاسبه جمع دو ماتریس، یک لیست خالی به نام sum_matrix
ایجاد کرده و با استفاده از دو حلقه for
در هر مرحله، دو مقدار متناظر از دو ماتریس را جمع کرده و در یک لیست جدید ذخیره میکنیم.
برای محاسبه ضرب دو ماتریس، نیز یک لیست خالی به نام mul_matrix
ایجاد کرده و با استفاده از دو حلقه for
و تابع sum()
و تابع range()
، در هر مرحله، ضرب متناظر دو سطر و ستون ماتریسها را با هم جمع کرده و در یک لیست جدید ذخیره میکنیم.
در نهایت، با استفاده از دستور print()
، ماتریس جمع و ماتریس ضرب را چاپ میکنیم.
۱۴. برنامهای بنویسید که از کاربر یک ماتریس دو بعدی را با اندازه دلخواه دریافت کند و اعداد آن را به صورت تصادفی پر کند و سپس ماتریس را به صورت جایگزینی سطر و ستونهایش با همین عدد بزرگتر در صورتی که بزرگتر باشد، تغییر دهد.
میتوانید از کد زیر برای حل مسئله استفاده کنید:
+ مشاهده کد منبع
این برنامه با دریافت اندازه ماتریس از کاربر، یک ماتریس با اعداد تصادفی ایجاد میکند. سپس در یک حلقه دوتایی، بزرگترین عدد در هر سطر و ستون را پیدا کرده و در صورتی که هر یک از اعضای ماتریس کوچکتر از بزرگترین عدد در سطر و ستون خود باشد، آن عضو را با بزرگترین عدد جایگزین میکند. در نهایت، ماتریس جدید به همراه تغییرات چاپ میشود.
۱۵. برنامهای بنویسید که یک رشته را از ورودی بگیرد و مشخص کند که آیا این رشته پالیندروم است یا نه.
برای بررسی اینکه یک رشته پالیندروم است یا نه، باید رشته را به صورت معکوس خودش با مقایسه کنیم. برای این منظور، میتوان از دستورات زیر در زبان پایتون استفاده کرد:
+ مشاهده کد منبع
توضیحات: در این برنامه، ابتدا با استفاده از دستور input()، رشته مورد نظر از ورودی گرفته میشود. سپس با استفاده از نوشتن رشته به صورت معکوس شده (با استفاده از عملگر سلیس) و مقایسه آن با رشته اصلی، بررسی میشود که آیا رشته پالیندروم است یا نه. در نهایت، نتیجه بررسی به کاربر نمایش داده میشود.
۱۶. برنامهای بنویسید که دو رشته را از ورودی بگیرد و مشخص کند که آیا این دو رشته یک جفت آناگرام هستند یا نه.
برای بررسی اینکه دو رشته یک جفت آناگرام هستند یا نه، باید تعداد تکرار هر کاراکتر در دو رشته را بررسی کرده و با هم مقایسه کرد. برای این منظور، میتوان از دستورات زیر در زبان پایتون استفاده کرد:
+ مشاهده کد منبع
توضیحات: در این برنامه، ابتدا با استفاده از دستور input()
، دو رشته از ورودی گرفته میشود. سپس با تبدیل هر دو رشته به حروف کوچک و حذف فاصله، رشتهها آماده پردازش میشوند. سپس با استفاده از یک حلقه for و ایجاد یک دیکشنری، تعداد تکرار هر کاراکتر در هر رشته محاسبه شده و در دیکشنری ذخیره میشود. در نهایت، با مقایسه دو دیکشنری مربوط به دو رشته، بررسی میشود که آیا دو رشته یک جفت آناگرام هستند یا نه و نتیجه به کاربر نمایش داده میشود.
۱۷. برنامهای بنویسید که یک لیست از اعداد را از ورودی بگیرد و اعداد زوج را از اعداد فرد جدا کرده و دو لیست جداگانه از آنها بسازد و چاپ کند.
برای جداسازی اعداد زوج و فرد در یک لیست، میتوانیم از حلقه for استفاده کنیم و با بررسی هر عدد از لیست، آن را به لیستی که مورد نظرمان است اضافه کنیم. به عنوان مثال، برای جداسازی اعداد زوج و فرد، میتوانیم از کد زیر استفاده کنیم:
+ مشاهده کد منبع
در این کد، ابتدا با استفاده از دستور input()
یک رشته از اعداد از کاربر دریافت میکنیم و با استفاده از دستور split()
، آن را به یک لیست از اعداد تبدیل میکنیم. سپس با استفاده از حلقه for هر عدد را بررسی میکنیم و در صورتی که عدد زوج باشد، به لیست اعداد زوج و در غیر این صورت، به لیست اعداد فرد اضافه میکنیم. در نهایت، دو لیست را چاپ میکنیم.
۱۸. برنامهای بنویسید که یک فایل JSON را بخواند، محتویات آن را پردازش کند و نمایش دهد.
برای این کار، شما میتوانید از کتابخانه JSON پایتون استفاده کنید. این کتابخانه به شما امکان میدهد تا با استفاده از توابع آن، فایل JSON را بخوانید و دادههای آن را به صورت دیکشنریها و لیستها در پایتون بارگذاری کنید.
برای این تمرین، شما میتوانید یک فایل JSON ساده ایجاد کنید، مثلاً فایلی که حاوی اطلاعات کاربران است. سپس با استفاده از تابع load
کتابخانه JSON، این فایل را بارگذاری کنید و دادههای آن را به صورت دیکشنریها و لیستها در پایتون بارگذاری کنید. سپس با چاپ کردن این دیکشنریها و لیستها، محتوای فایل JSON را نمایش دهید.
به عنوان مثال، برای فایل JSON زیر:
+ مشاهده کد منبع
کد پایتون زیر، فایل JSON را بارگذاری میکند و دادههای آن را به صورت دیکشنریها و لیستها در پایتون بارگذاری میکند:
+ مشاهده کد منبع
این کد پایتون نتیجه زیر را نمایش میدهد:
John 25 john@example.com
Jane 30 jane@example.com
۱۹. برنامهای بنویسید که از API شهرهای جهان (مثلاً از سایت OpenWeatherMap) استفاده کند و برای شهری که کاربر وارد میکند، اطلاعات آب و هوای آن شهر را دریافت کند و چاپ کند.
برای انجام این تمرین، ابتدا باید اطلاعات مربوط به API را به کمک کتابخانه requests دریافت کرده و در قالب JSON آن را با استفاده از متد json()
به دیکشنری تبدیل کنید. سپس باید میتوانید به اطلاعات مورد نیاز برای هواپیمایی دسترسی پیدا کنید، مانند دما، فشار هوا، وضعیت آسمان و غیره.
در ادامه یک الگوی کد برای انجام این تمرین آمده است:
+ مشاهده کد منبع
این برنامه یک URL برای دریافت اطلاعات از یک API ایجاد میکند. سپس با استفاده از کتابخانه requests و ارسال درخواست به API با استفاده از متد get()
، اطلاعات مورد نیاز برای شهر وارد شده از طریق پارامتر city در URL، دریافت میشود. در نهایت، اطلاعات دریافت شده به کمک تابع json()
به شکل یک دیکشنری در متغیر data ذخیره شده و برای هر شهر، اطلاعات مربوط به دما و وضعیت آب و هوا چاپ میشود.
۲۰. برنامه ای بنویسید که دمای هوا را بر حسب سانتیگراد محاسبه کند.
برای محاسبه دمای هوا میتوانیم از فرمول ساده زیر استفاده کنیم:
Celsius = (Fahrenheit - 32) * 5/9
برای این کار، میتوانیم از کاربر ورودی دریافت کرده و سپس دمای هوا را به درجه سلسیوس تبدیل کنیم. در زیر یک نمونه کد برای این کار آمده است:
+ مشاهده کد منبع
در این کد، ابتدا دمای هوا به درجه فارنهایت از کاربر گرفته شده و سپس با استفاده از فرمول بالا، دمای هوا به درجه سلسیوس تبدیل شده و چاپ شده است.
آیا این مطلب برای شما مفید بود ؟