جزوه حلقه for در پایتون
جلسه سوم - حلقه for در پایتون
مرجع کامل: تعریف حلقه، for، range، break، continue، else - کدها قابل کپی هستند.
تعریف حلقه (Loop)
در برنامهنویسی، حلقه (Loop) یک ساختار کنترلی است که به برنامه اجازه میدهد دستورها یا بخش خاصی از کد را بهصورت تکراری اجرا کند تا زمانی که یک شرط مشخص برقرار باشد.
به بیان دیگر، حلقه باعث میشود فرآیندهای تکراری بهصورت خودکار و بدون نیاز به نوشتن چندبارهی کد انجام شوند.
تعریف حلقه for
در زبان پایتون، حلقه for نوعی حلقه تکرار شمارشی (counted loop) است که
برای پیمایش (iteration) روی یک دنباله از دادهها (sequence) مانند لیست، رشته، تاپل یا محدودهی عددی
(range) استفاده میشود.
for <variable> in <iterable>:
<some codes>
در این ساختار:
- متغیر در هر بار اجرا، یکی از عناصر مجموعه را دریافت میکند.
- دستورات داخل بلوک که با تورفتگی یا (indent) نوشته میشوند، برای هر عنصر اجرا میشوند.
کاربردهای متداول:
- پیمایش روی لیستها و رشتهها
- تکرار چند بارهی یک عملیات مشخص
- استفاده همراه با
range()برای ایجاد حلقههای عددی
چند تمرین برای درک بهتر
مثال: برنامهای بنویسید که عددی از کاربر دریافت کند، مجموع ارقامش را نمایش دهد
number = input("enter your number: ")
total = 0
for digit in number:
total += int(digit)
print(total)
# input: enter your number: 1234
# output: 10
مثال: برنامهای بنویسید که عددی دریافت کند و حاصلضرب ارقامش را نمایش دهد
number = input("enter your number: ")
product = 1
for digit in number:
product *= int(digit)
print(product)
# input: enter your number: 1234
# output: 24
مثال: برنامهای بنویسید که رشتهای را دریافت کند کاراکترهایش را با فاصله از هم نمایش دهد
string = input("enter your string: ")
for char in string:
print(char, end=" ")
# input: enter your string: hello
# output: h e l l o
مثال: برنامهای بنویسید که رشتهایی را دریافت کند کاراکترهایش به همراه تعداد تکرار آنها را نمایش دهد
word = input("enter your word: ")
for char in word:
print(char, word.count(char))
# input: enter your word: hello
# output:
# h 1
# e 1
# l 2
# l 2
# o 1
تعریف تابع range
در پایتون، تابع range() یک ابجکت قابل پیمایش (iterable) تولید میکند که
شامل یک دنبالهی اعداد صحیح (integer sequence) است.
این دنباله معمولاً برای حلقههای for استفاده میشود و میتواند از عدد
شروع تا عدد پایان با یک گام مشخص باشد.
پارامترهای تابع range(start, stop, step)
- start:
- عدد شروع دنباله (اولین مقدار تولید شده) و مقدار پیشفرض برابر صفر
- stop:
- عدد پایان (خود عدد در نظر گرفته نمیشود)
- step:
- میزان افزایش یا کاهش در هر مرحله
نکات مهم دربارهی range()
- تابع
range()خودش لیست نیست، بلکه یک iterable object است که فقط هنگام پیمایش در حلقه یا با تبدیل به لیستlist(range(...))قابل مشاهده است. - از
range()معمولاً در حلقههایforبرای انجام تکرار شمارشی (counted iteration) استفاده میشود. - اگر مقدار گام (step) منفی باشد، دنباله بهصورت معکوس (descending order) تولید میشود.
چند مثال ساده
مثال: برنامهای بنویسید که اعداد زوج صفر تا بیست را نمایش دهد
for i in range(21):
if i % 2 == 0:
print(i)
# output:
# 0
# 2
# 4
# 6
# 8
# 10
# 12
# 14
# 16
# 18
# 20
تمرین: برنامهای بنویسید اعداد 2 رقمی که به 3 و 5 بخشپذیر هستند را نمایش دهد
for i in range(10, 100):
if i % 3 == 0 and i % 5 == 0:
print(i)
# output:
# 15
# 30
# 45
# 60
# 75
# 90
دستور break و continue در حلقه for
دستور break در حلقه for
دستور break برای خروج فوری از حلقه استفاده میشود.
وقتی برنامه به break میرسد، کل حلقه متوقف میشود (نه فقط یک تکرار) و
اجرای برنامه از اولین خط بعد از حلقه ادامه پیدا میکند.
دستور continue در حلقه for
دستور continue برای رد کردن ادامهی اجرای حلقه در آن تکرار و رفتن به
مرحلهی بعدی (iteration بعدی) استفاده میشود.
به زبان ساده، وقتی برنامه به continue میرسد، کدهای بعد از آن در همان دور
از حلقه اجرا نمیشوند و مستقیماً به تکرار بعدی میرود.
دستور else در حلقه for
در پایتون، بخش else میتونه بعد از حلقه for
یا while بیاد.
کد داخل else فقط زمانی اجرا میشه که حلقه بهصورت کامل اجرا بشه (یعنی با
break متوقف نشده باشه).
به زبان سادهتر:
- اگه حلقه تا انتها اجرا بشه →
elseاجرا میشه - اگه حلقه زودتر با
breakتموم بشه →elseاجرا نمیشه
💡 تمرینها و سوالات
سوال 1: چاپ اعداد 1 تا 10
برنامهای بنویسید که اعداد 1 تا 10 را با استفاده از حلقه for چاپ کند.
# خروجی:
# 1
# 2
# 3
# ...
# 10
# راه حل:
for i in range(1, 11):
print(i)
سوال 2: محاسبه مجموع اعداد 1 تا n
برنامهای بنویسید که عددی از کاربر دریافت کند و مجموع اعداد 1 تا آن عدد را محاسبه و نمایش دهد.
# نمونه ورودی: 5
# خروجی: 15 (1+2+3+4+5)
# راه حل:
n = int(input("enter a number: "))
total = 0
for i in range(1, n + 1):
total += i
print(total)
سوال 3: جدول ضرب
برنامهای بنویسید که عددی از کاربر دریافت کند و جدول ضرب آن عدد را از 1 تا 10 نمایش دهد.
# نمونه ورودی: 3
# خروجی:
# 3 x 1 = 3
# 3 x 2 = 6
# ...
# 3 x 10 = 30
# راه حل:
n = int(input("enter a number: "))
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
سوال 4: محاسبه فاکتوریل
برنامهای بنویسید که عددی از کاربر دریافت کند و فاکتوریل آن را محاسبه کند.
# نمونه ورودی: 5
# خروجی: 120 (5! = 5×4×3×2×1)
# راه حل:
n = int(input("enter a number: "))
factorial = 1
for i in range(1, n + 1):
factorial *= i
print(factorial)
سوال 5: چاپ اعداد فرد
برنامهای بنویسید که اعداد فرد بین 1 تا 20 را نمایش دهد.
# خروجی: 1 3 5 7 9 11 13 15 17 19
# راه حل 1:
for i in range(1, 21):
if i % 2 != 0:
print(i, end=" ")
# راه حل 2 (استفاده از step):
for i in range(1, 21, 2):
print(i, end=" ")
سوال 6: وارونه کردن رشته
برنامهای بنویسید که رشتهای از کاربر دریافت کند و با استفاده از حلقه for آن را وارونه کند.
# نمونه ورودی: hello
# خروجی: olleh
# راه حل:
text = input("enter your text: ")
reversed_text = ""
for char in text:
reversed_text = char + reversed_text
print(reversed_text)
سوال 7: شمارش حروف صدادار
برنامهای بنویسید که رشتهای دریافت کند و تعداد حروف صدادار (a, e, i, o, u) را شمارش کند.
# نمونه ورودی: hello world
# خروجی: 3
# راه حل:
text = input("enter your text: ")
vowels = "aeiouAEIOU"
count = 0
for char in text:
if char in vowels:
count += 1
print(count)
سوال 8: چاپ الگوی ستاره
برنامهای بنویسید که عددی دریافت کند و به تعداد آن خط، الگوی ستاره بسازد (هر خط یک ستاره بیشتر).
# نمونه ورودی: 5
# خروجی:
# *
# **
# ***
# ****
# *****
# راه حل:
n = int(input("enter a number: "))
for i in range(1, n + 1):
print("*" * i)
سوال 9: یافتن بزرگترین عدد
برنامهای بنویسید که 5 عدد از کاربر دریافت کند و بزرگترین آنها را نمایش دهد.
# نمونه ورودی: 12, 45, 23, 67, 34
# خروجی: 67
# راه حل:
max_num = float('-inf') # یا میتوانید عدد خیلی کوچک بگذارید
for i in range(5):
num = int(input(f"enter number {i+1}: "))
if num > max_num:
max_num = num
print(f"max number: {max_num}")
سوال 10: اعداد اول تا n
برنامهای بنویسید که عددی دریافت کند و تمام اعداد اول کوچکتر یا مساوی آن را نمایش دهد.
# نمونه ورودی: 20
# خروجی: 2 3 5 7 11 13 17 19
# راه حل:
n = int(input("enter a number: "))
for num in range(2, n + 1):
is_prime = True
for i in range(2, num):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=" ")
سوال 11: مجموع ارقام عدد
برنامهای بنویسید که عددی دریافت کند و مجموع ارقام آن را محاسبه کند.
# نمونه ورودی: 1234
# خروجی: 10
# راه حل:
number = input("enter a number: ")
total = 0
for digit in number:
total += int(digit)
print(total)
سوال 12: شمارش کلمات
برنامهای بنویسید که یک جمله دریافت کند و تعداد کلمات آن را شمارش کند.
# نمونه ورودی: hello world from python
# خروجی: 4
# راه حل:
sentence = input("enter a sentence: ")
words = sentence.split()
count = 0
for word in words:
count += 1
print(count)
# یا به صورت سادهتر:
print(len(sentence.split()))
سوال 13: FizzBuzz
برنامهای بنویسید که اعداد 1 تا 30 را چاپ کند، اما برای مضربهای 3 کلمه "Fizz"، برای مضربهای 5 کلمه "Buzz" و برای مضربهای هر دو عدد "FizzBuzz" چاپ شود.
# خروجی:
# 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz ...
# راه حل:
for i in range(1, 31):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz", end=" ")
elif i % 3 == 0:
print("Fizz", end=" ")
elif i % 5 == 0:
print("Buzz", end=" ")
else:
print(i, end=" ")
سوال 14: جستجو در لیست
برنامهای بنویسید که رشتهای از کاربر دریافت کند و بررسی کند آیا حرف 'a' در آن وجود دارد یا خیر.
# نمونه ورودی: python
# خروجی: not found
# نمونه ورودی: java
# خروجی: found at index 1
# راه حل:
text = input("enter text: ")
found = False
for i in range(len(text)):
if text[i] == 'a':
print(f"found at index {i}")
found = True
break
if not found:
print("not found")
سوال 15: حذف تکراریها
برنامهای بنویسید که رشتهای دریافت کند و کاراکترهای تکراری را حذف کند (فقط اولین نمونه از هر کاراکتر باقی بماند).
# نمونه ورودی: hello
# خروجی: helo
# راه حل:
text = input("enter text: ")
result = ""
for char in text:
if char not in result:
result += char
print(result)
سوال 16: مجموع اعداد زوج
برنامهای بنویسید که مجموع اعداد زوج بین 1 تا 100 را محاسبه کند.
# خروجی: 2550
# راه حل 1:
total = 0
for i in range(1, 101):
if i % 2 == 0:
total += i
print(total)
# راه حل 2 (بهینهتر):
total = 0
for i in range(2, 101, 2):
total += i
print(total)
سوال 17: الگوی اعداد
برنامهای بنویسید که عددی دریافت کند و الگوی زیر را چاپ کند:
# نمونه ورودی: 4
# خروجی:
# 1
# 1 2
# 1 2 3
# 1 2 3 4
# راه حل:
n = int(input("enter a number: "))
for i in range(1, n + 1):
for j in range(1, i + 1):
print(j, end=" ")
print() # خط بعدی
سوال 18: شمارش حروف خاص
برنامهای بنویسید که رشتهای دریافت کند و تعداد حروف بزرگ و کوچک را جداگانه شمارش کند.
# نمونه ورودی: Hello World
# خروجی:
# uppercase: 2
# lowercase: 8
# راه حل:
text = input("enter text: ")
upper_count = 0
lower_count = 0
for char in text:
if char.isupper():
upper_count += 1
elif char.islower():
lower_count += 1
print(f"uppercase: {upper_count}")
print(f"lowercase: {lower_count}")
سوال 19: میانگین اعداد
برنامهای بنویسید که تعدادی عدد از کاربر دریافت کند (ابتدا تعداد اعداد را بپرسد) و میانگین آنها را محاسبه کند.
# نمونه ورودی:
# how many numbers? 4
# enter number 1: 10
# enter number 2: 20
# enter number 3: 30
# enter number 4: 40
# خروجی: average: 25.0
# راه حل:
count = int(input("how many numbers? "))
total = 0
for i in range(count):
num = float(input(f"enter number {i+1}: "))
total += num
average = total / count
print(f"average: {average}")
سوال 20: یافتن مقسومعلیهها
برنامهای بنویسید که عددی دریافت کند و تمام مقسومعلیههای آن را نمایش دهد.
# نمونه ورودی: 12
# خروجی: 1 2 3 4 6 12
# راه حل:
n = int(input("enter a number: "))
print("divisors:", end=" ")
for i in range(1, n + 1):
if n % i == 0:
print(i, end=" ")
دیدگاهتان را بنویسید