Table of Contents
هدف این بخش
در این بخش فقط تمرین میکنیم. فرض میکنیم با for، while، متغیر شمارنده، و کلمات کلیدی break و continue آشنا شدهاید.
اینجا انواع تمرینها را میبینید تا مهارت شما در حلقهها قویتر شود.
در بسیاری از تمرینها:
- ورودی را با
input()میگیرید. - اگر لازم بود، آن را با
int()به عدد تبدیل میکنید. - جواب را با
print()نمایش میدهید.
سعی کنید قبل از دیدن «راهنمایی» یا «پاسخ نمونه»، خودتان فکر کنید.
تمرینهای ساده با `while`
تمرین ۱: شمارش از ۱ تا n
هدف: تمرین شمارنده در حلقهٔ while.
مسئله:
عددی از کاربر بگیرید (مثلاً n) و اعداد ۱ تا n را چاپ کنید.
نمونه خروجی (اگر n=5):
1
2
3
4
5راهنمایی کوتاه:
- یک متغیر شمارنده مثل
i = 1بسازید. - تا وقتی
i <= nاست،iرا چاپ کنید و بعدiرا یکی زیاد کنید.
تمرین ۲: جمع اعداد از ۱ تا n
هدف: استفاده از متغیر جمع در کنار حلقه.
مسئله:
عددی مثل n از کاربر بگیرید و مجموع اعداد ۱ تا n را حساب و چاپ کنید.
برای مثال اگر n = 4 باشد:
$$1 + 2 + 3 + 4 = 10$$
نمونه خروجی (اگر n=4):
مجموع اعداد از 1 تا 4 برابر است با 10راهنمایی:
sum = 0- با یک حلقه از ۱ تا
nحرکت کنید و هر بار عدد فعلی را بهsumاضافه کنید.
تمرین ۳: شمارش معکوس
هدف: تمرین شمارنده کاهشی.
مسئله:
از کاربر یک عدد بگیرید و از آن تا ۱ را برعکس چاپ کنید.
نمونه خروجی (اگر n=5):
5
4
3
2
1
پایان!راهنمایی:
- شمارنده را از
nشروع کنید و هر بار یکی کم کنید تا به ۱ برسید.
تمرین ۴: حدس عدد با `while`
هدف: حلقهٔ تکرار تا رسیدن به یک شرط.
مسئله (نسخهٔ ساده):
یک برنامه بنویسید که:
- یک عدد مخفی در متغیر
secret = 7ذخیره کند (فعلاً ثابت). - از کاربر بخواهد حدس بزند.
- تا وقتی عدد درست حدس زده نشده، دوباره حدس بگیرد.
- وقتی درست حدس زد، پیام موفقیت چاپ کند.
نمونه اجرا:
یک عدد حدس بزن: 3
اشتباه است، دوباره حدس بزن!
یک عدد حدس بزن: 7
آفرین، درست حدس زدی!راهنمایی:
- یک متغیر برای نگه داشتن حدس کاربر بگیرید.
- تا وقتی
guess != secretاست، دوباره از کاربر ورودی بگیرید.
تمرینهای ساده با `for`
تمرین ۵: جدول ضرب یک عدد
هدف: استفاده از for با range.
مسئله:
یک عدد از کاربر بگیرید و جدول ضرب آن را از ۱ تا ۱۰ چاپ کنید.
نمونه خروجی (اگر n=3):
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
...
3 x 10 = 30راهنمایی:
- از
for i in range(1, 11):استفاده کنید. - حاصلضرب را با
n * iحساب کنید.
تمرین ۶: جمع چند عدد که کاربر میدهد
هدف: استفاده از for برای تکرار یک کار ثابت.
مسئله:
ابتدا از کاربر بپرسید چند عدد میخواهد وارد کند (مثلاً count).
بعد با استفاده از for همان تعداد عدد بگیرید و مجموع آنها را حساب کنید.
نمونه اجرا:
چند عدد میخواهی وارد کنی؟ 3
عدد 1 را وارد کن: 10
عدد 2 را وارد کن: 5
عدد 3 را وارد کن: 7
مجموع اعداد برابر است با 22راهنمایی:
- روی
range(1, count+1)حلقه بزنید. - هر بار یک عدد بگیرید و به
totalاضافه کنید.
تمرین ۷: چاپ اعداد زوج
هدف: تمرین شرط داخل حلقهٔ for.
مسئله:
عدد n را از کاربر بگیرید و تمام اعداد زوج از ۱ تا n را چاپ کنید.
نمونه خروجی (اگر n=10):
2
4
6
8
10راهنمایی:
- روی
range(1, n+1)حلقه بزنید. - اگر
i % 2 == 0بود، عدد را چاپ کنید.
تمرین با رشتهها و حلقه
تمرین ۸: شمارش حروف یک رشته
هدف: حرکت روی حروف رشته با حلقه.
مسئله:
یک متن از کاربر بگیرید و هر حرف آن را در یک خط جداگانه چاپ کنید.
نمونه اجرا:
یک متن بنویس: سلام
س
ل
ا
مراهنمایی:
- از
for ch in text:استفاده کنید.
تمرین ۹: شمارش تعداد حروف «ا»
هدف: استفاده از متغیر شمارنده همراه با شرط.
مسئله:
یک رشته از کاربر بگیرید و بشمارید چند بار حرف ا در آن آمده است.
نمونه اجرا:
یک متن بنویس: برنامه نویسی پایتون
تعداد 'ا' در متن: 3راهنمایی:
- یک متغیر
count = 0. - روی تکتک حروف حلقه بزنید.
- اگر حرف برابر
'ا'بود، شمارنده را یکی زیاد کنید.
تمرین ۱۰: برعکس چاپ کردن رشته
هدف: استفاده از اندیسها یا range معکوس.
مسئله:
یک رشته از کاربر بگیرید و آن را برعکس چاپ کنید.
(مثلاً «سلام» → «مالس»)
نمونه اجرا:
یک متن بنویس: سلام
مالسراهنمایی ساده (با حلقه):
- از
range(len(text)-1, -1, -1)استفاده کنید. - با
text[i]حروف را برعکس چاپ کنید.
(فعلاً از روشهای آماده مثل [::-1] صرفنظر کنید؛ تمرین حلقه است.)
تمرینهای ترکیبی با `break` و `continue`
تمرین ۱۱: توقف با `break` وقتی صفر دیدیم
هدف: تمرین خروج از حلقه.
مسئله:
یک حلقه بنویسید که مرتباً از کاربر عدد بگیرد و:
- اگر عدد غیرصفر بود، فقط آن را چاپ کند.
- اگر عدد صفر بود، حلقه متوقف شود و پیغام «برنامه تمام شد» چاپ شود.
نمونه اجرا:
یک عدد وارد کن: 5
شما عدد 5 را وارد کردید
یک عدد وارد کن: 10
شما عدد 10 را وارد کردید
یک عدد وارد کن: 0
برنامه تمام شدراهنمایی:
- از حلقهی
while True:استفاده کنید. - بعد از
input()اگر عدد صفر بود،break.
تمرین ۱۲: رد کردن اعداد منفی با `continue`
هدف: استفاده از continue.
مسئله:
یک حلقه بنویسید که ۵ عدد از کاربر بگیرد.
فقط اعداد مثبت را در مجموع حساب کند و در پایان مجموع را چاپ کند.
اعداد منفی را نادیده بگیرد (بدون خطا دادن).
نمونه اجرا:
عدد 1 را وارد کن: -3
عدد 2 را وارد کن: 10
عدد 3 را وارد کن: 4
عدد 4 را وارد کن: -1
عدد 5 را وارد کن: 2
مجموع اعداد مثبت: 16راهنمایی:
- اگر عدد
< 0بود، ازcontinueاستفاده کنید تا به ابتدای حلقه برگردید و چیزی به مجموع اضافه نکنید.
تمرین ۱۳: پیدا کردن اولین عدد بزرگتر از ۱۰۰
هدف: کار ترکیبی با حلقه و شرط و break.
مسئله:
یک حلقه بنویسید که از کاربر عدد بگیرد تا وقتی عددی بزرگتر از ۱۰۰ وارد کند.
وقتی این اتفاق افتاد:
- چاپ کنید: «اولین عدد بزرگتر از ۱۰۰ که وارد کردی: ...»
- سپس حلقه را متوقف کنید.
نمونه اجرا:
یک عدد وارد کن: 20
یک عدد وارد کن: 50
یک عدد وارد کن: 120
اولین عدد بزرگتر از 100 که وارد کردی: 120تمرینهای کمی چالشیتر
تمرین ۱۴: محاسبهٔ فاکتوریل
هدف: تمرین ضرب تکراری با حلقه.
مسئله:
عدد n را از کاربر بگیرید و فاکتوریل آن را حساب کنید.
فاکتوریل $n$ به صورت زیر تعریف میشود (برای $n \ge 1$):
$$
n! = 1 \times 2 \times 3 \times \dots \times n
$$
برای مثال:
$$
5! = 1 \times 2 \times 3 \times 4 \times 5 = 120
$$
نمونه اجرا:
یک عدد وارد کن: 5
فاکتوریل 5 برابر است با 120راهنمایی:
result = 1- روی اعداد ۱ تا
nباforحلقه بزنید و هر بار درresultضرب کنید.
تمرین ۱۵: پیدا کردن بزرگترین عدد
هدف: نگه داشتن مقدار بیشینه (max) در حلقه.
مسئله:
تعداد n از کاربر بگیرید، بعد n عدد از کاربر دریافت کنید و در پایان بزرگترین عدد را چاپ کنید.
نمونه اجرا:
چند عدد وارد میکنی؟ 4
عدد 1 را وارد کن: 10
عدد 2 را وارد کن: 25
عدد 3 را وارد کن: 7
عدد 4 را وارد کن: 19
بزرگترین عدد: 25راهنمایی ساده:
- اولین عدد را به عنوان «بزرگترین تا الان» ذخیره کنید (مثلاً
max_num). - برای بقیه اعداد، اگر عدد جدید از
max_numبزرگتر بود، آن را جایگزین کنید.
تمرین ۱۶: مجموع ارقام یک عدد
هدف: کار با عملگر تقسیم صحیح و باقیمانده در حلقه.
مسئله:
از کاربر یک عدد صحیح مثبت بگیرید و مجموع رقمهای آن را حساب کنید.
مثلاً:
ورودی: 1234
خروجی: 1 + 2 + 3 + 4 = 10
راهنمایی (ایده):
- تا وقتی عدد بزرگتر از ۰ است:
- رقم آخر را با
n % 10بگیرید. - عدد را با
n // 10کوچکتر کنید. - رقم آخر را به مجموع اضافه کنید.
تمرین ۱۷: چاپ الگوهای ساده
هدف: تمرین حلقههای تو در تو.
(الف) مثلث ستارهای
مسئله:
برای عدد n مثلثی از ستارهها چاپ کنید.
مثلاً اگر n = 4 باشد:
*
**
***
****راهنمایی:
- یک حلقه روی سطرها (
iاز ۱ تاn). - در هر سطر،
iتا ستاره چاپ کنید. - میتوانید از رشتهی
'' iهم استفاده کنید.
(ب) مربع ستارهای
برای n = 3:
***
***
***اینجا به یک حلقهٔ بیرونی برای سطر و یک حلقهٔ درونی برای ستون نیاز دارید (یا باز هم میتوانید از ضرب رشته استفاده کنید).
تمرین برای فکر کردن (بدون راهحل کامل)
این تمرینها را میتوانید بعد از تسلط روی بقیه، انجام دهید:
- اعداد اول تا n
عددnرا بگیرید و تمام اعداد اول بین ۱ تاnرا چاپ کنید. - حساب معدل
از کاربر بپرسید چند نمره میخواهد وارد کند. تکتک نمرهها را بگیرید، مجموع و بعد معدل را حساب کنید. در پایان اگر معدل بالاتر از یک حد خاص بود، پیام مناسب چاپ کنید. - شمارش کلمات در یک جمله
یک جمله از کاربر بگیرید و با استفاده از حلقه (بدون تابع آمادهی پیشرفته)، تعداد کلمات را تخمین بزنید (مثلاً بر اساس فاصلهٔ خالیspace).
پیشنهاد برای استفاده از این تمرینها
- هر تمرین را اول روی کاغذ یا در ذهن حل کنید:
- چه متغیرهایی لازم دارم؟
- چه نوع حلقهای مناسبتر است (
forیاwhile)؟ - بعد در پایتون پیادهسازی کنید.
- در مرحلهٔ بعد، سعی کنید همان تمرین را با روش متفاوتی حل کنید
(مثلاً اگر اول باwhileنوشتهاید، یک بار دیگر باforبنویسید).
در فصلهای بعدی، از همین مهارت حلقهها در کار با لیستها، رشتهها، فایلها و … زیاد استفاده خواهید کرد.