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

حرفی سخنی انتقادی: @ir_379
Download Telegram
🐍 توابع پرکاربرد پایتون که از همون اول باید بلد باشی!

اگر تازه پایتون رو شروع کردی، این چند تابع رو حتماً یاد بگیر؛ چون توی پروژه‌های مختلف بارها و بارها ازشون استفاده می‌کنی. 👨🏻‍💻

━━━━━━━━━━━━━━
🔹 print()
برای نمایش اطلاعات در خروجی:
print("Hello Python")

خروجی:
Hello Python

━━━━━━━━━━━━━━
🔹 input()
برای دریافت اطلاعات از کاربر:
name = input("نامت را وارد کن: ")

print(name)

━━━━━━━━━━━━━━
🔹 type()
برای فهمیدن نوع یک داده:
age = 20
name = "Iliya"

print(type(age))
print(type(name))

خروجی:
<class 'int'>
<class 'str'>

━━━━━━━━━━━━━━
🔹 len()
برای به‌دست آوردن تعداد اعضای یک لیست یا تعداد کاراکترهای یک رشته:
name = "Python"

print(len(name))

خروجی:
6

مثلاً برای لیست:
numbers = [10, 20, 30, 40]

print(len(numbers))

خروجی:
4

━━━━━━━━━━━━━━
🔹 int()
برای تبدیل مقدار به عدد صحیح:
age = int("20")

print(age)

یا یکی از کاربردهای خیلی رایجش:
age = int(input("سن: "))

━━━━━━━━━━━━━━
🔹 float()
برای تبدیل مقدار به عدد اعشاری:
price = float("19.5")

print(price)

━━━━━━━━━━━━━━
🔹 str()
برای تبدیل مقدار به رشته:
age = 20

text = str(age)

print(text)

━━━━━━━━━━━━━━
🔹 max()
بزرگ‌ترین مقدار را پیدا می‌کند:
numbers = [10, 25, 7, 40, 15]

print(max(numbers))

خروجی:
40

━━━━━━━━━━━━━━
🔹 min()
کوچک‌ترین مقدار را پیدا می‌کند:
numbers = [10, 25, 7, 40, 15]

print(min(numbers))

خروجی:
7

━━━━━━━━━━━━━━
🔹 sum()
مجموع اعداد یک لیست را حساب می‌کند:
numbers = [10, 20, 30]

print(sum(numbers))

خروجی:
60

━━━━━━━━━━━━━━
🔹 range()
برای ساختن یک بازه از اعداد، مخصوصاً در حلقه‌ها:
for i in range(5):
print(i)

خروجی:
0
1
2
3
4

━━━━━━━━━━━━━━
🔥 خلاصه توابعی که بهتره از همون اول بلد باشی:
print()
input()
type()
len()
int()
float()
str()
max()
min()
sum()
range()

📌 سعی کن برای هر کدوم چند مثال کوچیک بنویسی

#Python
#پایتون
#آموزش_پایتون
#برنامه_نویسی
❤1
🐍 آموزش رشته‌ها (String) در پایتون | بخش ۱

در پایتون، هر متنی که داخل "' '" یا "" "" قرار بگیرد، یک رشته (String) محسوب می‌شود.
name = "Ali"
message = 'Hello Python'

🔹 برای بررسی نوع داده:
print(type(name))

خروجی:

<class 'str'>

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

🔹 دسترسی به کاراکترهای رشته


هر کاراکتر یک شماره یا Index دارد که از "0" شروع می‌شود.

text = "Python"
print(text[0])
print(text[1])
print(text[5])

خروجی:

P
y
n

📌 اندیس منفی هم داریم:
print(text[-1])

خروجی:

n

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

🔹 برش دادن رشته | Slicing
text = "Python"
print(text[0:3:2])

خروجی:

Pt

ساختار کلی:

text[start:end:step]

⚠️ اندیس "end" در برش حساب نمی‌شود.

✅ step
برای پرش بین کاراکتر ها استفاده می‌شود

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

🔥 متدهای مهم String

1️⃣ "upper()"

تمام حروف را بزرگ می‌کند.
text = "hello python"
print(text.upper())

HELLO PYTHON

---

2️⃣ "lower()"

تمام حروف را کوچک می‌کند.
text = "HELLO PYTHON"
print(text.lower())

hello python

---

3️⃣ "capitalize()"

حرف اول متن را بزرگ می‌کند.

text = "python programming"
print(text.capitalize())

Python programming

---

4️⃣ "title()"

حرف اول هر کلمه را بزرگ می‌کند.
text = "python programming language"
print(text.title())

Python Programming Language

---

5️⃣ "strip()"

فاصله‌های ابتدا و انتهای رشته را حذف می‌کند.
text = "   Python   "
print(text.strip())

Python

دو متد مشابه:

text.lstrip() # حذف از سمت چپ
text.rstrip() # حذف از سمت راست

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

6️⃣ "replace()"

یک قسمت از متن را با متن دیگری جایگزین می‌کند.
text = "I love Java"
print(text.replace("Java", "Python"))

خروجی:

I love Python

