برنامه‌نویسی comma.code | computer| کاما کد|
2.67K subscribers
23 photos
64 videos
9 files
93 links
به ⭐️کانال کاما کد⭐️ خوش اومدی؛ جایی که کدها زنده میشن و ایدهها به واقعیت تبدیل میشدن! 🚀 چه تازهکار باشی و چه حرفه ای، اینجا کلی چیز منتظرته

حرفی سخنی انتقادی: @ir_379
Download Telegram
یه کانال همچین👇👇👇 خبری رو منتشر کرده و اگر راست باشه باید بگم باید بریم سیستم ها و موبایل هامون رو آتیش بزنیم و با دود به هم دیگه پیام بدیم چون غیر از شما کسانی دیگه هم به گوشیتون ، حسابهاتون و سیستم هاتون دسترسی دارن.


 بانک مرکزی در حال اجرای طرحی هستش که امنیت مردم رو به شدت کاهش میده !

بانک‌های ایرانی قبلاً از گواهی‌های امنیتی خارجی (SSL) استفاده می‌کردن؛ (همونی که امنیت سایت‌ها رو میسنجید)
به‌خاطر تحریم‌ها، این گواهی‌های خارجی باطل شدن و الان بانک مرکزی میگه برای اینکه اینترنت‌بانک‌ها دوباره بدون مشکل کار کنن، مردم باید یه فایل خاص به اسم «گواهی ریشه داخلی» رو روی گوشی یا کامپیوترشون نصب کنن.
این فایل چیکار می‌کنه؟
مثل اینه که به دستگاهت بگی: «از این به بعد به هر چیزی که این مرجع داخلی بگه، اعتماد کن.» مشکل اینجاست که این اعتماد فقط برای سایت بانک نیست.
اگه این فایل روی کل سیستم نصب بشه، دستگاهت به سایت‌های دیگه هم ممکنه اعتماد کنه، حتی اگه اون سایت‌ها واقعی نباشن؛
یعنی اگه کسی (چه هکر چه هر نهاد دیگه‌ای) بتونه خودش رو وسط ارتباط تو و سایت قرار بده و یه گواهی جعلی بسازه، می‌تونه: اطلاعاتت رو ببینه، رمزها و پیام‌هات رو بخونه و تو هم متوجه نشی، چون دستگاهت فکر میکنه همه‌چیز عادیه و امنه.
راه‌هایی که میخوان این فایل رو به مردم برسونن:
از طریق اپ‌های بانکی، مرورگرهای داخلی مثل ذره‌بین، بعضی آنتی‌ویروس‌ها مثل پادویش و احتمالاً بعضی پیام‌رسان‌های داخلی
‌
🤯4
یه نکته جالب❗️

می‌دونستید تو پایتون اگر مقدار پیش‌فرض یک پارامتر از نوع تغییرپذیر (mutable) باشه، مثل لیست یا دیکشنری، این مقدار فقط یک بار زمان اجرای دستور def ارزیابی می‌شه؟ بعد از اون، هر بار تابع رو بدون دادن اون آرگومان فراخوانی کنیم، پارامتر به همان شیء قبلی اشاره می‌کنه و از نو ساخته نمیشه

مثال:

def add(item, items={}):
items[item] = 0
return items

print(add("1"))
print(add("2"))
print(add("3"))

خروجی:

{'1': 0}
{'1': 0, '2': 0}
{'1': 0, '2': 0, '3': 0}

چون {} فقط یک بار در زمان تعریف تابع ساخته شده و همون دیکشنری بین فراخوانی‌ها باقی می‌مونه

برای دیدن این موضوع می‌تونیم id رو چاپ کنیم:

def add(item, items={}):
items[item] = 0
return id(items)

print(add("1"))
print(add("2"))
print(add("3"))

هر سه عدد یکی هستن، چون هر بار همون شیء دیکشنری برگردونده می‌شه

