یه نکته که خیلیها بهش فکر نمیکنن و ممکنه یه روز خیلی اذیت کنه:
هیچوقت دو تا رشته رو بدون نرمالسازی یونیکد با هم مقایسه نکن.
فکر میکنی دو تا رشته که شکلشون یکیه، پس برابرن؟ نه همیشه. مثلاً حرف «é» رو در نظر بگیر. یه بار به صورت یک کاراکتر واحد نوشته میشه (U+00E9)، یه بار هم به صورت حرف «e» به علاوه یه اکسنت ترکیبی (U+0065 + U+0301). این دو تا تو نمایش یکسان به نظر میرسن، ولی تو حافظه فرق دارن. پس == میگه برابر نیستن.
این دقیقاً کجا دردسر میشه؟ جاهایی که کاربر اسم یا ایمیل وارد میکنه. یا وقتی فایلها رو بر اساس اسم مقایسه میکنی. یا تو URLها. ممکنه کاربر نتونه لاگین کنه چون یه بار با کیبورد عربی نوشته و یه بار با کیبورد انگلیسی، یا از copy-paste استفاده کرده.
راهحلش سادهست: قبل از مقایسه، نرمالسازی کن.
معمولاً NFC کافیه، ولی بسته به کاربرد ممکنه NFD یا NFKC یا NFKD هم لازم بشه. (NFKC برای چیزهایی مثل «fi» که به «fi» تبدیل میشه.)
فقط یه هشدار: نرمالسازی میتونه طول رشته رو عوض کنه. پس اگه بعدش میخوای index بزنی، حواست باشه.
این نکته تو پروژههای واقعی خیلی پیش میاد، مخصوصاً وقتی با کاربرای بینالمللی طرف هستی.
@comma_code
@comma_code1
#python #programing #Comparison #comma_code #Normalization
#پایتون #برنامهنویسی #مقایسه #کاما_کد #نرمالسازی
هیچوقت دو تا رشته رو بدون نرمالسازی یونیکد با هم مقایسه نکن.
فکر میکنی دو تا رشته که شکلشون یکیه، پس برابرن؟ نه همیشه. مثلاً حرف «é» رو در نظر بگیر. یه بار به صورت یک کاراکتر واحد نوشته میشه (U+00E9)، یه بار هم به صورت حرف «e» به علاوه یه اکسنت ترکیبی (U+0065 + U+0301). این دو تا تو نمایش یکسان به نظر میرسن، ولی تو حافظه فرق دارن. پس == میگه برابر نیستن.
این دقیقاً کجا دردسر میشه؟ جاهایی که کاربر اسم یا ایمیل وارد میکنه. یا وقتی فایلها رو بر اساس اسم مقایسه میکنی. یا تو URLها. ممکنه کاربر نتونه لاگین کنه چون یه بار با کیبورد عربی نوشته و یه بار با کیبورد انگلیسی، یا از copy-paste استفاده کرده.
راهحلش سادهست: قبل از مقایسه، نرمالسازی کن.
import unicodedata
s1 = unicodedata.normalize('NFC', s1)
s2 = unicodedata.normalize('NFC', s2)
if s1 == s2:
...
معمولاً NFC کافیه، ولی بسته به کاربرد ممکنه NFD یا NFKC یا NFKD هم لازم بشه. (NFKC برای چیزهایی مثل «fi» که به «fi» تبدیل میشه.)
فقط یه هشدار: نرمالسازی میتونه طول رشته رو عوض کنه. پس اگه بعدش میخوای index بزنی، حواست باشه.
این نکته تو پروژههای واقعی خیلی پیش میاد، مخصوصاً وقتی با کاربرای بینالمللی طرف هستی.
@comma_code
@comma_code1
#python #programing #Comparison #comma_code #Normalization
#پایتون #برنامهنویسی #مقایسه #کاما_کد #نرمالسازی
❤2👍1🔥1
🐍 آموزش لیستها (List) در پایتون
📌 لیست یکی از مهمترین ساختارهای داده در پایتون است که به ما اجازه میدهد چندین مقدار را در یک متغیر ذخیره کنیم.
🔹 ۱. ساخت لیست
برای ساخت لیست از "[]" استفاده میکنیم و عناصر را با کاما از یکدیگر جدا میکنیم.
لیست میتواند شامل انواع مختلف داده باشد.
━━━━━━━━━━━━━━━━━━
🔹 ۲. دسترسی به عناصر (Indexing)
اندیس عناصر از صفر شروع میشود.
خروجی:
Python
Java
JavaScript
📌 اندیس "-1" به آخرین عنصر اشاره میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۳. برش لیست (Slicing)
خروجی:
[20, 30, 40]
[10, 30, 50]
[50, 40, 30, 20, 10]
ساختار کلی:
نکته: اندیس "end" در نتیجه قرار نمیگیرد.
━━━━━━━━━━━━━━━━━━
🔹 ۴. تغییر عناصر لیست
لیستها از نوع "Mutable" هستند؛ یعنی میتوان عناصر آنها را تغییر داد.
خروجی:
[100, 20, 30]
━━━━━━━━━━━━━━━━━━
🔥 متدهای مهم لیست ها
1. append()
اضافه کردن یک عنصر به انتهای لیست
2. extend()
اضافه کردن تمام عناصر یک مجموعه قابل پیمایش، مانند یک لیست دیگر، به انتهای لیست
3. insert()
اضافه کردن یک عنصر به لیست در اندیس مشخص
4. remove()
حذف اولین عنصر لیست که مقدار آن با مقدار مشخصشده برابر است
5. pop()
حذف و برگرداندن عنصر با اندیس مشخص؛ اگر اندیس تعیین نشود، آخرین عنصر حذف میشود.
6. clear()
حذف تمام عناصر لیست
7. index()
پیدا کردن اندیس اولین عنصر با مقدار مشخص
8. count()
شمارش تعداد تکرار یک مقدار در لیست
9. sort()
مرتبسازی عناصر لیست؛ بهصورت پیشفرض صعودی و با reverse=True بهصورت نزولی
10. reverse()
معکوس کردن ترتیب فعلی عناصر لیست، بدون مرتبسازی آنها
نکته مهم:
متدهای sort() و reverse() ترتیب خود لیست را تغییر میدهند؛ اما sorted() یک لیست جدید و مرتبشده برمیگرداند.
━━━━━━━━━━━━━━━━━━
🔹 ۵. توابع کاربردی برای لیستها
خروجی:
5
10
50
150
- "len()" تعداد عناصر
- "min()" کوچکترین مقدار
- "max()" بزرگترین مقدار
- "sum()" مجموع مقادیر عددی
━━━━━━━━━━━━━━━━━━
🔹 ۶. بررسی وجود یک عنصر
با استفاده از "in" بررسی میکنیم که آیا یک مقدار در لیست وجود دارد یا خیر.
خروجی:
True
False
━━━━━━━━━━━━━━━━━━
🔹 ۷. تفاوت کپی کردن لیست
در این مثال، هر دو متغیر به یک لیست اشاره میکنند:
خروجی:
[1, 2, 3, 4]
[1, 2, 3, 4]
اما با استفاده از "copy" یک کپی سطحی ایجاد میکنیم:
خروجی:
[1, 2, 3]
[1, 2, 3, 4]
━━━━━━━━━━━━━━━━━━
💡 نکته:
متدهایی مانند "append()"، "extend()"، "sort()" و "reverse()" خود لیست را تغییر میدهند و معمولاً مقدار "None" برمیگردانند؛ بنابراین نتیجه آنها را مستقیماً بهعنوان لیست جدید ذخیره نکنید !
#Python
#آموزش_پایتون
#برنامه_نویسی
📌 لیست یکی از مهمترین ساختارهای داده در پایتون است که به ما اجازه میدهد چندین مقدار را در یک متغیر ذخیره کنیم.
🔹 ۱. ساخت لیست
برای ساخت لیست از "[]" استفاده میکنیم و عناصر را با کاما از یکدیگر جدا میکنیم.
numbers = [10, 20, 30, 40, 50]
names = ["Ali", "Sara", "Reza"]
mixed = [10, "Python", 3.14, True]
empty = []
لیست میتواند شامل انواع مختلف داده باشد.
━━━━━━━━━━━━━━━━━━
🔹 ۲. دسترسی به عناصر (Indexing)
اندیس عناصر از صفر شروع میشود.
languages = ["Python", "Java", "C++", "JavaScript"]
print(languages[0])
print(languages[1])
print(languages[-1])
خروجی:
Python
Java
JavaScript
📌 اندیس "-1" به آخرین عنصر اشاره میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۳. برش لیست (Slicing)
print(numbers[1:4])
print(numbers[::2])
print(numbers[::-1])
خروجی:
[20, 30, 40]
[10, 30, 50]
[50, 40, 30, 20, 10]
ساختار کلی:
list[start:end:step]
نکته: اندیس "end" در نتیجه قرار نمیگیرد.
━━━━━━━━━━━━━━━━━━
🔹 ۴. تغییر عناصر لیست
لیستها از نوع "Mutable" هستند؛ یعنی میتوان عناصر آنها را تغییر داد.
numbers = [10, 20, 30]
numbers[0] = 100
print(numbers)
خروجی:
[100, 20, 30]
━━━━━━━━━━━━━━━━━━
🔥 متدهای مهم لیست ها
1. append()
اضافه کردن یک عنصر به انتهای لیست
2. extend()
اضافه کردن تمام عناصر یک مجموعه قابل پیمایش، مانند یک لیست دیگر، به انتهای لیست
3. insert()
اضافه کردن یک عنصر به لیست در اندیس مشخص
4. remove()
حذف اولین عنصر لیست که مقدار آن با مقدار مشخصشده برابر است
5. pop()
حذف و برگرداندن عنصر با اندیس مشخص؛ اگر اندیس تعیین نشود، آخرین عنصر حذف میشود.
6. clear()
حذف تمام عناصر لیست
7. index()
پیدا کردن اندیس اولین عنصر با مقدار مشخص
8. count()
شمارش تعداد تکرار یک مقدار در لیست
9. sort()
مرتبسازی عناصر لیست؛ بهصورت پیشفرض صعودی و با reverse=True بهصورت نزولی
10. reverse()
معکوس کردن ترتیب فعلی عناصر لیست، بدون مرتبسازی آنها
نکته مهم:
متدهای sort() و reverse() ترتیب خود لیست را تغییر میدهند؛ اما sorted() یک لیست جدید و مرتبشده برمیگرداند.
━━━━━━━━━━━━━━━━━━
🔹 ۵. توابع کاربردی برای لیستها
numbers = [10, 20, 30, 40, 50]
print(len(numbers))
print(min(numbers))
print(max(numbers))
print(sum(numbers))
خروجی:
5
10
50
150
- "len()" تعداد عناصر
- "min()" کوچکترین مقدار
- "max()" بزرگترین مقدار
- "sum()" مجموع مقادیر عددی
━━━━━━━━━━━━━━━━━━
🔹 ۶. بررسی وجود یک عنصر
با استفاده از "in" بررسی میکنیم که آیا یک مقدار در لیست وجود دارد یا خیر.
languages = ["Python", "Java", "C++"]
print("Python" in languages)
print("PHP" in languages)
خروجی:
True
False
━━━━━━━━━━━━━━━━━━
🔹 ۷. تفاوت کپی کردن لیست
در این مثال، هر دو متغیر به یک لیست اشاره میکنند:
a = [1, 2, 3]
b = a
b.append(4)
print(a)
print(b)
خروجی:
[1, 2, 3, 4]
[1, 2, 3, 4]
اما با استفاده از "copy" یک کپی سطحی ایجاد میکنیم:
a = [1, 2, 3]
b = a.copy()
b.append(4)
print(a)
print(b)
خروجی:
[1, 2, 3]
[1, 2, 3, 4]
━━━━━━━━━━━━━━━━━━
💡 نکته:
متدهایی مانند "append()"، "extend()"، "sort()" و "reverse()" خود لیست را تغییر میدهند و معمولاً مقدار "None" برمیگردانند؛ بنابراین نتیجه آنها را مستقیماً بهعنوان لیست جدید ذخیره نکنید !
#Python
#آموزش_پایتون
#برنامه_نویسی
❤2
📚 آشنایی با تاپل (Tuple) در پایتون
🐍 یکی از انواع دادهای مهم در پایتون، "tuple" است.
تاپل برای نگهداری چند مقدار در یک متغیر استفاده میشود؛ درست مانند لیست، با این تفاوت مهم که تاپل تغییرناپذیر (Immutable) است.
━━━━━━━━━━━━━━━━━━
🔹 ۱. ساخت تاپل (Creating a Tuple)
برای ساخت تاپل، از پرانتز "()" استفاده میکنیم:
📤 خروجی:
(10, 20, 30, 40)
('Ali', 'Sara', 'Reza')
(10, 'Python', 3.14, True)
💡 تاپل میتواند مقادیر با انواع دادهای متفاوت را در خود نگه دارد.
━━━━━━━━━━━━━━━━━━
🔹 ۲. ساخت تاپل تکعضوی
برای ساخت تاپل با یک عضو، حتماً باید بعد از مقدار یک کاما "," قرار دهیم:
📤 خروجی:
<class 'tuple'>
<class 'int'>
⚠️ پرانتز بهتنهایی تاپل نمیسازد؛ وجود کاما تعیینکننده است.
━━━━━━━━━━━━━━━━━━
🔹 ۳. دسترسی به اعضای تاپل (Indexing)
مانند لیست و رشته، برای دسترسی به اعضای تاپل از اندیس استفاده میکنیم.
📤 خروجی:
Python
C++
Go
📌 اندیس از صفر شروع میشود و اندیس منفی از انتهای تاپل شمارش میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۴. برش زدن تاپل (Slicing)
با استفاده از "start"، "stop" و "step" میتوانیم بخشی از تاپل را استخراج کنیم.
📤 خروجی:
(20, 30, 40)
(10, 20, 30)
(10, 30, 50)
(60, 50, 40, 30, 20, 10)
💡 توجه کنید که اندیس "stop" در نتیجه قرار نمیگیرد.
━━━━━━━━━━━━━━━━━━
🔹 ۵. تغییرناپذیری تاپل (Immutability)
پس از ساخت تاپل، نمیتوانیم اعضای آن را تغییر دهیم، حذف کنیم یا عضو جدیدی به آن اضافه کنیم.
📤 خروجی:
TypeError
❌ متدهایی مانند "append()" و "remove()" برای تاپل وجود ندارند.
✅ البته اگر یکی از اعضای تاپل یک شیء تغییرپذیر، مانند لیست، باشد، میتوانیم محتوای همان لیست را تغییر دهیم:
📤 خروجی:
(10, [20, 30, 50], 40)
📌 خود تاپل تغییر نکرده است؛ بلکه شیء لیستی که درون آن قرار دارد تغییر کرده است.
━━━━━━━━━━━━━━━━━━
🔹 ۶. متدهای مهم تاپل
تاپل فقط دو متد اصلی دارد:
۱. "count()"
— تعداد تکرار یک مقدار را برمیگرداند.
📤 خروجی:
3
۲. "index()"
— اندیس اولین وقوع یک مقدار را برمیگرداند.
📤 خروجی:
1
⚠️ اگر مقدار موردنظر در تاپل وجود نداشته باشد، "index()" خطای "ValueError" ایجاد میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۷. چند تابع کاربردی برای تاپل
توابع داخلی پایتون میتوانند روی تاپلها استفاده شوند:
📤 خروجی:
5
5
25
75
📌 برای استفاده از "sum()"، "min()" و "max()" در این مثال، اعضا باید اعداد سازگار با عملیات مربوطه باشند.
━━━━━━━━━━━━━━━━━━
💡 چه زمانی از تاپل استفاده کنیم؟
وقتی مجموعهای از مقادیر داریم که قرار نیست ساختار اعضای آن تغییر کند؛ مانند مختصات، اطلاعات ثابت یا دادههای بازگشتی یک تابع.
━━━━━━━━━━━━━━━━━━
🔹 ۸. بازکردن اعضای تاپل (Unpacking)
میتوانیم اعضای تاپل را مستقیماً داخل چند متغیر قرار دهیم:
📤 خروجی:
Ali
20
Python
━━━━━━━━━━━━━━━━━━
#Python
#آموزش_پایتون
#تاپل
#Tuple
#برنامه_نویسی
🐍 یکی از انواع دادهای مهم در پایتون، "tuple" است.
تاپل برای نگهداری چند مقدار در یک متغیر استفاده میشود؛ درست مانند لیست، با این تفاوت مهم که تاپل تغییرناپذیر (Immutable) است.
━━━━━━━━━━━━━━━━━━
🔹 ۱. ساخت تاپل (Creating a Tuple)
برای ساخت تاپل، از پرانتز "()" استفاده میکنیم:
numbers = (10, 20, 30, 40)
names = ("Ali", "Sara", "Reza")
mixed = (10, "Python", 3.14, True)
print(numbers)
print(names)
print(mixed)
📤 خروجی:
(10, 20, 30, 40)
('Ali', 'Sara', 'Reza')
(10, 'Python', 3.14, True)
💡 تاپل میتواند مقادیر با انواع دادهای متفاوت را در خود نگه دارد.
━━━━━━━━━━━━━━━━━━
🔹 ۲. ساخت تاپل تکعضوی
برای ساخت تاپل با یک عضو، حتماً باید بعد از مقدار یک کاما "," قرار دهیم:
x = (10,)
y = (10)
print(type(x))
print(type(y))
📤 خروجی:
<class 'tuple'>
<class 'int'>
⚠️ پرانتز بهتنهایی تاپل نمیسازد؛ وجود کاما تعیینکننده است.
━━━━━━━━━━━━━━━━━━
🔹 ۳. دسترسی به اعضای تاپل (Indexing)
مانند لیست و رشته، برای دسترسی به اعضای تاپل از اندیس استفاده میکنیم.
languages = ("Python", "Java", "C++", "Go")
print(languages[0])
print(languages[2])
print(languages[-1])📤 خروجی:
Python
C++
Go
📌 اندیس از صفر شروع میشود و اندیس منفی از انتهای تاپل شمارش میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۴. برش زدن تاپل (Slicing)
با استفاده از "start"، "stop" و "step" میتوانیم بخشی از تاپل را استخراج کنیم.
numbers = (10, 20, 30, 40, 50, 60)
print(numbers[1:4])
print(numbers[:3])
print(numbers[::2])
print(numbers[::-1])
📤 خروجی:
(20, 30, 40)
(10, 20, 30)
(10, 30, 50)
(60, 50, 40, 30, 20, 10)
💡 توجه کنید که اندیس "stop" در نتیجه قرار نمیگیرد.
━━━━━━━━━━━━━━━━━━
🔹 ۵. تغییرناپذیری تاپل (Immutability)
پس از ساخت تاپل، نمیتوانیم اعضای آن را تغییر دهیم، حذف کنیم یا عضو جدیدی به آن اضافه کنیم.
numbers = (10, 20, 30)
numbers[0] = 100 # خطا!
📤 خروجی:
TypeError
❌ متدهایی مانند "append()" و "remove()" برای تاپل وجود ندارند.
✅ البته اگر یکی از اعضای تاپل یک شیء تغییرپذیر، مانند لیست، باشد، میتوانیم محتوای همان لیست را تغییر دهیم:
data = (10, [20, 30], 40)
data[1].append(50)
print(data)
📤 خروجی:
(10, [20, 30, 50], 40)
📌 خود تاپل تغییر نکرده است؛ بلکه شیء لیستی که درون آن قرار دارد تغییر کرده است.
━━━━━━━━━━━━━━━━━━
🔹 ۶. متدهای مهم تاپل
تاپل فقط دو متد اصلی دارد:
۱. "count()"
— تعداد تکرار یک مقدار را برمیگرداند.
numbers = (10, 20, 10, 30, 10)
print(numbers.count(10))
📤 خروجی:
3
۲. "index()"
— اندیس اولین وقوع یک مقدار را برمیگرداند.
languages = ("Python", "Java", "Go", "Java")
print(languages.index("Java"))📤 خروجی:
1
⚠️ اگر مقدار موردنظر در تاپل وجود نداشته باشد، "index()" خطای "ValueError" ایجاد میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۷. چند تابع کاربردی برای تاپل
توابع داخلی پایتون میتوانند روی تاپلها استفاده شوند:
numbers = (15, 5, 25, 10, 20)
print(len(numbers)) # تعداد اعضا
print(min(numbers)) # کوچکترین مقدار
print(max(numbers)) # بزرگترین مقدار
print(sum(numbers)) # مجموع مقادیر
📤 خروجی:
5
5
25
75
📌 برای استفاده از "sum()"، "min()" و "max()" در این مثال، اعضا باید اعداد سازگار با عملیات مربوطه باشند.
━━━━━━━━━━━━━━━━━━
💡 چه زمانی از تاپل استفاده کنیم؟
وقتی مجموعهای از مقادیر داریم که قرار نیست ساختار اعضای آن تغییر کند؛ مانند مختصات، اطلاعات ثابت یا دادههای بازگشتی یک تابع.
━━━━━━━━━━━━━━━━━━
🔹 ۸. بازکردن اعضای تاپل (Unpacking)
میتوانیم اعضای تاپل را مستقیماً داخل چند متغیر قرار دهیم:
person = ("Ali", 20, "Python")
name, age, language = person
print(name)
print(age)
print(language)📤 خروجی:
Ali
20
Python
━━━━━━━━━━━━━━━━━━
#Python
#آموزش_پایتون
#تاپل
#Tuple
#برنامه_نویسی
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
راجب حمله RowHammer تحقیق کنید.
راسی منتظر نظرهاتون راجب این ویدئو هستیم.
راسی منتظر نظرهاتون راجب این ویدئو هستیم.
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
تا باشه از این خلاقیت ها😅
یکی اومده تو بازی ماینکرفت گیت های منطقی رو طراحی کرده و بعد باهاشون یه فول اددر ساخته👏
یکی اومده تو بازی ماینکرفت گیت های منطقی رو طراحی کرده و بعد باهاشون یه فول اددر ساخته👏
🐍 آموزش مجموعهها (Set) در پایتون
مجموعهها یا "Set" یکی از انواع دادهای پایتون هستند که برای نگهداری عناصر منحصربهفرد و بدون ترتیب مشخص استفاده میشوند.
یکی از کاربردهای مهم "Set"، حذف دادههای تکراری و انجام عملیات ریاضی روی مجموعههاست.
━━━━━━━━━━━━━━━━━━
🔹 ۱. ساخت Set
برای ساخت مجموعه معمولاً از "{}" استفاده میکنیم:
📤 خروجی:
{10, 20, 30, 40}
⚠️ اعضای تکراری در "Set" فقط یک بار نگهداری میشوند:
📤 خروجی:
{10, 20, 30}
━━━━━━━━━━━━━━━━━━
🔹 ۲. Set خالی
برای ساخت یک "Set" خالی، نمیتوانیم فقط از "{}" استفاده کنیم؛ چون "{}" یک دیکشنری خالی است.
❌ اشتباه:
📤 خروجی:
<class 'dict'>
✅ روش صحیح:
📤 خروجی:
<class 'set'>
━━━━━━━━━━━━━━━━━━
🔹 ۳. اضافه کردن عضو | "add()"
برای اضافه کردن یک عضو به Set از "add()" استفاده میکنیم:
📤 خروجی:
{10, 20, 30, 40}
━━━━━━━━━━━━━━━━━━
🔹 ۴. اضافه کردن چند عضو | "update()"
اگر بخواهیم چند مقدار را اضافه کنیم، از "update()" استفاده میکنیم:
📤 خروجی:
{10, 20, 30, 40, 50, 60}
━━━━━━━━━━━━━━━━━━
🔹 ۵. حذف عضو | "remove()"
با "remove()" میتوانیم یک عضو مشخص را حذف کنیم:
📤 خروجی:
{10, 30}
⚠️ اگر عضو موردنظر وجود نداشته باشد، "remove()" خطای "KeyError" ایجاد میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۶. حذف عضو | "discard()"
"discard()" نیز برای حذف عضو استفاده میشود؛ اما اگر عضو وجود نداشته باشد، خطایی ایجاد نمیکند:
📤 خروجی:
{10, 20, 30}
💡 تفاوت مهم:
remove() → اگر عضو نباشد ❌ خطا
discard() → اگر عضو نباشد ✅ بدون خطا
━━━━━━━━━━━━━━━━━━
🔹 ۷.بررسی وجود یک عضو
برای بررسی اینکه یک مقدار داخل Set وجود دارد یا نه، از "in" استفاده میکنیم:
📤 خروجی:
True
False
━━━━━━━━━━━━━━━━━━
🔹 ۸. اجتماع دو مجموعه | "union()"
تمام اعضای دو مجموعه را در یک مجموعه قرار میدهد:
📤 خروجی:
{1, 2, 3, 4, 5}
همچنین میتوان از "|" استفاده کرد:
result = a | b
━━━━━━━━━━━━━━━━━━
🔹 ۹. اشتراک دو مجموعه | "intersection()"
فقط اعضای مشترک دو مجموعه را برمیگرداند:
📤 خروجی:
{2, 3}
یا:
result = a & b
━━━━━━━━━━━━━━━━━━
🔹 ۱۰. تفاضل دو مجموعه | "difference()"
اعضایی را برمیگرداند که در مجموعه اول هستند اما در مجموعه دوم وجود ندارند:
📤 خروجی:
{1}
یا:
result = a - b
━━━━━━━━━━━━━━━━━━
🔹 ۱۱. تفاضل متقارن | "symmetric_difference()"
اعضایی را برمیگرداند که فقط در یکی از دو مجموعه وجود دارند:
📤 خروجی:
{1, 4}
یا:
result = a ^ b
━━━━━━━━━━━━━━━━━━
🔹 ۱۲. تعداد اعضای Set
برای بهدستآوردن تعداد اعضای مجموعه:
📤 خروجی:
4
━━━━━━━━━━━━━━━━━━
🔹 ۱۳. پاک کردن تمام اعضا | "clear()"
با "clear()" تمام اعضای Set حذف میشوند:
📤 خروجی:
set()
━━━━━━━━━━━━━━━━━━
📚 منتظر سوالات شما در کامنتها هستیم
#Python
#آموزش_پایتون
#Set
#برنامه_نویسی
#کاما_کد
مجموعهها یا "Set" یکی از انواع دادهای پایتون هستند که برای نگهداری عناصر منحصربهفرد و بدون ترتیب مشخص استفاده میشوند.
یکی از کاربردهای مهم "Set"، حذف دادههای تکراری و انجام عملیات ریاضی روی مجموعههاست.
━━━━━━━━━━━━━━━━━━
🔹 ۱. ساخت Set
برای ساخت مجموعه معمولاً از "{}" استفاده میکنیم:
numbers = {10, 20, 30, 40}
print(numbers)📤 خروجی:
{10, 20, 30, 40}
⚠️ اعضای تکراری در "Set" فقط یک بار نگهداری میشوند:
numbers = {10, 20, 20, 30, 30}
print(numbers)📤 خروجی:
{10, 20, 30}
━━━━━━━━━━━━━━━━━━
🔹 ۲. Set خالی
برای ساخت یک "Set" خالی، نمیتوانیم فقط از "{}" استفاده کنیم؛ چون "{}" یک دیکشنری خالی است.
❌ اشتباه:
data = {}
print(type(data))📤 خروجی:
<class 'dict'>
✅ روش صحیح:
data = set()
print(type(data))
📤 خروجی:
<class 'set'>
━━━━━━━━━━━━━━━━━━
🔹 ۳. اضافه کردن عضو | "add()"
برای اضافه کردن یک عضو به Set از "add()" استفاده میکنیم:
numbers = {10, 20, 30}
numbers.add(40)
print(numbers)📤 خروجی:
{10, 20, 30, 40}
━━━━━━━━━━━━━━━━━━
🔹 ۴. اضافه کردن چند عضو | "update()"
اگر بخواهیم چند مقدار را اضافه کنیم، از "update()" استفاده میکنیم:
numbers = {10, 20, 30}
numbers.update([40, 50, 60])
print(numbers)📤 خروجی:
{10, 20, 30, 40, 50, 60}
━━━━━━━━━━━━━━━━━━
🔹 ۵. حذف عضو | "remove()"
با "remove()" میتوانیم یک عضو مشخص را حذف کنیم:
numbers = {10, 20, 30}
numbers.remove(20)
print(numbers)📤 خروجی:
{10, 30}
⚠️ اگر عضو موردنظر وجود نداشته باشد، "remove()" خطای "KeyError" ایجاد میکند.
━━━━━━━━━━━━━━━━━━
🔹 ۶. حذف عضو | "discard()"
"discard()" نیز برای حذف عضو استفاده میشود؛ اما اگر عضو وجود نداشته باشد، خطایی ایجاد نمیکند:
numbers = {10, 20, 30}
numbers.discard(100)
print(numbers)📤 خروجی:
{10, 20, 30}
💡 تفاوت مهم:
remove() → اگر عضو نباشد ❌ خطا
discard() → اگر عضو نباشد ✅ بدون خطا
━━━━━━━━━━━━━━━━━━
🔹 ۷.بررسی وجود یک عضو
برای بررسی اینکه یک مقدار داخل Set وجود دارد یا نه، از "in" استفاده میکنیم:
languages = {"Python", "Java", "C++"}
print("Python" in languages)
print("PHP" in languages)📤 خروجی:
True
False
━━━━━━━━━━━━━━━━━━
🔹 ۸. اجتماع دو مجموعه | "union()"
تمام اعضای دو مجموعه را در یک مجموعه قرار میدهد:
a = {1, 2, 3}
b = {3, 4, 5}
result = a.union(b)
print(result)📤 خروجی:
{1, 2, 3, 4, 5}
همچنین میتوان از "|" استفاده کرد:
result = a | b
━━━━━━━━━━━━━━━━━━
🔹 ۹. اشتراک دو مجموعه | "intersection()"
فقط اعضای مشترک دو مجموعه را برمیگرداند:
a = {1, 2, 3}
b = {2, 3, 4}
result = a.intersection(b)
print(result)📤 خروجی:
{2, 3}
یا:
result = a & b
━━━━━━━━━━━━━━━━━━
🔹 ۱۰. تفاضل دو مجموعه | "difference()"
اعضایی را برمیگرداند که در مجموعه اول هستند اما در مجموعه دوم وجود ندارند:
a = {1, 2, 3}
b = {2, 3, 4}
result = a.difference(b)
print(result)📤 خروجی:
{1}
یا:
result = a - b
━━━━━━━━━━━━━━━━━━
🔹 ۱۱. تفاضل متقارن | "symmetric_difference()"
اعضایی را برمیگرداند که فقط در یکی از دو مجموعه وجود دارند:
a = {1, 2, 3}
b = {2, 3, 4}
result = a.symmetric_difference(b)
print(result)📤 خروجی:
{1, 4}
یا:
result = a ^ b
━━━━━━━━━━━━━━━━━━
🔹 ۱۲. تعداد اعضای Set
برای بهدستآوردن تعداد اعضای مجموعه:
numbers = {10, 20, 30, 40}
print(len(numbers))📤 خروجی:
4
━━━━━━━━━━━━━━━━━━
🔹 ۱۳. پاک کردن تمام اعضا | "clear()"
با "clear()" تمام اعضای Set حذف میشوند:
numbers = {10, 20, 30}
numbers.clear()
print(numbers)📤 خروجی:
set()
━━━━━━━━━━━━━━━━━━
📚 منتظر سوالات شما در کامنتها هستیم
#Python
#آموزش_پایتون
#Set
#برنامه_نویسی
#کاما_کد
❤1
میخوام یه حلقه جالب با فور در پایتون بهتون معرفی کنم که خودش یه نگهبان هم داره.
اینکار رو با کمک فانکشن iter انجام میدیم
همه iter رو به شکل زیر میشناسیم
➡️iter(iterable)
که هر شی iterable رو تبدیل میکنه به یک شی iterator که ما باهاش کاری نداریم
ما با iter(callable,sentinel) کار داریم
که یه همچین عملکردی داره
خلاصه بگم تا زمانی که خروجی تابع با مقداری که بهش گفتیم برابر نباشه خروجی تابع رو برای ما ییلد میکنه
حالا ما اگه بیایم این مورد رو با حلقه فور ترکیب کنیم میتونیم بگیم این حلقه من رو تا زمانی که خروجی فانکشنم برابر با مقدار مد نظرم نیست ادامه بده
برای مثال من اینجا اومدم تا زمانی که کاربر در ورودی مقدار "" وارد نکرده ازش ورودی گرفتم و اونو چاپ کردم
اینجوری خیلی از پیچیدگی دستورات رو میتونیم کم کنیم
حالا کجا ها کاربرد داره؟ برای مثال میخواییم یه فایل لاگ رو بخونیم
@comma_code
@comma_code1
#python #iter #comma_code
#پایتون #کاما_کد
اینکار رو با کمک فانکشن iter انجام میدیم
همه iter رو به شکل زیر میشناسیم
➡️iter(iterable)
که هر شی iterable رو تبدیل میکنه به یک شی iterator که ما باهاش کاری نداریم
ما با iter(callable,sentinel) کار داریم
که یه همچین عملکردی داره
def iter(callable, sentinel):
while True:
value = callable()
if value == sentinel:
return
yield value
خلاصه بگم تا زمانی که خروجی تابع با مقداری که بهش گفتیم برابر نباشه خروجی تابع رو برای ما ییلد میکنه
حالا ما اگه بیایم این مورد رو با حلقه فور ترکیب کنیم میتونیم بگیم این حلقه من رو تا زمانی که خروجی فانکشنم برابر با مقدار مد نظرم نیست ادامه بده
برای مثال من اینجا اومدم تا زمانی که کاربر در ورودی مقدار "" وارد نکرده ازش ورودی گرفتم و اونو چاپ کردم
for i in iter(input , ""):
print(i)
اینجوری خیلی از پیچیدگی دستورات رو میتونیم کم کنیم
حالا کجا ها کاربرد داره؟ برای مثال میخواییم یه فایل لاگ رو بخونیم
LOG_END="EOF_MARKER"
with open("log.txt") as f:
for i in iter(f.readline,LOG_END):
pass
@comma_code
@comma_code1
#python #iter #comma_code
#پایتون #کاما_کد
🔥3❤1
سلام عزیزان قسمت ۱ دوره مبانی کامپیوتر و برنامهنویسی منتشر شد و میتونید از لینک زیر تماشا کنید https://www.aparat.com/v/lis895z در این قسمت از دوره راجب برنامه نویسی و الگوریتم صحبت کردیم و همینطور تعریف دقیقی از کامپیوتر ارائه دادیم.
میخوام یه دوره ریجکس ضبط کنم
نظرتونه؟
راسی دوره مبانی هم شروع میکنم تو یوتیوب هم آپلود کنم
نظرتونه؟
راسی دوره مبانی هم شروع میکنم تو یوتیوب هم آپلود کنم
❤🔥5❤1🔥1
🔰 بولین (Boolean) در پایتون
در پایتون، نوع دادهی Boolean فقط دو مقدار دارد:
True
False
🔹 "True" یعنی درست
🔹 "False" یعنی نادرست
━━━━━━━━━━━━━━━━━━
1️⃣ ساخت متغیر بولین
━━━━━━━━━━━━━━━━━━
2️⃣ استفاده از عملگرهای مقایسهای
نتیجهی مقایسهها همیشه یک مقدار بولین است:
یاداوری عملگرهای مهم:
== برابر است با
!= نابرابر است
> بزرگتر
< کوچکتر
>= بزرگتر یا مساوی
<= کوچکتر یا مساوی
━━━━━━━━━━━━━━━━━━
3️⃣ تبدیل مقدار به Boolean
با "bool()" میتوانیم یک مقدار را به Boolean تبدیل کنیم:
💡 مقادیری مثل "0"، """" و "None" در پایتون False محسوب میشوند.
━━━━━━━━━━━━━━━━━━
4️⃣ ترکیب چند شرط
با "and"، "or" و "not" میتوانیم شرایط را ترکیب کنیم:
🔹 "and" → هر دو شرط باید درست باشند
🔹 "or" → حداقل یکی از شرطها درست باشد
🔹 "not" → نتیجه را برعکس میکند
━━━━━━━━━━━━━━━━━━
📝 تمرینهای این بخش
تمرین ۱ — مقایسه
خروجی کدهای زیر را قبل از اجرا حدس بزنید:
━━━━━━━━━━━━━━━━━━
تمرین ۲ — "bool()"
خروجی هر کدام را مشخص کنید:
━━━━━━━━━━━━━━━━━━
تمرین ۳ — "and" و "or"
بدون اجرای کد، خروجی را مشخص کنید:
━━━━━━━━━━━━━━━━━━
تمرین ۴ — چالش 🔥
با استفاده از "bool()" و بدون استفاده از "if"، بررسی کنید که آیا یک رشته خالی است یا خیر:
text = ""
# کد خود را اینجا بنویسید
#آموزش_پایتون
#پایتون
#کاما_کد
#بولین
در پایتون، نوع دادهی Boolean فقط دو مقدار دارد:
True
False
🔹 "True" یعنی درست
🔹 "False" یعنی نادرست
━━━━━━━━━━━━━━━━━━
1️⃣ ساخت متغیر بولین
is_student = True
is_admin = False
print(is_student)
# True
print(is_admin)
# False
━━━━━━━━━━━━━━━━━━
2️⃣ استفاده از عملگرهای مقایسهای
نتیجهی مقایسهها همیشه یک مقدار بولین است:
x = 10
y = 5
print(x > y)
# True
print(x == y)
# False
یاداوری عملگرهای مهم:
== برابر است با
!= نابرابر است
> بزرگتر
< کوچکتر
>= بزرگتر یا مساوی
<= کوچکتر یا مساوی
━━━━━━━━━━━━━━━━━━
3️⃣ تبدیل مقدار به Boolean
با "bool()" میتوانیم یک مقدار را به Boolean تبدیل کنیم:
print(bool(1))
# True
print(bool(0))
# False
print(bool("Python"))
# True
print(bool(""))
# False
💡 مقادیری مثل "0"، """" و "None" در پایتون False محسوب میشوند.
━━━━━━━━━━━━━━━━━━
4️⃣ ترکیب چند شرط
با "and"، "or" و "not" میتوانیم شرایط را ترکیب کنیم:
age = 20
has_card = True
print(age >= 18 and has_card)
# True
🔹 "and" → هر دو شرط باید درست باشند
🔹 "or" → حداقل یکی از شرطها درست باشد
🔹 "not" → نتیجه را برعکس میکند
print(not True)
# False
━━━━━━━━━━━━━━━━━━
📝 تمرینهای این بخش
تمرین ۱ — مقایسه
خروجی کدهای زیر را قبل از اجرا حدس بزنید:
print(10 > 5)
print(7 == 10)
print(15 <= 15)
print(8 != 8)
━━━━━━━━━━━━━━━━━━
تمرین ۲ — "bool()"
خروجی هر کدام را مشخص کنید:
print(bool(0))
print(bool(10))
print(bool(""))
━━━━━━━━━━━━━━━━━━
تمرین ۳ — "and" و "or"
بدون اجرای کد، خروجی را مشخص کنید:
print(True and False)
print(True or False)
print(False and False)
print(False or True)
━━━━━━━━━━━━━━━━━━
تمرین ۴ — چالش 🔥
با استفاده از "bool()" و بدون استفاده از "if"، بررسی کنید که آیا یک رشته خالی است یا خیر:
text = ""
# کد خود را اینجا بنویسید
#آموزش_پایتون
#پایتون
#کاما_کد
#بولین
❤1❤🔥1
برید سایت زیر و تصویرتون رو وارد کنید و افکت ها و ستینگ های مختلف رو روی تصاویرتون پیاده کنید
grainrad.com
ری اکشن ها خیلی کم شده😔
grainrad.com
ری اکشن ها خیلی کم شده😔
❤🔥5
🐍 آموزش دیکشنری در پایتون | Dictionary
دیکشنری یکی از مهمترین ساختارهای داده در پایتون است که اطلاعات را به صورت کلید و مقدار (Key : Value) ذخیره میکند.
━━━━━━━━━━━━━━━━━━
🔹 1. ساخت دیکشنری
در اینجا:
"name" → کلید (Key)
"Ali" → مقدار (Value)
━━━━━━━━━━━━━━━━━━
🔹 2. دسترسی به مقدار
برای دسترسی به یک مقدار، کلید آن را داخل "[]" قرار میدهیم:
📤 خروجی:
Ali
━━━━━━━━━━━━━━━━━━
🔹 3. اضافه کردن عضو جدید
حالا دیکشنری شامل "city" نیز میشود.
━━━━━━━━━━━━━━━━━━
🔹 4. تغییر مقدار
اگر کلید از قبل وجود داشته باشد، مقدار آن تغییر میکند:
━━━━━━━━━━━━━━━━━━
🔹 5. حذف یک عضو
با "del" میتوان یک عضو را حذف کرد:
یا با "pop()":
━━━━━━━━━━━━━━━━━━
🔹 6. بررسی وجود یک کلید
━━━━━━━━━━━━━━━━━━
🔹 7. متدهای مهم Dictionary
🔸 "keys()" → دریافت کلیدها
🔸 "values()" → دریافت مقادیر
🔸 "items()" → دریافت کلید و مقدار
🔸 "get()" → دریافت مقدار یک کلید
🔸 "update()" → اضافه یا بروزرسانی چند مقدار
━━━━━━━━━━━━━━━━━━
💡 یک مثال کاربردی
📤 خروجی:
iliya
20
True
━━━━━━━━━━━━━━━━━━
🎯 نکته مهم:
در Dictionary:
Key → باید یکتا باشد
Value → میتواند تکراری باشد
مثلاً:
اینجا مقدار ""Ali"" میتواند چند بار وجود داشته باشد، اما کلیدها باید یکتا باشند.
━━━━━━━━━━━━━━━━━━
🔥 تمرین
یک دیکشنری به نام "book" بسازید که شامل اطلاعات زیر باشد:
عنوان کتاب
نویسنده
سال انتشار
قیمت
سپس:
1️⃣ قیمت کتاب را چاپ کنید.
2️⃣ سال انتشار را تغییر دهید.
3️⃣ یک کلید جدید به نام "publisher" اضافه کنید.
4️⃣ نویسنده را حذف کنید.
💬 جوابتون رو بنویسید و بفرستید!
#Python
#پایتون
#Dictionary
#برنامه_نویسی
#کاما_کد
دیکشنری یکی از مهمترین ساختارهای داده در پایتون است که اطلاعات را به صورت کلید و مقدار (Key : Value) ذخیره میکند.
━━━━━━━━━━━━━━━━━━
🔹 1. ساخت دیکشنری
student = {
"name": "Ali",
"age": 20,
"major": "Computer Science"
}در اینجا:
"name" → کلید (Key)
"Ali" → مقدار (Value)
━━━━━━━━━━━━━━━━━━
🔹 2. دسترسی به مقدار
برای دسترسی به یک مقدار، کلید آن را داخل "[]" قرار میدهیم:
print(student["name"])
📤 خروجی:
Ali
━━━━━━━━━━━━━━━━━━
🔹 3. اضافه کردن عضو جدید
student["city"] = "Isfahan"
حالا دیکشنری شامل "city" نیز میشود.
━━━━━━━━━━━━━━━━━━
🔹 4. تغییر مقدار
اگر کلید از قبل وجود داشته باشد، مقدار آن تغییر میکند:
student["age"] = 21
━━━━━━━━━━━━━━━━━━
🔹 5. حذف یک عضو
با "del" میتوان یک عضو را حذف کرد:
del student["city"]
یا با "pop()":
student.pop("age")━━━━━━━━━━━━━━━━━━
🔹 6. بررسی وجود یک کلید
if "name" in student:
print("کلید وجود دارد")
━━━━━━━━━━━━━━━━━━
🔹 7. متدهای مهم Dictionary
🔸 "keys()" → دریافت کلیدها
student.keys()
🔸 "values()" → دریافت مقادیر
student.values()
🔸 "items()" → دریافت کلید و مقدار
student.items()
🔸 "get()" → دریافت مقدار یک کلید
student.get("name")🔸 "update()" → اضافه یا بروزرسانی چند مقدار
student.update({
"age": 22,
"city": "Tehran"
})━━━━━━━━━━━━━━━━━━
💡 یک مثال کاربردی
user = {
"username": "iliya",
"age": 20,
"is_active": True
}
print(user["username"])
print(user["age"])
print(user["is_active"])📤 خروجی:
iliya
20
True
━━━━━━━━━━━━━━━━━━
🎯 نکته مهم:
در Dictionary:
Key → باید یکتا باشد
Value → میتواند تکراری باشد
مثلاً:
users = {
"user1": "Ali",
"user2": "Reza",
"user3": "Ali"
}اینجا مقدار ""Ali"" میتواند چند بار وجود داشته باشد، اما کلیدها باید یکتا باشند.
━━━━━━━━━━━━━━━━━━
🔥 تمرین
یک دیکشنری به نام "book" بسازید که شامل اطلاعات زیر باشد:
عنوان کتاب
نویسنده
سال انتشار
قیمت
سپس:
1️⃣ قیمت کتاب را چاپ کنید.
2️⃣ سال انتشار را تغییر دهید.
3️⃣ یک کلید جدید به نام "publisher" اضافه کنید.
4️⃣ نویسنده را حذف کنید.
💬 جوابتون رو بنویسید و بفرستید!
#Python
#پایتون
#Dictionary
#برنامه_نویسی
#کاما_کد
❤🔥2❤1
🐍 آموزش توابع | (Functions)
💡 یکی از مهمترین مفاهیم در پایتون، تابع (Function) است. تابع به ما کمک میکند کدهای خود را یکبار بنویسیم و هر چند بار که نیاز داریم از آنها استفاده کنیم! 🚀
━━━━━━━━━━━━━━━━━━
🔹 ۱. تابع چیست؟
تابع مجموعهای از دستورات است که برای انجام یک کار مشخص نوشته میشود.
🔹 ۲. تعریف تابع با "def"
برای تعریف تابع در پایتون از کلمه کلیدی "def" استفاده میکنیم.
📌 تعریف تابع بهتنهایی باعث اجرای آن نمیشود.
برای اجرای تابع باید آن را صدا بزنیم:
say_hello()
━━━━━━━━━━━━━━━━━━
🔹 ۳. پارامترها و آرگومانها
با استفاده از پارامترها میتوانیم اطلاعات مختلفی را به تابع بدهیم.
خروجی:
سلام علی عزیز!
سلام سارا عزیز!
🔸 "name" پارامتر تابع است.
🔸 ""علی"" و ""سارا"" آرگومانهایی هستند که هنگام فراخوانی به تابع دادهایم.
━━━━━━━━━━━━━━━━━━
🔹 ۴. دستور "return" چیست؟
دستور "return" برای برگرداندن نتیجه از تابع استفاده میشود.
خروجی:
30
📌 تفاوت مهم:
- "print()"
فقط مقدار را نمایش میدهد.
- "return"
مقدار را به محل فراخوانی برمیگرداند تا بتوانیم از آن استفاده کنیم.
━━━━━━━━━━━━━━━━━━
🔹 ۵. پارامتر پیشفرض (Default Parameter)
میتوانیم برای پارامترهای تابع مقدار پیشفرض تعیین کنیم.
خروجی:
سلام دوست من!
سلام علی!
━━━━━━━━━━━━━━━━━━
🔹 ۶. تابع بدون "return"
اگر تابعی مقدار مشخصی را با "return" برنگرداند، نتیجه فراخوانی آن بهصورت پیشفرض "None" است.
خروجی:
Learning Python!
None
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
۱️⃣ تابعی بنویس که نام کاربر را دریافت کند و به او سلام کند.
۲️⃣ تابعی بنویس که دو عدد را دریافت کند و حاصلضرب آنها را با "return" برگرداند.
۳️⃣ تابعی بنویس که یک عدد دریافت کند و مربع آن را برگرداند.
۴️⃣ تابعی به نام "calculate_average" بنویس که سه عدد دریافت کند و میانگین آنها را برگرداند.
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#برنامه_نویسی
#توابع_پایتون
#کاما_کد
💡 یکی از مهمترین مفاهیم در پایتون، تابع (Function) است. تابع به ما کمک میکند کدهای خود را یکبار بنویسیم و هر چند بار که نیاز داریم از آنها استفاده کنیم! 🚀
━━━━━━━━━━━━━━━━━━
🔹 ۱. تابع چیست؟
تابع مجموعهای از دستورات است که برای انجام یک کار مشخص نوشته میشود.
🔹 ۲. تعریف تابع با "def"
برای تعریف تابع در پایتون از کلمه کلیدی "def" استفاده میکنیم.
def say_hello():
print("Hello, Python! 🐍")
📌 تعریف تابع بهتنهایی باعث اجرای آن نمیشود.
برای اجرای تابع باید آن را صدا بزنیم:
say_hello()
━━━━━━━━━━━━━━━━━━
🔹 ۳. پارامترها و آرگومانها
با استفاده از پارامترها میتوانیم اطلاعات مختلفی را به تابع بدهیم.
def greet(name):
print(f"سلام {name} عزیز! ")
greet("علی")
greet("سارا")
خروجی:
سلام علی عزیز!
سلام سارا عزیز!
🔸 "name" پارامتر تابع است.
🔸 ""علی"" و ""سارا"" آرگومانهایی هستند که هنگام فراخوانی به تابع دادهایم.
━━━━━━━━━━━━━━━━━━
🔹 ۴. دستور "return" چیست؟
دستور "return" برای برگرداندن نتیجه از تابع استفاده میشود.
def add(a, b):
return a + b
result = add(10, 20)
print(result)
خروجی:
30
📌 تفاوت مهم:
- "print()"
فقط مقدار را نمایش میدهد.
- "return"
مقدار را به محل فراخوانی برمیگرداند تا بتوانیم از آن استفاده کنیم.
━━━━━━━━━━━━━━━━━━
🔹 ۵. پارامتر پیشفرض (Default Parameter)
میتوانیم برای پارامترهای تابع مقدار پیشفرض تعیین کنیم.
def greet(name="دوست من"):
print(f"سلام {name}!")
greet()
greet("علی")
خروجی:
سلام دوست من!
سلام علی!
━━━━━━━━━━━━━━━━━━
🔹 ۶. تابع بدون "return"
اگر تابعی مقدار مشخصی را با "return" برنگرداند، نتیجه فراخوانی آن بهصورت پیشفرض "None" است.
def show_message():
print("Learning Python!")
result = show_message()
print(result)
خروجی:
Learning Python!
None
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
۱️⃣ تابعی بنویس که نام کاربر را دریافت کند و به او سلام کند.
۲️⃣ تابعی بنویس که دو عدد را دریافت کند و حاصلضرب آنها را با "return" برگرداند.
۳️⃣ تابعی بنویس که یک عدد دریافت کند و مربع آن را برگرداند.
۴️⃣ تابعی به نام "calculate_average" بنویس که سه عدد دریافت کند و میانگین آنها را برگرداند.
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#برنامه_نویسی
#توابع_پایتون
#کاما_کد
همین الان یه نکته جالبی از cpp به ذهنم رسید
میدونستید در cpp میتونید چندین فانکشن با یک اسم داشته باشید؟
به اصطلاح بهش Function overloading میگن
اینجوریه که کامپایلر بر اساس نوع و تعداد پارامتر ورودی میدونه که کدوم فانکشن رو باید اجرا کنه
و با ساز و کار Name mangling که میاد اسم فانکشن ها رو در سطح باینری تغییر میده میتونیم چندین فانکشن با یک اسم داشته باشیم (در واقع در پشت صحنه دوباره فانکشن ها رو اسم گذاری میکنه)
حالا اینجا یه نمونه میبینیم که نوع پارامتر ها متفاوته و کمک کرده چند فانکشن با یک اسم داشته باشیم.
اینجا هم تعداد پارامتر ها متفاوته:
البته که میتونیم هم این دوتا مورد باهم ترکیب کنیم
یعنی فانکشن ها هم از نظر تعداد پارامتر و هم از نظر نوع پارامتر متفاوت باشن
خیلی خوب تا حالا این مورد رو گفتیم فقط موند بحث اولویت ها که احیانا با مشکل ابهام مواجه نشید
که اونم به این شکله
امید وارم براتون مفید بوده باشه
ممنونم که روی پست ها ری اکشن میزنید 🙏
#کاما_کد #سی_پلاس_پلای #برنامه_نویسی #نکته
#comma_code #cpp #programming #hint
@comma_code
@comma_code1
میدونستید در cpp میتونید چندین فانکشن با یک اسم داشته باشید؟
به اصطلاح بهش Function overloading میگن
اینجوریه که کامپایلر بر اساس نوع و تعداد پارامتر ورودی میدونه که کدوم فانکشن رو باید اجرا کنه
و با ساز و کار Name mangling که میاد اسم فانکشن ها رو در سطح باینری تغییر میده میتونیم چندین فانکشن با یک اسم داشته باشیم (در واقع در پشت صحنه دوباره فانکشن ها رو اسم گذاری میکنه)
حالا اینجا یه نمونه میبینیم که نوع پارامتر ها متفاوته و کمک کرده چند فانکشن با یک اسم داشته باشیم.
void print(int x) { std::cout << "int: " << x << std::endl; }
void print(double x) { std::cout << "double: " << x << std::endl; }
void print(char x) { std::cout << "char: " << x << std::endl; }
int main() {
print(42); // int: 42
print(3.14); // double: 3.14
print('A'); // char: A
}اینجا هم تعداد پارامتر ها متفاوته:
void greet() { std::cout << "Hi!" << std::endl; }
void greet(std::string n) { std::cout << "Hi, " + n << std::endl; }
void greet(std::string n, int age) {
std::cout << "Hi " + n + ", age " + std::to_string(age) << std::endl;
}البته که میتونیم هم این دوتا مورد باهم ترکیب کنیم
یعنی فانکشن ها هم از نظر تعداد پارامتر و هم از نظر نوع پارامتر متفاوت باشن
خیلی خوب تا حالا این مورد رو گفتیم فقط موند بحث اولویت ها که احیانا با مشکل ابهام مواجه نشید
که اونم به این شکله
1.Exact Match
2.Promotion
3.Standard
4.User-defined
5.Variadic
امید وارم براتون مفید بوده باشه
ممنونم که روی پست ها ری اکشن میزنید 🙏
#کاما_کد #سی_پلاس_پلای #برنامه_نویسی #نکته
#comma_code #cpp #programming #hint
@comma_code
@comma_code1
❤4👍3🔥3
🐍 آموزش آرگومانهای "*args" و "**kwargs"
━━━━━━━━━━━━━━━━━━
🔹 ۱. آرگومانهای "*args"
با استفاده از "*args" میتونیم تعداد دلخواهی آرگومان موقعیتی به تابع ارسال کنیم.
خروجی:
30
15
━━━━━━━━━━━━━━━━━━
🔹 ۲. آرگومانهای "**kwargs"
با "**kwargs" میتونیم تعداد دلخواهی آرگومان کلیدواژهای به تابع بدیم.
خروجی:
name: Ali
age: 20
city: Tehran
📌 نکته: داخل تابع، "kwargs" یک دیکشنری (Dictionary) خواهد بود.
━━━━━━━━━━━━━━━━━━
🔹 ۳. استفاده همزمان از هر دو
میتونیم در یک تابع، هم "*args" داشته باشیم و هم "**kwargs".
خروجی:
Arguments: (10, 20, 30)
Keywords: {'name': 'Sara', 'age': 22}
━━━━━━━━━━━━━━━━━━
🔹 ۴. باز کردن لیست و دیکشنری هنگام فراخوانی
علامتهای "*" و "**" هنگام فراخوانی تابع هم کاربرد دارن.
خروجی:
60
Ali is 21 years old.
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
۱️⃣ تابعی بنویس که با "*args" هر تعداد عدد دریافت کنه و بزرگترین عدد رو برگردونه.
۲️⃣ تابعی بنویس که با "**kwargs" مشخصات یک کاربر رو دریافت و نمایش بده.
💬 پاسخ تمرینها رو در کامنتها بنویس!
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#توابع_پایتون
#برنامه_نویسی
#کاما_کد
━━━━━━━━━━━━━━━━━━
🔹 ۱. آرگومانهای "*args"
با استفاده از "*args" میتونیم تعداد دلخواهی آرگومان موقعیتی به تابع ارسال کنیم.
def calculate_sum(*args):
return sum(args)
print(calculate_sum(10, 20))
print(calculate_sum(1, 2, 3, 4, 5))
خروجی:
30
15
━━━━━━━━━━━━━━━━━━
🔹 ۲. آرگومانهای "**kwargs"
با "**kwargs" میتونیم تعداد دلخواهی آرگومان کلیدواژهای به تابع بدیم.
def show_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
show_info(name="Ali", age=20, city="Tehran")
خروجی:
name: Ali
age: 20
city: Tehran
📌 نکته: داخل تابع، "kwargs" یک دیکشنری (Dictionary) خواهد بود.
━━━━━━━━━━━━━━━━━━
🔹 ۳. استفاده همزمان از هر دو
میتونیم در یک تابع، هم "*args" داشته باشیم و هم "**kwargs".
def display_data(*args, **kwargs):
print("Arguments:", args)
print("Keywords:", kwargs)
display_data(10, 20, 30, name="Sara", age=22)
خروجی:
Arguments: (10, 20, 30)
Keywords: {'name': 'Sara', 'age': 22}
━━━━━━━━━━━━━━━━━━
🔹 ۴. باز کردن لیست و دیکشنری هنگام فراخوانی
علامتهای "*" و "**" هنگام فراخوانی تابع هم کاربرد دارن.
numbers = [10, 20, 30]
user = {"name": "Ali", "age": 21}
def add(a, b, c):
return a + b + c
def introduce(name, age):
print(f"{name} is {age} years old.")
print(add(*numbers))
introduce(**user)
خروجی:
60
Ali is 21 years old.
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
۱️⃣ تابعی بنویس که با "*args" هر تعداد عدد دریافت کنه و بزرگترین عدد رو برگردونه.
۲️⃣ تابعی بنویس که با "**kwargs" مشخصات یک کاربر رو دریافت و نمایش بده.
💬 پاسخ تمرینها رو در کامنتها بنویس!
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#توابع_پایتون
#برنامه_نویسی
#کاما_کد
❤1
🐍 آموزش متغیرهای Local و Global
🔹 متغیر Local چیست؟
متغیری که داخل یک تابع تعریف میشه، معمولاً یک متغیر محلی یا "Local" محسوب میشه.
خروجی:
Hello Python!
📌 متغیر "message" داخل تابع تعریف شده و خارج از اون مستقیماً قابل دسترسی نیست.
━━━━━━━━━━━━━━━━━━
🔹 متغیر Global چیست؟
متغیری که در سطح اصلی برنامه تعریف میشه، متغیر سراسری یا "Global" نام داره.
خروجی:
Hello Ali!
Ali
✅ تابع میتونه مقدار متغیر سراسری رو بخونه؛ حتی اگر اون متغیر داخل تابع تعریف نشده باشه.
━━━━━━━━━━━━━━━━━━
🔹 تغییر متغیر Global داخل تابع
اگر بخوایم مقدار یک متغیر سراسری رو مستقیماً از داخل تابع تغییر بدیم، میتونیم از کلمهٔ کلیدی "global" استفاده کنیم.
خروجی:
2
📌 دستور "global counter" مشخص میکنه که منظورمون متغیر سراسری "counter" هست، نه یک متغیر محلی جدید.
⚠️ استفادهٔ بیشازحد از "global" میتونه مدیریت و عیبیابی برنامه رو سختتر کنه؛
━━━━━━━━━━━━━━━━━━
🔹 یک نکتهٔ مهم دربارهٔ متغیرهای همنام
اگر داخل تابع متغیری با نام یک متغیر سراسری تعریف کنیم، متغیر محلی میتونه آن متغیر سراسری رو تحتالشعاع قرار بده.
خروجی:
50
100
💡 تغییر متغیر محلی "number" باعث تغییر متغیر سراسری همنام اون نشد.
━━━━━━━━━━━━━━━━━━
🧠 تمرین
1️⃣ متغیری به نام "username" در سطح اصلی برنامه تعریف کن و مقدارش رو داخل یک تابع نمایش بده.
2️⃣ تابعی بنویس که یک متغیر محلی تعریف کنه و مقدارش رو با "return" برگردونه.
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#برنامه_نویسی
#کاما_کد
🔹 متغیر Local چیست؟
متغیری که داخل یک تابع تعریف میشه، معمولاً یک متغیر محلی یا "Local" محسوب میشه.
def show_message():
message = "Hello Python!"
print(message)
show_message()
خروجی:
Hello Python!
📌 متغیر "message" داخل تابع تعریف شده و خارج از اون مستقیماً قابل دسترسی نیست.
━━━━━━━━━━━━━━━━━━
🔹 متغیر Global چیست؟
متغیری که در سطح اصلی برنامه تعریف میشه، متغیر سراسری یا "Global" نام داره.
name = "Ali"
def greet():
print(f"Hello {name}!")
greet()
print(name)
خروجی:
Hello Ali!
Ali
✅ تابع میتونه مقدار متغیر سراسری رو بخونه؛ حتی اگر اون متغیر داخل تابع تعریف نشده باشه.
━━━━━━━━━━━━━━━━━━
🔹 تغییر متغیر Global داخل تابع
اگر بخوایم مقدار یک متغیر سراسری رو مستقیماً از داخل تابع تغییر بدیم، میتونیم از کلمهٔ کلیدی "global" استفاده کنیم.
counter = 0
def increase():
global counter
counter += 1
increase()
increase()
print(counter)
خروجی:
2
📌 دستور "global counter" مشخص میکنه که منظورمون متغیر سراسری "counter" هست، نه یک متغیر محلی جدید.
⚠️ استفادهٔ بیشازحد از "global" میتونه مدیریت و عیبیابی برنامه رو سختتر کنه؛
━━━━━━━━━━━━━━━━━━
🔹 یک نکتهٔ مهم دربارهٔ متغیرهای همنام
اگر داخل تابع متغیری با نام یک متغیر سراسری تعریف کنیم، متغیر محلی میتونه آن متغیر سراسری رو تحتالشعاع قرار بده.
number = 100
def show_number():
number = 50
print(number)
show_number()
print(number)
خروجی:
50
100
💡 تغییر متغیر محلی "number" باعث تغییر متغیر سراسری همنام اون نشد.
━━━━━━━━━━━━━━━━━━
🧠 تمرین
1️⃣ متغیری به نام "username" در سطح اصلی برنامه تعریف کن و مقدارش رو داخل یک تابع نمایش بده.
2️⃣ تابعی بنویس که یک متغیر محلی تعریف کنه و مقدارش رو با "return" برگردونه.
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#برنامه_نویسی
#کاما_کد
🔥1
🐍 آموزش توابع Lambda
💡 توابعی در پایتون که در یک خط تعریف میشوند....
به این تابعها Lambda میگیم
━━━━━━━━━━━━━━━━━━
🔹 ۱. تابع Lambda چیست؟
تابع Lambda یک تابع کوچک و بینام است که با کلمه کلیدی "lambda" تعریف میشه.
ساختار کلی:
lambda arguments: expression
مثال:
خروجی:
25
64
📌 این تابع یک عدد دریافت میکنه و مربع اون رو برمیگردونه.
━━━━━━━━━━━━━━━━━━
🔹 ۲. چند مثال کاربردی
✅ جمع دو عدد:
خروجی:
30
✅ بررسی زوج بودن عدد:
خروجی:
True
False
✅ تبدیل دما از سانتیگراد به فارنهایت:
خروجی:
77.0
━━━━━━━━━━━━━━━━━━
🔹 ۳. تفاوت Lambda با تابع معمولی
یک تابع معمولی:
def multiply(a, b):
return a * b
همین تابع با Lambda:
multiply = lambda a, b: a * b
━━━━━━━━━━━━━━━━━━
🔹 ۴. استفاده از Lambda با "sorted()"
یکی از کاربردهای جالب Lambda، مرتبسازی دادهها بر اساس یک ویژگی خاصه.
خروجی:
[('Reza', 15), ('Ali', 18), ('Sara', 20)]
📌 در این مثال، دانشجوها بر اساس نمرهشون از کم به زیاد مرتب شدن.
عبارت "student[1]" به نمره هر دانشجو اشاره میکنه.
━━━━━━━━━━━━━━━━━━
🔹 ۵. استفاده از Lambda با "map()"
تابع "map()" یک تابع رو روی تکتک عناصر یک مجموعه اعمال میکنه.
خروجی:
[2, 4, 6, 8, 10]
📌 هر عدد در ۲ ضرب شده و نتیجه داخل یک لیست قرار گرفته.
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
1️⃣ با Lambda تابعی بساز که مکعب یک عدد رو محاسبه کنه.
2️⃣ تابعی بنویس که دو عدد دریافت کنه و عدد بزرگتر رو برگردونه.
#آموزش_پایتون
#Python
#برنامه_نویسی
#کاما_کد
💡 توابعی در پایتون که در یک خط تعریف میشوند....
به این تابعها Lambda میگیم
━━━━━━━━━━━━━━━━━━
🔹 ۱. تابع Lambda چیست؟
تابع Lambda یک تابع کوچک و بینام است که با کلمه کلیدی "lambda" تعریف میشه.
ساختار کلی:
lambda arguments: expression
مثال:
square = lambda x: x ** 2
print(square(5))
print(square(8))
خروجی:
25
64
📌 این تابع یک عدد دریافت میکنه و مربع اون رو برمیگردونه.
━━━━━━━━━━━━━━━━━━
🔹 ۲. چند مثال کاربردی
✅ جمع دو عدد:
add = lambda a, b: a + b
print(add(10, 20))
خروجی:
30
✅ بررسی زوج بودن عدد:
is_even = lambda n: n % 2 == 0
print(is_even(8))
print(is_even(7))
خروجی:
True
False
✅ تبدیل دما از سانتیگراد به فارنهایت:
to_fahrenheit = lambda c: (c * 9 / 5) + 32
print(to_fahrenheit(25))
خروجی:
77.0
━━━━━━━━━━━━━━━━━━
🔹 ۳. تفاوت Lambda با تابع معمولی
یک تابع معمولی:
def multiply(a, b):
return a * b
همین تابع با Lambda:
multiply = lambda a, b: a * b
━━━━━━━━━━━━━━━━━━
🔹 ۴. استفاده از Lambda با "sorted()"
یکی از کاربردهای جالب Lambda، مرتبسازی دادهها بر اساس یک ویژگی خاصه.
students = [
("Ali", 18),
("Sara", 20),
("Reza", 15)
]
students.sort(key=lambda student: student[1])
print(students)
خروجی:
[('Reza', 15), ('Ali', 18), ('Sara', 20)]
📌 در این مثال، دانشجوها بر اساس نمرهشون از کم به زیاد مرتب شدن.
عبارت "student[1]" به نمره هر دانشجو اشاره میکنه.
━━━━━━━━━━━━━━━━━━
🔹 ۵. استفاده از Lambda با "map()"
تابع "map()" یک تابع رو روی تکتک عناصر یک مجموعه اعمال میکنه.
numbers = [1, 2, 3, 4, 5]
result = list(map(lambda x: x * 2, numbers))
print(result)
خروجی:
[2, 4, 6, 8, 10]
📌 هر عدد در ۲ ضرب شده و نتیجه داخل یک لیست قرار گرفته.
━━━━━━━━━━━━━━━━━━
🧠 تمرینهای امروز
1️⃣ با Lambda تابعی بساز که مکعب یک عدد رو محاسبه کنه.
2️⃣ تابعی بنویس که دو عدد دریافت کنه و عدد بزرگتر رو برگردونه.
#آموزش_پایتون
#Python
#برنامه_نویسی
#کاما_کد
🐍 آموزش ماژولها (Modules) در پایتون
🔹 ۱. ماژول چیست؟
ماژول در پایتون فایلی با پسوند
با استفاده از ماژولها میتونیم کدهای خودمون رو به بخشهای کوچکتر تقسیم کنیم و دوباره از اونها استفاده کنیم
🔹 ۲. استفاده از ماژولهای آماده
پایتون ماژولهای مختلفی داره که بدون نیاز به نصب جداگانه میتونیم ازشون استفاده کنیم.
مثلاً ماژول
خروجی:
━━━━━━━━━━━━━━━━━━
🔹 ۳. وارد کردن بخش مشخصی از ماژول
اگر فقط به یک تابع نیاز داشته باشیم، میتونیم مستقیماً اون رو وارد کنیم.
خروجی:
📌 در این روش دیگه نیازی نیست قبل از
━━━━━━━━━━━━━━━━━━
🔹 ۴. استفاده از نام مستعار
با کلمه کلیدی
خروجی:
━━━━━━━━━━━━━━━━━━
🔹 ۵. ساخت ماژول اختصاصی خودمون
فرض کن دو فایل پایتون داریم.
📁 فایل اول:
📁 فایل دوم:
خروجی:
📌 برای اجرای این مثال، هر دو فایل رو داخل یک پوشه قرار بده و فایل
━━━━━━━━━━━━━━━━━━
🔹 ۶. ماژول
این ماژول برای تولید مقادیر تصادفی کاربرد داره.
خروجی نمونه:
⚠️ عدد خروجی ممکنه هر بار متفاوت باشه؛
━━━━━━━━━━━━━━━━━━
تمرین
۱️⃣ با استفاده از ماژول
۲️⃣ با استفاده از ماژول
━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#Python
#ماژول_پایتون
#برنامه_نویسی
#کاما_کد
🔹 ۱. ماژول چیست؟
ماژول در پایتون فایلی با پسوند
.py هست که میتونه شامل تابعها، متغیرها و کلاسها باشه.با استفاده از ماژولها میتونیم کدهای خودمون رو به بخشهای کوچکتر تقسیم کنیم و دوباره از اونها استفاده کنیم
🔹 ۲. استفاده از ماژولهای آماده
پایتون ماژولهای مختلفی داره که بدون نیاز به نصب جداگانه میتونیم ازشون استفاده کنیم.
مثلاً ماژول
math برای محاسبات ریاضی کاربرد داره.import math
print(math.sqrt(25))
print(math.pi)
print(math.factorial(5))
خروجی:
5.0
3.141592653589793
120
━━━━━━━━━━━━━━━━━━
🔹 ۳. وارد کردن بخش مشخصی از ماژول
اگر فقط به یک تابع نیاز داشته باشیم، میتونیم مستقیماً اون رو وارد کنیم.
from math import sqrt
print(sqrt(49))
خروجی:
7.0
📌 در این روش دیگه نیازی نیست قبل از
sqrt() بنویسیم math━━━━━━━━━━━━━━━━━━
🔹 ۴. استفاده از نام مستعار
با کلمه کلیدی
as میتونیم یک نام کوتاهتر برای ماژول انتخاب کنیم.import math as m
print(m.sqrt(81))
خروجی:
9.0
━━━━━━━━━━━━━━━━━━
🔹 ۵. ساخت ماژول اختصاصی خودمون
فرض کن دو فایل پایتون داریم.
📁 فایل اول:
calculator.pydef add(a, b):
return a + b
def multiply(a, b):
return a * b
📁 فایل دوم:
main.pyimport calculator
print(calculator.add(10, 5))
print(calculator.multiply(4, 3))
خروجی:
15
12
📌 برای اجرای این مثال، هر دو فایل رو داخل یک پوشه قرار بده و فایل
main.py رو اجرا کن━━━━━━━━━━━━━━━━━━
🔹 ۶. ماژول
randomاین ماژول برای تولید مقادیر تصادفی کاربرد داره.
import random
number = random.randint(1, 10)
print(number)
خروجی نمونه:
7
⚠️ عدد خروجی ممکنه هر بار متفاوت باشه؛
randint(1, 10) هر دو عدد ۱ و ۱۰ رو هم شامل میشه.━━━━━━━━━━━━━━━━━━
تمرین
۱️⃣ با استفاده از ماژول
math، جذر عدد ۱۴۴ رو محاسبه کن.۲️⃣ با استفاده از ماژول
random، یک عدد تصادفی بین ۱ تا ۱۰۰ تولید کن.━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#Python
#ماژول_پایتون
#برنامه_نویسی
#کاما_کد
❤2
سلام دوستان یه تعداد اکانت اوکی کردیم کسی اگر خواست بهم پیام بده
@ir_379
@ir_379