eitaa logo
پایتون برای شما
107 دنبال‌کننده
29 عکس
0 ویدیو
25 فایل
جایی برای یادگیری پایتون 👨‍💻👩‍💻 ارتباط با مدرس: @Ali_Reza_Noorbakhsh
مشاهده در ایتا
دانلود
پایتون برای شما
🔥 تورفتگی تو پایتون و شرط‌های 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 🧑‍💻👩‍💻
⭐️ نکات ریز و ترفندهای حرفه‌ای 1️⃣ بهینه بودن ()range: تابع ()range یه شیء تنبل تولید می‌کنه که حافظه کمی مصرف می‌کنه، چون اعداد رو یکی‌یکی می‌سازه. import sys print(sys.getsizeof(range(1000000))) # ~48 bytes print(sys.getsizeof(list(range(1000000)))) # ~9000000 bytes 2️⃣ استفاده از step منفی برای دنباله‌های نزولی: برای ساخت دنباله معکوس، step باید منفی باشه و start از stop بزرگ‌تر: for num in range(5, 0, -1): print(num) # Khoroji: 5, 4, 3, 2, 1 3️⃣ ترکیب با List Comprehension: برای ساخت فهرست‌های پیچیده‌تر: squares = [x**2 for x in range(1, 6)] print(squares) # Khoroji: [1, 4, 9, 16, 25] 4️⃣ مدیریت خطاها: اگه step صفر باشه یا بازه نامعتبر باشه، ارور می‌گیره: try: list(range(1, 5, 0)) except ValueError: print("Step ghalat! 🚫") # Khoroji: Step ghalat! 5️⃣ استفاده تو حلقه‌های while: هرچند کمتر رایجه، ولی می‌تونی ()range رو تو while استفاده کنی: i = 0 r = range(5) while i < len(r): print(r[i]) i += 1 # Khoroji: 0, 1, 2, 3, 4 6️⃣ ترکیب با توابع داخلی: دقت کن ()range با sum، min، max و غیره برای محاسبات سریع عالیه: numbers = range(1, 6) print(sum(numbers)) # Khoroji: 15 print(max(numbers)) # Khoroji: 5 print(min(numbers)) # Khoroji: 1 7️⃣ پیمایش معکوس با ()reversed: به جای step منفی، می‌تونی از reversed(range()) استفاده کنی: for num in reversed(range(1, 6)): print(num) # Khoroji: 5, 4, 3, 2, 1 8️⃣ دسترسی به ایندکس‌ها: تابع ()range می‌تونه برای دسترسی به ایندکس‌های خاص تو فهرست‌ها استفاده بشه: numbers = ["a", "b", "c", "d"] for i in range(1, len(numbers), 2): print(numbers[i]) # Khoroji: b, d 💯 @PythonForYou 🧑‍💻👩‍💻
🟢 مثال‌های کاربردی 1️⃣ چاپ اعداد فرد: for num in range(1, 10, 2): print(f"Fard: {num}") # Khoroji: Fard: 1, Fard: 3, Fard: 5, Fard: 7, Fard: 9 2️⃣ ساخت جدول ضرب: for i in range(1, 6): for j in range(1, 6): print(f"{i} * {j} = {i * j}", end="\t") print() # Khoroji: # 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 # 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 # ... 3️⃣ محاسبه مجموع اعداد: total = sum(range(1, 101)) print(f"Jame 1 ta 100: {total}") # Khoroji: Jame 1 ta 100: 5050 4️⃣ چرخش ایندکس‌ها در فهرست: numbers = ["a", "b", "c", "d"] k = 2 rotated = [numbers[i % len(numbers)] for i in range(k, k + len(numbers))] print(rotated) # Khoroji: ["c", "d", "a", "b"] 5️⃣ الگوی ستاره با ()range: for i in range(5): print("*" * (i + 1)) # Khoroji: # * # ** # *** # **** # ***** 🔴 نکات حرفه‌ای 🔸 صرفه‌جویی در حافظه: برای داده‌های بزرگ، مستقیم از ()range تو حلقه استفاده کن، نه list(range()): for i in range(1000000): if i == 5: break print(i) 🔸 خوانایی کد: از step واضح استفاده کن (مثل range(0, 10, 2) برای اعداد زوج). 🔸 به جای (()range(len، ترجیحاً از ()enumerate استفاده کن. 🔸 ترکیب با ژنراتورها: برای بهینه‌تر شدن، range() رو با ژنراتورها ترکیب کن: evens_gen = (x for x in range(0, 10, 2)) print(list(evens_gen)) # Khoroji: [0, 2, 4, 6, 8] 🔸 مدیریت بازه‌های بزرگ برای بازه‌های خیلی بزرگ، از step بزرگ‌تر استفاده کن تا سرعت بیشتر بشه: for i in range(0, 1000000, 1000): print(i) 🔸 استفاده با itertools: برای کارهای پیچیده‌تر، از ماژول itertools استفاده کن: from itertools import islice numbers = range(100) print(list(islice(numbers, 5))) # Khoroji: [0, 1, 2, 3, 4] 💯 @PythonForYou 🧑‍💻👩‍💻