حالا اگر می‌خوایم هر بار مقدارمون خالی و تازه باشه چیکار کنیم؟

راه درست اینکه مقدار پیش‌فرض رو None بذاریم و داخل تابع، در صورت None بودن، دیکشنری جدید بسازیم:

def add(item, items=None):
if items is None:
items = {}
items[item] = 0
return items

یا اگر لازم نیست دیکشنری از بیرون به تابع پاس داده بشه، اون رو داخل خود تابع بسازیم:

def add(item):
items = {}
items[item] = 0
return items



@comma_code
@comma_code
#کاما_کد #فانکشن #پایتون
#function #mutable #comma_code #python
❤6🔥1
🔰 قالب‌بندی رشته‌ها در پایتون (String Formatting)

یکی از مباحث کاربردی در پایتون، قالب‌بندی رشته‌ها (String Formatting) است. با استفاده از این روش‌ها می‌توانیم متغیرها و مقادیر مختلف را به‌صورت خوانا و منظم داخل یک رشته قرار دهیم.

در پایتون ۳ روش اصلی برای این کار وجود دارد. 👇

━━━━━━━━━━━━━━━━━━

1️⃣ روش اول: استفاده از عملگر %

این روش یکی از قدیمی‌ترین روش‌های قالب‌بندی رشته‌ها در پایتون است.

name = "Ali"
age = 20
print("My name is %s and I am %d years old." % (name, age))

📤 خروجی:

My name is Ali and I am 20 years old.

🔹 %s برای رشته‌ها (String)

🔹 %d برای اعداد صحیح (Integer)

🔹 %f برای اعداد اعشاری (Float)

مثال:

price = 19.99
print("Price: %.2f" % price)

خروجی:

Price: 19.99


عبارت %.2f عدد اعشاری را با دو رقم بعد از ممیز نمایش می‌دهد.

━━━━━━━━━━━━━━━━━━

2️⃣ روش دوم: استفاده از متد format()

در این روش، از متد format() برای جایگزین کردن مقادیر داخل {} استفاده می‌کنیم.
name = "Sara"
age = 22
print("My name is {} and I am {} years old.".format(name, age))

📤 خروجی:

My name is Sara and I am 22 years old.

🔹 می‌توانیم با استفاده از اندیس، ترتیب مقادیر را مشخص کنیم:
print("{1} is {0} years old.".format(25, "Ali"))

خروجی:

Ali is 25 years old.


🔹 همچنین می‌توانیم نام متغیرها را مشخص کنیم:
print("Name: {name}, Age: {age}".format(name="Reza", age=21))

خروجی:

Name: Reza, Age: 21


━━━━━━━━━━━━━━━━━━

3️⃣ روش سوم: استفاده از f-string

این روش از پایتون ۳.۶ به بعد معرفی شده و یکی از خواناترین و پرکاربردترین روش‌های قالب‌بندی رشته‌هاست.

کافی است قبل از علامت کوتیشن رشته، حرف f قرار دهیم و متغیرها یا عبارت‌ها را داخل {} بنویسیم.
name = "Ali"
age = 20
print(f"My name is {name} and I am {age} years old.")

📤 خروجی:

My name is Ali and I am 20 years old.

🔹 مزیت مهم f-string این است که می‌توانیم عبارت‌های پایتونی را مستقیماً داخل {} بنویسیم:
a = 10
b = 5
print(f"Sum: {a + b}")
print(f"Result: {a * b}")

خروجی:
Sum: 15
Result: 50


🔹 حتی می‌توانیم تعداد ارقام اعشاری را مشخص کنیم:
price = 19.9876
print(f"Price: {price:.2f}")

خروجی:
Price: 19.99


✅ نکته مهم: هر سه روش معتبر هستند؛ اما در کدهای جدید پایتون، معمولاً f-string به دلیل خوانایی و سادگی انتخاب مناسبی است.

━━━━━━━━━━━━━━━━━━