---

7️⃣ "find()"

موقعیت شروع یک عبارت را پیدا می‌کند.
text = "Hello Python"
print(text.find("Python"))

خروجی:

6

اگر عبارت پیدا نشود:

-1

---

8️⃣ "count()"

تعداد تکرار یک عبارت را مشخص می‌کند.
text = "banana"
print(text.count("a"))

خروجی:

3

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

9️⃣ "startswith()"

بررسی می‌کند متن با عبارت مشخصی شروع شده یا نه.
text = "Python"
print(text.startswith("Py"))

خروجی:

True

---

🔟 "endswith()"

بررسی می‌کند متن با عبارت مشخصی تمام شده یا نه.
text = "Python"
print(text.endswith("on"))

خروجی:

True

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

1️⃣1️⃣ "split()"

رشته را به چند بخش تقسیم می‌کند و نتیجه را به صورت "list" برمی‌گرداند.
text = "Python,Java,C++"
languages = text.split(",")

print(languages)

خروجی:

['Python', 'Java', 'C++']

📌 یکی از پرکاربردترین متدهای String در پایتون است.

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

1️⃣2️⃣ "join()"

برعکس "split()" عمل می‌کند و چند رشته را به هم متصل می‌کند.

languages = ["Python", "Java", "C++"]
result = "-".join(languages)
print(result)

خروجی:

Python-Java-C++

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

🧠 نکته مهم

رشته‌ها در پایتون Immutable هستند.


یعنی بعد از ساخته شدن، نمی‌توانیم مستقیماً یکی از کاراکترهای آن را تغییر دهیم.

❌ این کار خطا می‌دهد:
text = "Python"
text[0] = "J"

اما می‌توانیم یک رشته جدید بسازیم:
text = "Python"
text = "J" + text[1:]
print(text)

خروجی:

Jython

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

🎯 تمرین

برنامه‌ای بنویسید که یک نام کامل از کاربر دریافت کند :
🔹 فاصله‌های اضافی ابتدا و انتهای آن را حذف کند.
🔹 تمام حروف را کوچک کند.
🔹 تعداد حروف "a" را بشمارد.
🔹 بررسی کند آیا نام با ""ali"" شروع می‌شود یا خیر.
🔹 نام را با "-" از هم جدا کند.

#python
#پایتون
#رشته_ها
یه نکته جالب❗️

می‌دونستید تو پایتون اگر مقدار پیش‌فرض یک پارامتر از نوع تغییرپذیر (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
یه نکته که خیلی‌ها بهش فکر نمی‌کنن و ممکنه یه روز خیلی اذیت کنه:

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

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

💡 توابعی در پایتون که در یک خط تعریف می‌شوند....
به این تابع‌ها 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) در پایتون

🔹 ۱. ماژول چیست؟

ماژول در پایتون فایلی با پسوند .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.py

def add(a, b):
return a + b
def multiply(a, b):
return a * b

📁 فایل دوم: main.py

import 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
🐍 آموزش مدیریت خطاها با try و except در پایتون

🔹 ۱. ساختار try و except

با استفاده از این دو دستور می‌تونیم خطاهای احتمالی رو مدیریت کنیم و اجازه ندیم برنامه به‌صورت ناگهانی متوقف بشه.
try:
number = int(input("Enter a number: "))
print(number)
except ValueError:
print("Please enter a valid number!")

📌 این کد چطور کار می‌کنه؟

- "try":
کدی که ممکنه خطا ایجاد کنه.
- "except":
کدی که هنگام رخ دادن خطای مشخص اجرا می‌شه.
- "ValueError":
خطایی که مثلاً هنگام تبدیل یک متن نامعتبر به عدد رخ می‌ده.

🔹 ۲. مدیریت تقسیم بر صفر
try:
a = int(input("Enter a: "))
b = int(input("Enter b: "))
print(a / b)
except ZeroDivisionError:
print("Cannot divide by zero!")

اگر کاربر برای "b" عدد صفر وارد کنه، به‌جای متوقف شدن برنامه، پیام مناسب نمایش داده می‌شه.

🔹 ۳. استفاده از چند except


می‌تونیم خطاهای مختلف رو جداگانه مدیریت کنیم:
try:
a = int(input("Enter a: "))
b = int(input("Enter b: "))
print(a / b)
except ValueError:
print("Invalid number!")
except ZeroDivisionError:
print("Division by zero!")

🔸 ۴. دستور finally

بخش "finally" چه خطایی رخ بده و چه رخ نده، پس از پایان اجرای ساختار "try" اجرا می‌شه؛ حتی اگر خطا مدیریت شده باشه.
try:
print(10 / 2)
except ZeroDivisionError:
print("Error!")
finally:
print("Program finished.")

📌 خروجی:

5.0
Program finished.

🎯 تمرین شما:

برنامه‌ای بنویسید که دو عدد از کاربر بگیره و حاصل تقسیم اون‌ها رو نمایش بده.
اگر کاربر متن وارد کرد، پیام مناسب نمایش داده بشه و اگر عدد دوم صفر بود، برنامه خطای تقسیم بر صفر رو مدیریت کنه.


