⭐️ نکات ریز و ترفندهای حرفهای
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 🧑💻👩💻
✅ 1️⃣ شمارش تعداد اعداد مثبت و منفی
سؤال:
الگوریتمی بنویسید که ابتدا عدد n را از ورودی دریافت کند. سپس n عدد دیگر را نیز از ورودی خوانده، تعداد اعداد مثبت و تعداد اعداد منفی را در بین آنها مشخص کرده و در خروجی نمایش دهد.
# دریافت تعداد اعدادی که کاربر وارد میکند
n = int(input("تعداد اعداد را وارد کن: "))
# تعریف شمارنده برای اعداد مثبت
positive_count = 0
# تعریف شمارنده برای اعداد منفی
negative_count = 0
# حلقه برای گرفتن n عدد و بررسی مثبت یا منفی بودن آنها
for i in range(n):
# دریافت عدد از کاربر
num = int(input("عدد را وارد کن: "))
# اگر عدد مثبت بود، شمارنده مثبتها افزایش یابد
if num > 0:
positive_count += 1
# اگر عدد منفی بود، شمارنده منفیها افزایش یابد
elif num < 0:
negative_count += 1
# نمایش تعداد اعداد مثبت
print("تعداد اعداد مثبت:", positive_count)
# نمایش تعداد اعداد منفی
print("تعداد اعداد منفی:", negative_count)
⬟〰️⬟〰️⬟〰️⬟〰️⬟
✅ 2️⃣ بیشترین و کمترین نمره
سؤال:
الگوریتمی بنویسید که ابتدا تعداد دانشجویان را از ورودی دریافت کند. سپس نمرات آنها را گرفته، بیشترین و کمترین نمره را پیدا کرده و در خروجی نمایش دهد.
# دریافت تعداد دانشجویان
n = int(input("تعداد دانشجویان: "))
# دریافت اولین نمره
first_score = int(input("نمره 1 را وارد کن: "))
# فرض میکنیم اولین نمره، بیشترین و کمترین نمره است
max_score = first_score
min_score = first_score
# شروع حلقه برای دریافت نمرات باقیمانده
for i in range(n - 1):
# دریافت نمره جدید
score = int(input("نمره بعدی را وارد کن: "))
# اگر نمره جدید بیشتر بود، بهروزرسانی max
if score > max_score:
max_score = score
# اگر نمره جدید کمتر بود، بهروزرسانی min
if score < min_score:
min_score = score
# نمایش بیشترین نمره
print("بیشترین نمره:", max_score)
# نمایش کمترین نمره
print("کمترین نمره:", min_score)
⬟〰️⬟〰️⬟〰️⬟〰️⬟
✅ 3️⃣ شمارش تکرار یک عدد خاص
سؤال:
الگوریتمی بنویسید که ابتدا دو عدد x و n را دریافت کند. سپس n عدد دیگر را نیز گرفته، تعداد دفعات تکرار عدد x در بین آنها را در خروجی نمایش دهد.
# دریافت عدد خاص x
x = int(input("عدد موردنظر x را وارد کن: "))
# دریافت تعداد اعدادی که وارد میشوند
n = int(input("تعداد اعداد را وارد کن: "))
# شمارنده برای تعداد تکرار x
count = 0
# حلقه برای دریافت و بررسی اعداد
for i in range(n):
# دریافت عدد
num = int(input("عدد را وارد کن: "))
# اگر برابر x بود، شمارنده را زیاد کن
if num == x:
count += 1
# نمایش تعداد تکرار x
print("تعداد تکرار عدد", x, "برابر است با:", count)
⬟〰️⬟〰️⬟〰️⬟〰️⬟
✅ 4️⃣ نمایش مقسومعلیههای یک عدد
سؤال:
الگوریتمی بنویسید که عددی صحیح و مثبت را از ورودی گرفته، سپس تمام مقسومعلیههای آن عدد را نمایش دهد.
# دریافت عدد مثبت از کاربر
n = int(input("عدد مثبت را وارد کن: "))
# بررسی همه عددها از 1 تا n
for i in range(1, n + 1):
# اگر n بر i بخشپذیر بود، یعنی i مقسومعلیه n است
if n % i == 0:
# نمایش مقسومعلیه
print(i)
💯 @PythonForYou 🧑💻👩💻
✅ 5️⃣ نمایش الگوی عددی
سؤال:
الگوریتمی بنویسید که خروجی زیر را نمایش دهد:
1
22
333
4444
55555
# حلقه برای عددهای 1 تا 5
for i in range(1, 6):
# تعریف رشته خالی برای ساخت خط مورد نظر
line = ""
# تکرار عدد i به تعداد i بار
for j in range(i):
line += str(i)
# نمایش خط ساختهشده
print(line)
⬟〰️⬟〰️⬟〰️⬟〰️⬟
✅ 6️⃣ تشخیص اول بودن عدد
سؤال:
الگوریتمی بنویسید که یک عدد صحیح و مثبت را از ورودی گرفته، سپس بررسی کند آیا آن عدد اول است یا خیر.
(✅ عددی اول است که فقط دو مقسومعلیه داشته باشد: ۱ و خودش.)
# دریافت عدد مثبت
n = int(input("عدد مثبت را وارد کن: "))
# شمارنده مقسومعلیهها
divisor_count = 0
# بررسی تمام عددها از 1 تا n
for i in range(1, n + 1):
# اگر n بر i بخشپذیر بود، شمارنده را زیاد کن
if n % i == 0:
divisor_count += 1
# اگر دقیقاً دو مقسومعلیه داشت (1 و خودش)، عدد اول است
if divisor_count == 2:
print("عدد اول است")
# در غیر این صورت عدد اول نیست
else:
print("عدد اول نیست")
⬟〰️⬟〰️⬟〰️⬟〰️⬟
✅ 7️⃣ نمایش تمام اعداد اول کوچکتر از n
سؤال:
الگوریتمی بنویسید که یک عدد صحیح و مثبت n را گرفته، سپس تمام اعداد اول کوچکتر از آن را در خروجی چاپ کند.
# دریافت عدد مثبت n
n = int(input("عدد مثبت را وارد کن: "))
# بررسی عددهای 2 تا n-1
for num in range(2, n):
# شمارنده مقسومعلیههای عدد جاری
count = 0
# بررسی مقسومعلیههای عدد جاری
for i in range(1, num + 1):
if num % i == 0:
count += 1
# اگر فقط 2 مقسومعلیه داشت، عدد اول است
if count == 2:
print(num)
💯 @PythonForYou 🧑💻👩💻
📝 حقوق متخصصان هوش مصنوعی چقدر است؟
چطور ممکن است یک شغل آیندهدار، زندگی مالی افراد را زیرورو کند؟ دنیای تازهای در انتظار کسانی است که به دنیای هوش مصنوعی قدم میگذارند.
صدای کوبیدن سرها بر روی میزها را میشنوید؟ این صدای کارمندانی است که به انتخاب رشتهی خود در دانشگاه افسوس میخورند زیرا بهجای علوم کامپیوتر، سراغ رشتههایی مثل زبان انگلیسی یا روانشناسی رفتهاند. درحالی که رقابت استخدام در صنعت فناوری بالا گرفته است و مهندسان هوش مصنوعی خودشان شرایط کاری و حقوقشان را تعیین میکنند.
حقوق در حوزهی فناوری از عددهای چشمگیر تا گاهی غیرقابلباور متغیر است. طبق دادههای پروندههای فدرال، کارکنان فنی در OpenAI میتوانند تا سالانه ۵۳۰٬۰۰۰ دلار دریافت کنند. در آنتروپیک نیز مهندسان تحقیقاتی تا ۶۹۰٬۰۰۰ دلار دستمزد میگیرند. حتی مهندسان نرمافزار در شرکتهای یونیکورن عادی (شرکتهای استارتاپی با ارزش حداقل یک میلیارد دلار) بهطور معمول سالانه ۲۵۰٬۰۰۰ دلار درآمد دارند.
💯 @PythonForYou 🧑💻👩💻
✨ نمونه سوالات جالب با پایتون
1️⃣ چاپ چارچوب مستطیل ستارهای (مستطیل توخالی)
width = 10
height = 4
row = 1
while row <= height:
if row == 1 or row == height:
print("* " * width)
else:
print("* " + " " * (width+2) + "*")
row += 1
🔸 خروجی:
* * * * * * * * * *
* *
* *
* * * * * * * * * *
💯 @PythonForYou 🧑💻👩💻
✨ نمونه سوالات جالب با پایتون
2️⃣ تشخیص عدد کامل (Perfect Number)
عدد کامل در ریاضیات به عددی گفته میشود که مجموع مقسومعلیههای مثبتی (غیر از خودش) برابر خود عدد باشد. مثلا ۶ یک عدد کامل است چون مقسومعلیههای مثبتش (به جز خودش) ۱، ۲ و ۳ هستند و 1+2+3=6. عدد کامل بعدی ۲۸ است (1+2+4+7+14=28).
برنامهای بنویسید که یک عدد را گرفته و تشخیص دهد آیا کامل است یا خیر.
# Daryaft adad az karbar
number = int(input("Yek adad vared kon: "))
# Hesab kardan majmoo maghsoom alayh ha
sum_divisors = 0
i = 1
while i < number:
if number % i == 0:
sum_divisors += i
i += 1
# Check kardan kamil boodan
if sum_divisors == number:
print(f"Adad {number} adad kamil ast!")
else:
print(f"Adad {number} adad kamil nist!")
💯 @PythonForYou 🧑💻👩💻
✨ نمونه سوالات جالب با پایتون
3️⃣ تولید مثلث پاسکال
مثلث پاسکال یک آرایش مثلثی از اعداد است که هر عدد داخل آن برابر مجموع دو عدد بالای خودش است. ردیف اول آن ۱ است، ردیف دوم 1 1، ردیف سوم 1 2 1، ردیف چهارم 1 3 3 1 و الی آخر. معلمان ریاضی گاهی از دانشآموزان میخواهند چند ردیف اول این مثلث را بنویسند.
برنامهای بنویسید که یک عدد rows بگیرد و مثلث پاسکال را تا آن تعداد ردیف چاپ کند.
# Daryaft tedad radif ha az karbar
rows = int(input("Tedad radif ha ro vared kon: "))
# Sakht mesal pascal
pascal = []
row = 0
while row < rows:
# Sakht radif jadid
new_row = []
col = 0
while col <= row:
# Agar avval ya akhar radif bashe, 1 bezar
if col == 0 or col == row:
new_row.append(1)
else:
# Majmoo do adad balayi
new_row.append(pascal[row-1][col-1] + pascal[row-1][col])
col += 1
pascal.append(new_row)
row += 1
# Chap kardan mesal pascal
row = 0
while row < rows:
# Chap kardan space baraye align
print(" " * (rows - row - 1), end="")
col = 0
while col <= row:
print(pascal[row][col], end=" ")
col += 1
print() # Berim be radif badi
row += 1
💯 @PythonForYou 🧑💻👩💻
✨ نمونه سوالات جالب با پایتون
4️⃣ برنامهای بنویسید که یک رشته را از ورودی دریافت کند و تعداد حروف الفبایی، تعداد رقمها و تعداد سایر نمادها (کاراکترهایی که نه حرف هستند و نه رقم) را در آن رشته محاسبه و گزارش کند. به عنوان مثال برای ورودی “P@#yn26at^&i5ve” باید خروجی اعلام کند که ۸ حرف، ۳ رقم و ۴ علامت ویژه موجود است.
# Daryaft reshte az karbar
string = input("Yek reshte vared kon: ")
# Shomaresh horoof, argham va alamat
letter_count = 0
digit_count = 0
symbol_count = 0
index = 0
while index < len(string):
char = string[index]
if char.isalpha(): # Check kardan horoof alfaba
letter_count += 1
elif char.isdigit(): # Check kardan argham
digit_count += 1
else: # Alamat digar
symbol_count += 1
index += 1
# Chap natije
print(f"Tedad horoof alfaba: {letter_count}")
print(f"Tedad argham: {digit_count}")
print(f"Tedad alamat vije: {symbol_count}")
💯 @PythonForYou 🧑💻👩💻
📱 4 پرامپت ChatGPT برای مشورت با 4 نابغه تاریخ
📰میخوای با دیوید گاگینز رو در رو صحبت کنی؟ یا بشینی پای صحبت های چارلی مانگر؟ یا حتی گفت و گو با متخصص رهبری و هدف یعنی سایمون سینک؟!
1️⃣ دیوید گاگینز - راز دردناک رشد بیوقفه
• مثل دیوید گاگینز فکر کن نماد تاب آوری و غلبه بر محدودیتها به من نشون بده افراد خارق العاده چطور از حد خودشون عبور میکنن ذهن باورها و رفتارهاشون رو تحلیل کن حتی وقتی شرایط سخته و نا امید کننده ست.
مثال های واقعی بیار و اگه لازمه با حقیقت های ناراحت کننده منو روبرو کن
🔢 چارلی مانگر - طرز فکر خارقالعادهها
• مثل چارلی مانگر فکر کن استاد مدلهای ذهنی ۵ مدل ذهنی جدید و خاص بساز که تصمیم گیری ها مو ساده کنه به من کمک کن آدمها رو بهتر بفهمم از اشتباهات درس بگیرم و فرصت های رشد رو کشف کنم. این مدل ها باید هم ساده باشن هم آنقدر قوی که سبک فکرم رو برای همیشه عوض کنن
🔢 سایمون سینک - ذهنیت میراث ساز
• مثل «سایمون سینک فکر کن متخصص رهبری و هدف. هدف من فقط رشد نیست میخوام چیزی بسازم که اثر موندگار داشته باشه به من ذهنیتی یاد بده که تاثیر نفوذ و درآمدم رو چند برابر کنه از تاکتیک ها فراتر برو و تغییرات ذهنی ای رو نشونم بده که یه رهبر واقعی رو از بقیه متمایز می کنه.
🔢 وارن بافت - نقشه ثروت آینده من
• مثل وارن بافت فکر کن بزرگترین سرمایه گذار دنیا خودم رو در ۱۰ سال آینده تصور کن با ذهنیتی مثل اون نسخه از من چه innovation يا abundance leadership چیزهایی رو بلده؟ چی رو یاد گرفته و چی رو رها کرده بر اساس این ذهنیت یک برنامه تمرینی بساز که باعث بشه من غیر قابل جایگزین در بازار باشم
💯 @PythonForYou 🧑💻👩💻
تابع تو پایتون چیه و چرا باید بلدش باشیم؟ 🤔
امروز قراره با یکی از مهمترین ابزارهای پایتون آشنا بشیم: توابع! تابع مثل یه ماشین جادویی تو برنامهنویسیه. یه سری دستور مینویسی، یه اسم براش انتخاب میکنی، و هر وقت لازم شد صداش میکنی تا کارتو انجام بده. انگار یه دستیار خفن داری که همیشه آمادهست! 🤖
فکر کن تو یه برنامه داری که باید چند بار یه پیغام خاص (مثلاً "Welcome to coding!") رو چاپ کنی. اگه بخوای هر بار print بنویسی، کدت شلوغ میشه و اگه بخوای پیغامو عوض کنی، باید همهجا رو تغییر بدی. 😣 با تابع، فقط یه بار کد رو مینویسی و هر جا لازم شد صداش میکنی. اینجوری هم وقتت ذخیره میشه، هم کدت تمیز و مرتب میمونه.
✨تو پایتون، تابع با کلمه def تعریف میشه. بیاید یه مثال ساده ببینیم:
def say_welcome():
print("Welcome to coding! :D") # Print a welcome message
say_welcome()
say_welcome()
🔹 خروجی:
Welcome to coding! :D
Welcome to coding! :D
🔰 این کد چیکار میکنه؟
تابع say_welcome رو تعریف کردیم که یه پیغام چاپ میکنه.
دو بار صداش کردیم، پس پیغام دو بار چاپ میشه.
اگه بخوام پیغام رو به "Let's code!" تغییر بدم، فقط یه خط تو تابع عوض میشه.
✅ چرا تابع مهمه؟
- صرفهجویی تو وقت: بهجای نوشتن چندباره یه کد، یه تابع مینویسی و صداش میکنی.
- کد خواناتر: برنامهت مثل یه کتاب مرتب میشه که همه راحت میفهمنش.
- آسون برای تغییر: اگه بخوای چیزی رو عوض کنی، فقط تو تابع تغییر میدی، نه کل برنامه.
✨ مثال روزمره: فرض کن تو یه کافیشاپ کار میکنی و هر روز باید یه قهوه خاص درست کنی. بهجای اینکه هر بار مراحل (مثل آسیاب قهوه، دم کردن، اضافه کردن شکر) رو از اول بنویسی، یه دستورالعمل به اسم make_coffee مینویسی و فقط صداش میکنی. ☕️
❓ تمرین: یه تابع بنویسید که یه پیغام خوشامدگویی با اسم خودتون چاپ کنه (مثلاً "Hey Ali, you're a coding star!"). تابع رو سه بار صدا کنید.
💯 @PythonForYou 🧑💻👩💻