🐍 آموزش رشتهها (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()"
بررسی میکند متن با عبارت مشخصی تمام
3 · 292 · 🐍 آموزش رشتهها در پایتون | پارت نهایی
چند متد مهم و کاربردی دیگه که در پروژههای واقعی خیلی استفاده میشن. 🚀
━━━━━━━━━━━━━━━━━━
🔹 1. "isdigit()"
بررسی میکند که آیا تمام کاراکترهای رشته عدد هستند یا خیر.
text = "12345"
print(text.isdigit())
خروجی:
True
━━━━━━━━━━━━━━━━━━
🔹 2. "isalpha()"
بررسی میکند که آیا تمام کاراکترهای رشته حروف هستند یا خیر.
text = "Python"
print(text.isalpha())
خروجی:
True
⚠️ وجود فاصله یا عدد باعث "False" شدن نتیجه میشود.
━━━━━━━━━━━━━━━━━━
🔹 3. "isalnum()"
بررسی میکند که رشته فقط شامل حروف و اعداد باشد.
text = "Python123"
print(text.isalnum())
خروجی:
True
اما:
text = "Python 123"
print(text.isalnum())
خروجی:
False
━━━━━━━━━━━━━━━━━━
🔹 4. "isspace()"
بررسی میکند که آیا تمام کاراکترهای رشته فاصله یا کاراکترهای فضای خالی هستند.
text = " "
print(text.isspace())
خروجی:
True
━━━━━━━━━━━━━━━━━━
🔹 5. "islower()"
بررسی میکند که حروف موجود در رشته کوچک هستند یا خیر.
text = "python"
print(text.islower())
خروجی:
True
━━━━━━━━━━━━━━━━━━
🔹 6. "isupper()"
بررسی میکند که حروف موجود در رشته بزرگ هستند یا خیر.
text = "PYTHON"
print(text.isupper())
خروجی:
True
━━━━━━━━━━━━━━━━━━
🔹 7. "swapcase()"
حروف بزرگ را کوچک و حروف کوچک را بزرگ میکند.
text = "PyThOn"
print(text.swapcase())
خروجی:
pYtHoN
━━━━━━━━━━━━━━━━━━
🔹 8. "ljust()" و "rjust()"
برای قرار دادن رشته در سمت چپ یا راست یک فضای مشخص استفاده میشوند.
text = "Python"
print(text.ljust(10, "-"))
print(text.rjust(10, "-"))
خروجی:
Python----
----Python
━━━━━━━━━━━━━━━━━━
🔹 9. "zfill()"
در سمت چپ عدد صفر اضافه میکند تا رشته به طول مشخص برسد.
number = "25"
print(number.zfill(5))
خروجی:
00025
━━━━━━━━━━━━━━━━━━
🔥 یک نکته بسیار مهم
متدهای رشته معمولاً رشته اصلی را تغییر نمیدهند؛ بلکه یک رشته جدید برمیگردانند.
مثلاً:
text = "python"
text.upper()
print(text)
خروجی:
python
چون نتیجه "upper()" را داخل متغیر ذخیره نکردهایم.
درست:
text = "python"
text = text.upper()
print(text)
خروجی:
PYTHON
🔥 با همین متدها میتوانی بخش بزرگی از کارهای روزمره مربوط به متن را د
2 · 238 · یه کانال همچین👇👇👇 خبری رو منتشر کرده و اگر راست باشه باید بگم باید بریم سیستم ها و موبایل هامون رو آتیش بزنیم و با دود به هم دیگه پیام بدیم چون غیر از شما کسانی دیگه هم به گوشیتون ، حسابهاتون و سیستم هاتون دسترسی دارن.
بانک مرکزی در حال اجرای طرحی هستش که امنیت مردم رو به شدت کاهش میده !
بانکهای ایرانی قبلاً از گواهیهای امنیتی خارجی (SSL) استفاده میکردن؛ (همونی که امنیت سایتها رو میسنجید)
بهخاطر تحریمها، این گواهیهای خارجی باطل شدن و الان بانک مرکزی میگه برای اینکه اینترنتبانکها دوباره بدون مشکل کار کنن، مردم باید یه فایل خاص به اسم «گواهی ریشه داخلی» رو روی گوشی یا کامپیوترشون نصب کنن.
این فایل چیکار میکنه؟
مثل اینه که به دستگاهت بگی: «از این به بعد به هر چیزی که این مرجع داخلی بگه، اعتماد کن.» مشکل اینجاست که این اعتماد فقط برای سایت بانک نیست.
اگه این فایل روی کل سیستم نصب بشه، دستگاهت به سایتهای دیگه هم ممکنه اعتماد کنه، حتی اگه اون سایتها واقعی نباشن؛
یعنی اگه کسی (چه هکر چه هر نهاد دیگهای) بتونه خودش رو وسط ارتباط تو و سایت قرار بده و یه گواهی جعلی بسازه، میتونه: اطلاعاتت رو ببینه، رمزها و پیامهات رو بخونه و تو هم متوجه نشی، چون دستگاهت فکر میکنه همهچیز عادیه و امنه.
راههایی که میخوان این فایل رو به مردم برسونن:
از طریق اپهای بانکی، مرورگرهای داخلی مثل ذرهبین، بعضی آنتیویروسها مثل پادویش و احتمالاً بعضی پیامرسانهای داخلی
3 · 302 · یه نکته جالب❗️
میدونستید تو پایتون اگر مقدار پیشفرض یک پارامتر از نوع تغییرپذیر (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
261 · 🔰 قالببندی رشتهها در پایتون (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
✅ نکته مهم: هر سه روش
3 · 264 · چند وقت پیش داشتم با یکی از دوستان در خصوص اینکه در سالهای آینده قراره موبایلها به اینترنت ماهواره ای مجهز بشن صحبت میکردیم.
جدیدا یه خبر خوندم که اپل داره با اسپیس ایکس مذاکره میکنه که سری های جدید آیفون از این امکانات شرکت اسپیس ایکس استفاده کنن
با این کار عملا دارندگان آیفون ۱۸ بدون نیاز به
پیرو این پست که قبلا گذاشته بودم باید بگم که:
🔴 ایلان ماسک مجوزهای مهمی برای اتصال مستقیم گوشیها به ماهواره استارلینک گرفته؛
فناوریای که در صورت فراهم شدن دسترسی تو ایران، میتونه وابستگی به اینترنت و زیرساختهای ارتباطی داخلی رو خیلی خیلی کمتر کنه.
اینترنت ماهوارهای حالا یه قدم دیگه به گوشیهای معمولی نزدیکتر شده؛
فناوری Starlink Direct to Cell قراره کاری کنه که گوشیهای سازگار، تو جاهایی که آنتن موبایل وجود نداره، مستقیماً به ماهواره استارلینک وصل بشن؛ یعنی دیگه لزوماً نیازی به دیش استارلینک نیست.
اسپیس ایکس هم داره این فناوری رو با همکاری اپراتورهای کشورهای مختلف گسترش میده.
برای ایران هم اگه این فناوری قابل استفاده بشه، میتونه قطع کامل ارتباطات رو خیلی سختتر یا عملا غیرممکن کنه.
238 · یه نکته که خیلیها بهش فکر نمیکنن و ممکنه یه روز خیلی اذیت کنه:
هیچوقت دو تا رشته رو بدون نرمالسازی یونیکد با هم مقایسه نکن.
فکر میکنی دو تا رشته که شکلشون یکیه، پس برابرن؟ نه همیشه. مثلاً حرف «é» رو در نظر بگیر. یه بار به صورت یک کاراکتر واحد نوشته میشه (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
#پایتون #برنامهنویسی #مقایسه #کاما_کد #نرمالسازی
276 · 🐍 آموزش لیستها (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]
pri
2 · 261 · 📚 آشنایی با تاپل (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
1 · 261 · 🐍 آموزش مجموعهها (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
170 · میخوام یه حلقه جالب با فور در پایتون بهتون معرفی کنم که خودش یه نگهبان هم داره.
اینکار رو با کمک فانکشن 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 · 437 · سلام عزیزان قسمت ۱ دوره مبانی کامپیوتر و برنامهنویسی منتشر شد و میتونید از لینک زیر تماشا کنید
https://www.aparat.com/v/lis895z
در این قسمت از دوره راجب برنامه نویسی و الگوریتم صحبت کردیم و همینطور تعریف دقیقی از کامپیوتر ارائه دادیم.
میخوام یه دوره ریجکس ضبط کنم
نظرتونه؟
راسی دوره مبانی هم شروع میکنم تو یوتیوب هم آپلود کنم
161 · 🔰 بولین (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 · 166 · 🐍 آموزش دیکشنری در پایتون | 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️⃣ نویسنده را حذف کنید.
💬 جوا
❤1
2 · 109 · پیوند
برای نمایش کلیک کنید
برای نمایش کلیک کنید
خیلی هم عالی
داکیومنت فارسی پایتون منتشر شد
https://docs.python.org/fa/3.14/
👏👏👏
🔥4
6 · 153 · 🐍 آموزش توابع | (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" بنویس که سه عدد دریافت کند و میانگین
110 · همین الان یه نکته جالبی از 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
❤2👍2🔥1
2 · 352 · 🐍 آموزش آرگومانهای "*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" مشخصات یک کاربر رو دریافت و نمایش بده.
💬 پاسخ تمرینها رو در کامنتها بنویس!
━━━━━━━━━━━━━━━━━━
#آموزش_پایتون
#توابع_پایتون
#برنامه_نویسی
#کاما_کد
92 · 🐍 آموزش متغیرهای Local و Global
🔹 متغیر 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
127 · 🐍 آموزش توابع 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
#برنامه_نویسی
#کاما_کد
66 ·