جوابتون رو در کامنت‌ها بنویسید!

#Python
#برنامه_نویسی
#آموزش_پایتون
#کاما_کد
❤1
🐍 آموزش کار با فایل‌ها (File Handling) در پایتون !

📌 ۱. باز کردن فایل با open()

برای کار با فایل‌ها از تابع "open()" استفاده می‌کنیم.

file = open("data.txt", "r")

در این مثال، فایل "data.txt" برای خواندن باز می‌شه.

🔹 ۲. حالت‌های مختلف باز کردن فایل

- "r" :
خواندن اطلاعات فایل
- "w" :
نوشتن در فایل؛ محتوای قبلی رو پاک می‌کنه.
- "a" :
اضافه کردن اطلاعات به انتهای فایل
- "x" :
ساخت فایل جدید؛ اگر فایل از قبل وجود داشته باشه، خطا می‌ده.

🔹 ۳. خواندن محتوای فایل با read()


with open("data.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)

متد "read()"
تمام محتوای فایل رو می‌خونه و نمایش می‌ده.

استفاده از "with"
باعث می‌شه فایل بعد از پایان بلوک به‌صورت خودکار بسته بشه.

🔹 ۴. نوشتن در فایل با write()

with open("data.txt", "w", encoding="utf-8") as file:
file.write("Hello Python!")

این کد عبارت "Hello Python!" رو داخل فایل می‌نویسه..

🔹 ۵. اضافه کردن متن به فایل

with open("data.txt", "a", encoding="utf-8") as file:
file.write("\nLearning Python")

در این حالت، متن جدید به انتهای فایل اضافه می‌شه و محتوای قبلی باقی می‌مونه.

🎯 تمرین امروز:


برنامه‌ای بنویسید که:

۱. نام کاربر رو دریافت کنه.

۲. نام رو داخل فایلی به نام "users.txt" ذخیره کنه.

۳. در اجرای بعدی، نام‌های جدید رو بدون پاک شدن نام‌های قبلی به فایل اضافه کنه.

۴. در پایان، تمام نام‌های ذخیره‌شده رو بخونه و نمایش بده.

#Python
#آموزش_پایتون
#برنامه_نویسی
#فایل_ها
#کاما_کد
❤2
🐍 آموزش لیست‌سازی حرفه‌ای در پایتون

این قابلیت کاربردی پایتون، List Comprehension نام دارد....

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

🔹 ۱. روش معمول ساخت لیست

فرض کن می‌خوای مربع اعداد ۱ تا ۵ رو داخل یک لیست ذخیره کنی.

روش معمول:
squares = []
for number in range(1, 6):
squares.append(number ** 2)
print(squares)

خروجی:

[1, 4, 9, 16, 25]

🔹 ۲. همین کار با List Comprehension
squares = [number ** 2 for number in range(1, 6)]
print(squares)

خروجی دقیقاً یکسانه ما کد کوتاه‌تر شده.

ساختار کلی:

[expression for item in iterable]


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

🔹 ۳. استفاده از شرط "if"

فرض کن فقط اعداد زوج یک لیست رو می‌خوایم.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = [
number for number in numbers
if number % 2 == 0
]
print(even_numbers)

خروجی:

[2, 4, 6, 8]

📌 شرط "if" تعیین می‌کنه کدوم عناصر وارد لیست جدید بشن.

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

🔹 ۴. تغییر مقدار عناصر با شرط

می‌تونیم علاوه بر فیلتر کردن، مقدار عناصر رو هم تغییر بدیم.

مثلاً اگر عدد زوج بود، اون رو در ۲ ضرب کنیم و اگر فرد بود، همون عدد رو نگه داریم.
numbers = [1, 2, 3, 4, 5, 6]
result = [
number * 2 if number % 2 == 0 else number
for number in numbers
]
print(result)

خروجی:

[1, 4, 3, 8, 5, 12]

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

🔹 ۵. کار با رشته‌ها


با List Comprehension می‌تونیم روی رشته‌ها هم کار کنیم.
words = ["python", "java", "javascript", "go"]
long_words = [
word for word in words
if len(word) > 4
]
print(long_words)

خروجی:

['python', 'javascript']

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

🔹 ۶. ساخت لیست تو در تو

حتی می‌تونیم از حلقه‌های تو در تو استفاده کنیم.
pairs = [
(x, y)
for x in [1, 2]
for y in [3, 4]
]
print(pairs)

خروجی:

[(1, 3), (1, 4), (2, 3), (2, 4)]

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

🧠 تمرین‌های امروز

۱️⃣ با List Comprehension، لیستی از مربع اعداد ۱ تا ۱۰ بساز.

۲️⃣ از لیست زیر فقط اعداد بزرگ‌تر از ۱۰ رو انتخاب کن:

numbers = [4, 12, 7, 18, 3, 25, 10]

۳️⃣ تمام کلمات یک لیست رو به حروف بزرگ تبدیل کن.

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

#آموزش_پایتون
#Python
#برنامه_نویسی

#کاما_کد
❤2