📌 برعکس کردن رشته در پایتون با ترکیب ()reversed و ()join
اگر بخوای یک رشته رو در پایتون بهصورت برعکس نمایش بدی، میتونی از ترکیب دو تابع ()reversed و ()join استفاده کنی:
text = "Python"
reversed_text = ''.join(reversed(text))
print(reversed_text) # خروجی: nohtyP
✅ نکات مهم:
🔹 این ()reversed یک iterator برمیگردونه که حروف رشته رو بهصورت برعکس تولید میکنه.
🔹 با ()join میتونی این حروف رو بههم بچسبونی و رشته نهایی بسازی.
🔹 این روش وقتی مفیده که بخوای کنترل بیشتری روی روند کار داشته باشی (مثلاً حروف خاص رو فیلتر کنی یا جداکننده بذاری).
مثال حرفهایتر:
text = "Python"
reversed_with_dash = '-'.join(reversed(text))
print(reversed_with_dash) # خروجی: n-o-h-t-y-P
💯 @PythonForYou 🧑💻👩💻
🔥 تورفتگی تو پایتون و شرطهای if: یه راز مهم! 🐍
تازه با if تو پایتون آشنا شدید؟ پس این پست برای شماست! یه قانون طلایی تو پایتون هست که باید یادتون بمونه: مراقب تورفتگی باشید! 😅
💡 تورفتگی چیه؟
تورفتگی یعنی فاصلهای که اول خط میذارید تا به پایتون بگید کدوم خطها زیر یه شرط if اجرا بشن. مثلاً مثل نقشهایه که به پایتون میگه: "هی، این خطها مال این شرطن!" 🗺
✅ یه مثال ساده:
if 5 > 3:
print("آره، 5 بزرگتر از 3ه!")
اینجا خط دوم باید یه کم (معمولاً 4 تا فاصله) از اول خط فاصله داشته باشه تا پایتون بفهمه زیر شرط ifه.
❌ اگه تورفتگی رو خراب کنیم چی میشه؟
اگه فاصله نذارید یا اشتباه فاصله بذارید، پایتون قاطی میکنه و ارور IndentationError میده! 😵 مثلاً:
if 5 > 3:
print("اوه، من خراب شدم!")
این کد کار نمیکنه چون خط دوم تورفتگی نداره.
🌟 نکتههای باحال برای تورفتگی درست:
همیشه از 4 فاصله (space) برای تورفتگی استفاده کنید.
اگه چند خط زیر if دارید، همه باید یه اندازه فاصله داشته باشن:
if 10 > 5:
print("10 بزرگتره!")
print("عالیه!")
فاصله و تب (Tab) رو قاطی نکنید! پایتون اینو دوست نداره. 🚫
💯 @PythonForYou 🧑💻👩💻
پایتون برای شما
🔥 تورفتگی تو پایتون و شرطهای if: یه راز مهم! 🐍 تازه با if تو پایتون آشنا شدید؟ پس این پست برای شما
چرا پایتون تب و فاصله رو قاطی نمیکنه؟
تو پایتون، تورفتگی (Indentation) مثل یه قانون طلاییه که به مفسر پایتون میگه کدوم خطها توی یه بلوک (مثل زیر یه شرط if) هستن. حالا پایتون برای خوندن تورفتگی خیلی حساسه! 😅
تب (Tab) و فاصله (Space) دو روش مختلف برای ایجاد تورفتگی هستن. یه تب معمولاً برابر با 4 یا 8 تا فاصلهست (بستگی به ویرایشگر کدت داره).
اگه تو یه فایل کد، یه جا از تب و یه جا از فاصله استفاده کنی، پایتون گیج میشه! چون نمیتونه بفهمه این دو تا تورفتگی یکسانن یا نه. این باعث ارور IndentationError میشه. 😵
مثال:
if 5 > 3:
print("این با 4 تا فاصله است")
print("این با یه تب است")
این کد ارور میده چون خط سوم با تب و خط دوم با فاصله تورفتگی داره.
چرا این مشکل پیش میاد؟ 🤔
پایتون از تورفتگی برای ساختار کد استفاده میکنه (برخلاف زبونای دیگه که از کروشه {} یا کلمههای خاص استفاده میکنن). اگه تب و فاصله قاطی بشن، مفسر پایتون نمیتونه درست تشخیص بده که کدوم خط کجاست.
راه حل؟ 🤗
یا فقط از فاصله (Space) استفاده کن (معمولاً 4 تا فاصله برای هر سطح تورفتگی).
یا فقط از تب (Tab) استفاده کن (ولی فاصله استانداردتره و بیشتر توصیه میشه).
ویرایشگرای کد مثل VSCode یا PyCharm میتونن تنظیم بشن که خودشون فاصله رو درست کنن و نذارن تب و فاصله قاطی بشن! 😎
💯 @PythonForYou 🧑💻👩💻
حتی اگه یک درصد احتمال موفقیت وجود دارد، با تمام توان بجنگید 🌺
💯 @PythonForYou 🧑💻👩💻
📢 همهچیز درباره حلقههای تکرار (for و while) + نکات حرفهای 🐍
حالا قراره غوغا کنیم و حلقههای تکرار (Loops) در پایتون رو از صفر تا صد بررسی کنیم! 😎
حلقهها قلب تپنده برنامهنویسیان و برای تکرار کارها، پیمایش دادهها، و حتی حل مسائل پیچیده استفاده میشن.
از حلقههای for و while گرفته تا نکات ریز تورفتگی، کنترل جریان، و ترفندهای بهینه، همهچیز اینجاست! 🚀
بریم شروع کنیم!
💯 @PythonForYou 🧑💻👩💻
حلقههای تکرار چیه؟ 🤔
حلقهها بهت اجازه میدن یه بلوک کد رو چندبار اجرا کنی. تو پایتون دو نوع حلقه اصلی داریم:
🔹 حلقه for: برای پیمایش اشیاء قابلتکرار (مثل فهرست، رشته، یا range) عالیه.
🔸 حلقه while: تا وقتی یه شرط درست باشه، کد رو تکرار میکنه.
—-—-—-—-—-—-—-—-—-—-—
1️⃣ حلقه for: پیمایش ساده و قدرتمند
💥 کاربرد: وقتی میدونی چندبار باید تکرار کنی یا میخوای روی یه مجموعه (مثل فهرست یا رشته) پیمایش کنی.
📝 سینتکس:
for item in iterable:
# Kode inja tekrar mishe
📌 مثال ساده:
fruits = ["sib", "moz", "portoghal"]
for fruit in fruits:
print(f"Mive: {fruit}")
# Khoroji:
# Mive: sib
# Mive: moz
# Mive: portoghal
✨ مثال با ایندکس (استفاده از enumerate):
for i, fruit in enumerate(fruits):
print(f"Index {i}: {fruit}")
# Khoroji:
# Index 0: sib
# Index 1: moz
# Index 2: portoghal
✨ مثال با range:
for num in range(1, 5):
print(f"Adad: {num}")
# Khoroji:
# Adad: 1
# Adad: 2
# Adad: 3
# Adad: 4
💡 نکات ریز برای for:
- از enumerate() برای دسترسی همزمان به ایندکس و مقدار استفاده کن (بهتر از range(len())).
- برای فهرستهای بزرگ، مستقیم روی فهرست پیمایش نکن، از ژنراتorها (مثل range) استفاده کن تا حافظه کمتری مصرف بشه.
- مراقب تغییر فهرست تو حلقه باش (مثل حذف یا اضافه عنصر)، چون ممکنه ایندکسها بههم بریزه:
numbers = [1, 2, 3]
for num in numbers:
numbers.append(4) # Bad idea! Halghe bi-payan mishe
💯 @PythonForYou 🧑💻👩💻
2️⃣ حلقه while: تکرار تا وقتی شرط درسته
💥 کاربرد: وقتی نمیدونی چندبار باید تکرار کنی و فقط یه شرط داری.
📝 سینتکس:
while condition:
# Kode inja tekrar mishe
✨ مثال ساده:
count = 1
while count <= 5:
print(f"Shomar: {count}")
count += 1
# Khoroji:
# Shomar: 1
# Shomar: 2
# Shomar: 3
# Shomar: 4
# Shomar: 5
✨ مثال با شرط پیچیده:
password = ""
while password != "1234":
password = input("Ramz ro vared kon: ")
if password == "1234":
print("Khosh omadi! ✅")
else:
print("Ramz ghalat! 🚫")
💡 نکات ریز برای while:
- همیشه یه راه خروج از حلقه بذار (مثل افزایش متغیر یا شرط break)، وگرنه حلقه بیپایان میشه:
while True: # Bad idea! Halghe bi-payan
print("Inja gir mikoni!")
- برای جلوگیری از حلقه بیپایان، از یه شرط منطقی یا محدودیت (مثل حداکثر تعداد تکرار) استفاده کن:
tries = 0
while tries < 3:
print("Try kardan...")
tries += 1
💯 @PythonForYou 🧑💻👩💻
3️⃣ کنترل جریان در حلقهها
💥 برای مدیریت بهتر حلقهها، از دستورات زیر استفاده کن:
🔸 break: حلقه رو کامل متوقف میکنه
for num in range(10):
if num == 5:
break
print(num)
# Khoroji: 0, 1, 2, 3, 4
🔸 continue: تکرار فعلی رو رد میکنه و میره به تکرار بعدی.
for num in range(5):
if num % 2 == 0:
continue
print(f"Fard: {num}")
# Khoroji: Fard: 1, Fard: 3
🔸نکته else با حلقهها: اگه حلقه بدون break تموم بشه، بلوک else اجرا میشه.
numbers = [1, 3, 5]
for num in numbers:
if num == 2:
print("Adad 2 peyda shod!")
break
else:
print("Adad 2 nabood! 🚫")
# Khoroji: Adad 2 nabood!
💡 نکته ریز:
- دقت کن else تو حلقهها وقتی مفیده که میخوای مطمئن بشی حلقه کامل اجرا شده.
- از break و continue با احتیاط استفاده کن تا کد خوانا بمونه.
💯 @PythonForYou 🧑💻👩💻
4️⃣ پیشگیری از خطاهای تورفتگی
💥 تورفتگی تو پایتون حیاتیه و اشتباه توش باعث ارور یا رفتار غلط میشه.
🔸 تورفتگی فراموششده:
for num in range(3):
print(num) # IndentationError
- درست:
for num in range(3):
print(num)
🔸 تورفتگی خطوط اضافی فراموششده:
for num in range(3):
print(num)
print("Payan") # Bayad kharej az halghe bashe
🔸 تورفتگی غیرضروری:
print("Salam") # IndentationError
🔸 تورفتگی غیرضروری پس از حلقه:
for num in range(3):
print(num)
print("Ghalat!") # In to halghe-st
🔸 فراموشی دو نقطه (:):
for num in range(3) # SyntaxError
print(num)
💡 ترفند حرفهای:
- همیشه از 4 فاصله (space) به جای تب استفاده کن.
- تو ویرایشگر (مثل VS Code)، تنظیم کن که تب به 4 فاصله تبدیل بشه.
- از ابزارهای linting مثل flake8 برای پیدا کردن خطاهای تورفتگی استفاده کن.
💯 @PythonForYou 🧑💻👩💻
5️⃣ تکنیکهای پیشرفته با حلقهها
⭐️ 1. حلقههای تودرتو (Nested Loops)
💥 برای کار با دادههای پیچیده (مثل ماتریس) از حلقههای تودرتو استفاده کن.
- مثال: چاپ ماتریس:
matrix = [[1, 2, 3], [4, 5, 6]]
for row in matrix:
for num in row:
print(num, end=" ")
print() # Line jadid
# Khoroji:
# 1 2 3
# 4 5 6
💡 نکته ریز:
- حلقههای تودرتو برای دادههای بزرگ میتونن کند باشن. از List Comprehension به جاش استفاده کن:
flat = [num for row in matrix for num in row]
print(flat) # Khoroji: [1, 2, 3, 4, 5, 6]
—-—-—-—-—-—-—-—-—-—-—
⭐️ 2. استفاده از range() در حلقهها
💥 استفاده از range(start, stop, step) برای ساخت دنبالههای عددی عالیه.
- مثال:
for num in range(0, 10, 2):
print(f"Zoj: {num}")
# Khoroji: Zoj: 0, Zoj: 2, Zoj: 4, Zoj: 6, Zoj: 8
💡 نکته ریز:
- برای فهرستهای بزرگ، مستقیم از range() تو حلقه استفاده کن تا حافظه کمتری مصرف بشه:
for i in range(1000000):
if i == 5:
break
—-—-—-—-—-—-—-—-—-—-—
⭐️ 3. حلقهها و List Comprehension
💥 برای کارهای ساده، List Comprehension جایگزین حلقههای for میشه.
- مثال حلقه معمولی:
numbers = [1, 2, 3, 4]
squares = []
for num in numbers:
squares.append(num**2)
print(squares) # Khoroji: [1, 4, 9, 16]
- با List Comprehension:
squares = [num**2 for num in numbers]
print(squares) # Khoroji: [1, 4, 9, 16]
💡 نکته ریز:
- استفاده از List Comprehension سریعتر و خواناتر از حلقه معمولیه.
- برای شرطهای پیچیده هم کار میکنه:
evens = [num for num in numbers if num % 2 == 0]
print(evens) # Khoroji: [2, 4]
—-—-—-—-—-—-—-—-—-—-—
⭐️ 4. حلقهها و ژنراتورها
💥 برای صرفهجویی در حافظه، از ژنراتورها به جای فهرست استفاده کن.
- مثال:
for num in (x**2 for x in range(1000)): # Generator
if num > 100:
break
print(num)
💡 نکته ریز:
- ژنراتورها فقط مقادیر رو موقع نیاز تولید میکنن، پس برای دادههای بزرگ عالیان.
💯 @PythonForYou 🧑💻👩💻
6️⃣ مدیریت خطاها در حلقهها
💥 حلقهها ممکنه باعث خطاهایی مثل IndexError یا حلقه بیپایان بشن.
✨ مثال مدیریت خطا:
fruits = ["sib", "moz"]
try:
for i in range(5):
print(fruits[i])
except IndexError:
print("Indeks na-mojood! 🚫")
✨ مثال جلوگیری از حلقه بیپایان:
count = 0
while count < 5:
print(f"Shomar: {count}")
count += 1 # Faramoosh in, halghe bi-payan mishe!
—-—-—-—-—-—-—-—-—-—-—
7️⃣ مثالهای کاربردی
✨ محاسبه فاکتوریل با while:
n = 5
factorial = 1
while n > 0:
factorial *= n
n -= 1
print(f"Factorial: {factorial}") # Khoroji: Factorial: 120
✨ جستجوی خطی با for:
numbers = [3, 7, 2, 9]
target = 7
for i, num in enumerate(numbers):
if num == target:
print(f"Target {target} dar index {i} peyda shod!")
break
else:
print("Target nabood! 🚫")
✨ تولید فهرست فیبوناچی:
n = 6
fib = [1, 1]
for i in range(2, n):
fib.append(fib[i-1] + fib[i-2])
print(fib) # Khoroji: [1, 1, 2, 3, 5, 8]
✨ چاپ الگوی ستاره با حلقه تودرتو:
for i in range(5):
for j in range(i + 1):
print("*", end="")
print()
# Khoroji:
# *
# **
# ***
# ****
# *****
—-—-—-—-—-—-—-—-—-—-—
8️⃣ نکات حرفهای
🔸 بهینهسازی حافظه:
برای دادههای بزرگ، از ژنراتورها یا ()range مستقیم استفاده کن:
for i in range(1000000):
if i == 5:
break
🔸 خوانایی کد:
- اسمهای معنیدار برای متغیرها انتخاب کن (مثل fruit به جای x).
- از ()enumerate به جای range(len()) استفاده کن.
🔸 جلوگیری از حلقههای بیپایان:
- همیشه یه شرط خروج (مثل break یا افزایش متغیر) تو while بذار.
- برای تست، یه محدودیت حداکثر تکرار اضافه کن:
tries = 0
while tries < 1000:
tries += 1
if some_condition:
break
🔸 ترکیب با توابع داخلی:
- برای جمع، از sum() به جای حلقه استفاده کن:
numbers = [1, 2, 3, 4]
total = sum(numbers) # Tondtar az halghe
💯 @PythonForYou 🧑💻👩💻
📢 تسلط بر تابع ()range 🐍
در ادامه قراره یه ابزار کلیدی تو پایتون به اسم ()range رو از صفر تا صد بررسی کنیم! 😎
این تابع برای ساخت دنبالههای عددی، پیمایش تو حلقهها، و حتی کارهای پیچیدهتر عالیه. از مفاهیم پایه تا ترفندهای حرفهای، همهچیز اینجاست! 🚀
بریم شروع کنیم!
تابع ()range چیه؟ 🤔
تابع ()range یه تابع داخلی (built-in) تو پایتونه که یه دنباله عددی تولید میکنه. این دنباله معمولاً تو حلقهها، ساخت فهرستها، یا مدیریت ایندکسها استفاده میشه. نکته مهم اینه که ()range یه شیء از نوع range میسازه که خیلی بهینهست، چون اعداد رو بهصورت تنبل (lazy) و فقط موقع نیاز تولید میکنه، نه اینکه کل فهرست رو تو حافظه نگه داره.
—-—-—-—-—-—-—-—-—-—-—
📝 سینتکس:
range(start, stop, step)
🔸 start: عدد شروع (اختیاری، پیشفرض 0).
🔸 stop: عدد پایان (اجباری، خودش شامل نمیشه).
🔸 step: فاصله بین اعداد (اختیاری، پیشفرض 1).
📌 نکته: خروجی ()range یه شیء rangeه، نه فهرست. برای تبدیل به فهرست، از ()list استفاده کن:
numbers = list(range(5))
print(numbers) # Khoroji: [0, 1, 2, 3, 4]
—-—-—-—-—-—-—-—-—-—-—
💠 کاربردهای اصلی ()range
1️⃣ پیمایش تو حلقههای for
تابع ()range برای تکرار یه تعداد مشخص تو حلقههای for خیلی پرکاربرده.
✨ مثال ساده (از 0 تا stop-1):
for num in range(5):
print(f"Adad: {num}")
# Khoroji:
# Adad: 0
# Adad: 1
# Adad: 2
# Adad: 3
# Adad: 4
✨ مثال با start و stop:
for num in range(2, 7):
print(f"Adad: {num}")
# Khoroji:
# Adad: 2
# Adad: 3
# Adad: 4
# Adad: 5
# Adad: 6
✨ مثال با step:
for num in range(0, 10, 2):
print(f"Zoj: {num}")
# Khoroji:
# Zoj: 0
# Zoj: 2
# Zoj: 4
# Zoj: 6
# Zoj: 8
—-—-—-—-—-—-—-—-—-—-—
2️⃣ ساخت فهرستهای عددی
با تبدیل ()range به فهرست، میتونی دنبالههای عددی بسازی.
✨ مثال:
numbers = list(range(1, 6))
print(numbers) # Khoroji: [1, 2, 3, 4, 5]
✨ مثال با step منفی (معکوس):
reverse_numbers = list(range(10, 0, -1))
print(reverse_numbers) # Khoroji: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
—-—-—-—-—-—-—-—-—-—-—
3️⃣ پیمایش با ایندکس تو فهرستها
تابع ()range با ()len برای دسترسی به ایندکسهای فهرست استفاده میشه.
✨ مثال:
fruits = ["sib", "moz", "portoghal"]
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
# Khoroji:
# Index 0: sib
# Index 1: moz
# Index 2: portoghal
💡 ترفند بهتر: به جای range(len())، از ()enumerate استفاده کن که خواناتر و بهینهتره:
for i, fruit in enumerate(fruits):
print(f"Index {i}: {fruit}")
💯 @PythonForYou 🧑💻👩💻