🧩 تمرین برای شما


دو متغیر زیر را در نظر بگیرید:

name = "Python"
version = 3.14


برنامه‌ای بنویسید که با استفاده از هر سه روش بالا، جمله زیر را چاپ کند:

I am learning Python version 3.14


💬 پاسخ خود را در کامنت‌ها بنویسید

#Python
#آموزش_پایتون
#برنامه_نویسی
#قالب_بندی
❤2
⁩
چند وقت پیش داشتم با یکی از دوستان در خصوص اینکه در سال‌های آینده قراره موبایل‌ها به اینترنت ماهواره ای مجهز بشن صحبت میکردیم. جدیدا یه خبر خوندم که اپل داره با اسپیس ایکس مذاکره میکنه که سری های جدید آیفون از این امکانات شرکت اسپیس ایکس استفاده کنن با…
پیرو این پست که قبلا گذاشته بودم باید بگم که:


🔴 ایلان ماسک مجوزهای مهمی برای اتصال مستقیم گوشی‌‌ها به ماهواره استارلینک گرفته؛

فناوری‌ای که در صورت فراهم شدن دسترسی تو ایران، می‌تونه وابستگی به اینترنت و زیرساخت‌های ارتباطی داخلی رو خیلی خیلی کمتر کنه.
اینترنت ماهواره‌ای حالا یه قدم دیگه به گوشی‌های معمولی نزدیک‌تر شده؛
فناوری Starlink Direct to Cell قراره کاری کنه که گوشی‌های سازگار، تو جاهایی که آنتن موبایل وجود نداره، مستقیماً به ماهواره استارلینک وصل بشن؛ یعنی دیگه لزوماً نیازی به دیش استارلینک نیست.
اسپیس ایکس هم داره این فناوری رو با همکاری اپراتورهای کشورهای مختلف گسترش میده.
برای ایران هم اگه این فناوری قابل استفاده بشه، می‌تونه قطع کامل ارتباطات رو خیلی سخت‌تر یا عملا غیرممکن کنه.
🔥3❤1
یه نکته که خیلی‌ها بهش فکر نمی‌کنن و ممکنه یه روز خیلی اذیت کنه:

هیچ‌وقت دو تا رشته رو بدون نرمال‌سازی یونیکد با هم مقایسه نکن.

فکر می‌کنی دو تا رشته که شکلشون یکیه، پس برابرن؟ نه همیشه. مثلاً حرف «é» رو در نظر بگیر. یه بار به صورت یک کاراکتر واحد نوشته می‌شه (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) در پایتون

📌 لیست یکی از مهم‌ترین ساختارهای داده در پایتون است که به ما اجازه می‌دهد چندین مقدار را در یک متغیر ذخیره کنیم.

🔹 ۱. ساخت لیست

برای ساخت لیست از "[]" استفاده می‌کنیم و عناصر را با کاما از یکدیگر جدا می‌کنیم.

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)

برای ساخت تاپل، از پرانتز "()" استفاده می‌کنیم:

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

برای ساخت مجموعه معمولاً از "{}" استفاده می‌کنیم:

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) کار داریم
که یه همچین عملکردی داره
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
🔰 بولین (Boolean) در پایتون

در پایتون، نوع داده‌ی 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


ری اکشن ها خیلی کم شده😔
❤‍🔥5
🐍 آموزش دیکشنری در پایتون | 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" استفاده می‌کنیم.

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 که میاد اسم فانکشن ها رو در سطح باینری تغییر میده میتونیم چندین فانکشن با یک اسم داشته باشیم (در واقع در پشت صحنه دوباره فانکشن ها رو اسم گذاری میکنه)

حالا اینجا یه نمونه می‌بینیم که نوع پارامتر ها متفاوته و کمک کرده چند فانکشن با یک اسم داشته باشیم.
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" می‌تونیم تعداد دلخواهی آرگومان موقعیتی به تابع ارسال کنیم.
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