Media is too big
VIEW IN TELEGRAM
اعشار شناور
در این ویدئو توضیح دادم که چرا اعشار شناور رخ میده
امید وارم مفید باشه براتون ❤️
حمایت فراموش نشه 🙏😘
#پایتون #Python #آموزش_پایتون
#اعداد_اعشاری_شناور #FloatingPoint
#comma_code #کاما_کد
#نوع_داده_اعشاری #برنامه_نویسی
#نکات_پایتون #یادگیری_پایتون
📱 کانال تلگرام
📱 صفحه اینستاگرام
📱 چنل یوتیوب
🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤
در این ویدئو توضیح دادم که چرا اعشار شناور رخ میده
امید وارم مفید باشه براتون ❤️
حمایت فراموش نشه 🙏😘
#پایتون #Python #آموزش_پایتون
#اعداد_اعشاری_شناور #FloatingPoint
#comma_code #کاما_کد
#نوع_داده_اعشاری #برنامه_نویسی
#نکات_پایتون #یادگیری_پایتون
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤1👍1👏1
Media is too big
VIEW IN TELEGRAM
عملگر های بیتی در پایتون ✨
#پایتون #کاما_کد #برنامه_نویسی #عملگر #بیت #حافظه #آموزش
#python #comma_code #programing #operator #bit #storage #training
📱 کانال تلگرامی
📱 پیج اینستاگرام
📱 چنل یوتیوب
حمایت فراموش نشه🙏
🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤
#پایتون #کاما_کد #برنامه_نویسی #عملگر #بیت #حافظه #آموزش
#python #comma_code #programing #operator #bit #storage #training
حمایت فراموش نشه
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1👎1🙏1
comma_code (3).rar
270.5 MB
سلام دوستان
فانکشن در پایتون⚡️
#پایتون #کاما_کد #برنامه_نویسی #عملگر #بیت #حافظه #آموزش
#python #comma_code #programing #operator #bit #storage #training
📱 کانال تلگرامی
📱 پیج اینستاگرام
📱 چنل یوتیوب
👍 👍 👍 👍 👍
حمایت فراموش نشه🙏
🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤
فانکشن در پایتون
#پایتون #کاما_کد #برنامه_نویسی #عملگر #بیت #حافظه #آموزش
#python #comma_code #programing #operator #bit #storage #training
حمایت فراموش نشه🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👎1
🐍 یه ترفند کاربردی در پایتون که باید بلد باشی!
تا حالا خواستی داخل یک حلقه ی For هم شمارهی آیتم رو داشته باشی، هم خود آیتم؟
به لیست زیر دقت کنید :
❌ روش معمولی:
اما در پایتون یک روش تمیز و اصولی برای این کار موجود است :
🔥
خروجی:
یعنی
💡 حتی میتوان شمارهگذاری را از 1 شروع کرد:
خروجی:
🎯 این روش برای ساختن منوها، نمایش لیست محصولات، شمارهگذاری دانشآموزها و ... کاربرد دارد
مثلاً:
خروجی:
#Python
#پایتون
#برنامه_نویسی
تا حالا خواستی داخل یک حلقه ی For هم شمارهی آیتم رو داشته باشی، هم خود آیتم؟
به لیست زیر دقت کنید :
names = ["Ali", "Sara", "Reza", "Mina"]
❌ روش معمولی:
for i in range(len(names)):
print(i, names[i])
اما در پایتون یک روش تمیز و اصولی برای این کار موجود است :
🔥
enumerate()for index, name in enumerate(names):
print(index, name)
خروجی:
0 Ali
1 Sara
2 Reza
3 Mina
یعنی
enumerate() همزمان شماره (index) و مقدار (value) ر در اختیار برنامه نویس قرار می دهد. 💡 حتی میتوان شمارهگذاری را از 1 شروع کرد:
for index, name in enumerate(names, start=1):
print(index, name)
خروجی:
1 Ali
2 Sara
3 Reza
4 Mina
🎯 این روش برای ساختن منوها، نمایش لیست محصولات، شمارهگذاری دانشآموزها و ... کاربرد دارد
مثلاً:
students = ["محمد", "علی", "سارا"]
for number, student in enumerate(students, start=1):
print(f"{number}. {student}")
خروجی:
1. محمد
2. علی
3. سارا
#Python
#پایتون
#برنامه_نویسی
👍6
🐍 دیکشنری در پایتون و یک نکته ی مهم
دیکشنری برای ذخیره اطلاعات به صورت کلید و مقدار (Key & Value) استفاده میشه.
مثلاً:
اینجا:
🔑 "name" → کلید
📦 "Ali" → مقدار
برای دسترسی به اطلاعات:
خروجی:
Ali
💡 دیکشنری یکی از مهمترین ساختارهای داده در پایتونه و در پروژههای واقعی، مخصوصاً کار با API و JSON، خیلی زیاد استفاده میشه.
📌 یک نکته بسیار مهم در دیکشنری های پایتون 🐍
فرض کن:
اگر بنویسی:
💥 برنامه با KeyError متوقف میشه، چون email وجود نداره.
اما میتوانی از get() استفاده کنی:
خروجی:
None
حتی میتونی مقدار پیشفرض تعیین کنی:
خروجی:
ثبت نشده
🔥 کاربرد واقعی
مثلاً در APIها:
اینطوری اگر کلید وجود نداشته باشه، برنامهات بیدلیل با خطا متوقف نمیشود.
✅ البته سعی کن فقط جایی که لازمه از این دستور استفاده کنی
#Python
#dictionary
دیکشنری برای ذخیره اطلاعات به صورت کلید و مقدار (Key & Value) استفاده میشه.
مثلاً:
user = {
"name": "Ali",
"age": 20,
"city": "Tehran"
}اینجا:
🔑 "name" → کلید
📦 "Ali" → مقدار
برای دسترسی به اطلاعات:
print(user["name"])
خروجی:
Ali
💡 دیکشنری یکی از مهمترین ساختارهای داده در پایتونه و در پروژههای واقعی، مخصوصاً کار با API و JSON، خیلی زیاد استفاده میشه.
📌 یک نکته بسیار مهم در دیکشنری های پایتون 🐍
فرض کن:
user = {
"name": "Ali",
"age": 20
}اگر بنویسی:
print(user["email"])
💥 برنامه با KeyError متوقف میشه، چون email وجود نداره.
اما میتوانی از get() استفاده کنی:
print(user.get("email"))خروجی:
None
حتی میتونی مقدار پیشفرض تعیین کنی:
print(user.get("email", "ثبت نشده"))خروجی:
ثبت نشده
🔥 کاربرد واقعی
مثلاً در APIها:
name = data.get("name", "Unknown")
email = data.get("email", "No Email")اینطوری اگر کلید وجود نداشته باشه، برنامهات بیدلیل با خطا متوقف نمیشود.
✅ البته سعی کن فقط جایی که لازمه از این دستور استفاده کنی
#Python
#dictionary
🐍 توابع در پایتون؛ یکبار بنویس، هرچند بار استفاده کن!
فرض کن قرار باشه یک کار مشخص رو چندین بار انجام بدی. بهجای تکرار کد، میتونی اون رو داخل یک Function قرار بدی.
🔹 ساخت یک تابع
حالا هر وقت بخوای اجراش کنی:
🔹 تابع با ورودی
میتونی اطلاعاتی رو به تابع بدی:
خروجی:
Hello Ali!
Hello Sara!
🔹 "return"
اگر بخوای تابع یک نتیجه بهت برگردونه:
خروجی:
30
📌 تفاوت مهم:
"print()" → فقط نتیجه را نمایش میدهد.
"return" → نتیجه را از تابع برمیگرداند تا بتوانی دوباره از آن استفاده کنی.
---
🔥 یک نکته حرفهای
تابع میتونه مقدار پیشفرض داشته باشه:
خروجی:
Hello Guest
Hello Ali
یعنی اگر ورودی ندی، مقدار ""Guest"" استفاده میشه.
🧠 خلاصه:
"def" → ساخت تابع
"()" → دریافت ورودی
"return" → برگرداندن نتیجه
"print()" → نمایش نتیجه
اگر میخوای Python رو اصولی یاد بگیری، توابع یکی از مهمترین مفاهیمیه که باید کاملاً مسلط بشی. 🐍🔥
#Python
#پایتون
#آموزش_پایتون
#برنامه_نویسی
فرض کن قرار باشه یک کار مشخص رو چندین بار انجام بدی. بهجای تکرار کد، میتونی اون رو داخل یک Function قرار بدی.
🔹 ساخت یک تابع
def say_hello():
print("Hello!")
حالا هر وقت بخوای اجراش کنی:
say_hello()
🔹 تابع با ورودی
میتونی اطلاعاتی رو به تابع بدی:
def greet(name):
print(f"Hello {name}!")
greet("Ali")
greet("Sara")
خروجی:
Hello Ali!
Hello Sara!
🔹 "return"
اگر بخوای تابع یک نتیجه بهت برگردونه:
def add(a, b):
return a + b
result = add(10, 20)
print(result)
خروجی:
30
📌 تفاوت مهم:
"print()" → فقط نتیجه را نمایش میدهد.
"return" → نتیجه را از تابع برمیگرداند تا بتوانی دوباره از آن استفاده کنی.
---
🔥 یک نکته حرفهای
تابع میتونه مقدار پیشفرض داشته باشه:
def greet(name="Guest"):
print(f"Hello {name}")
greet()
greet("Ali")
خروجی:
Hello Guest
Hello Ali
یعنی اگر ورودی ندی، مقدار ""Guest"" استفاده میشه.
🧠 خلاصه:
"def" → ساخت تابع
"()" → دریافت ورودی
"return" → برگرداندن نتیجه
"print()" → نمایش نتیجه
اگر میخوای Python رو اصولی یاد بگیری، توابع یکی از مهمترین مفاهیمیه که باید کاملاً مسلط بشی. 🐍🔥
#Python
#پایتون
#آموزش_پایتون
#برنامه_نویسی
🔥 انواع داده در پایتون؛
یکی از مهمترین پایههای برنامهنویسی، شناخت Data Types است!
در پایتون، نوع داده با مفاهیمی مثل Object، رفتار، قابلیت تغییر، هویت و نحوهٔ استفاده در عملیاتها ارتباط مستقیم دارد. 🐍
━━━━━━━━━━━━━━━━━━
۱. نوع داده (Data Type) چیست؟
نوع داده مشخص میکند یک شیء:
🔹 چه نوع اطلاعاتی را نمایش میدهد.
🔹 چه عملیاتی روی آن مجاز است.
🔹 چگونه رفتار میکند.
🔹 آیا قابل تغییر است یا نه.
🔹 چه متدهایی در اختیار دارد.
مثلاً:
شیء "10" از نوع "int" است.
اما:
این بار شیء از نوع "str" است.
با اینکه ظاهر داده مشابه است، رفتار آنها کاملاً متفاوت خواهد بود.
━━━━━━━━━━━━━━━━━━
۲. انواع دادهٔ اصلی در پایتون
پایتون چند گروه مهم از دادهها دارد:
📌 Numeric Types
- "int"
- "float"
- "complex"
📌 Boolean Type
- "bool"
📌 Text Type
- "str"
📌 Sequence Types
- "list"
- "tuple"
- "range"
📌 Mapping Type
- "dict"
📌 Set Types
- "set"
- "frozenset"
📌 Binary Types
- "bytes"
- "bytearray"
- "memoryview"
📌 None Type
- "NoneType"
━━━━━━━━━━━━━━━━━━
۳. نوع "int"؛ اعداد صحیح
برای نمایش اعداد بدون بخش اعشاری استفاده میشود.
━━━━━━━━━━━━━━━━━━
۴. نوع "float"؛ اعداد اعشاری
اما یک نکتهٔ بسیار مهم:
⚠️ همهٔ اعداد اعشاری در کامپیوتر دقیقاً قابل نمایش نیستند.
خروجی ممکن است:
0.30000000000000004
باشد.
دلیل آن، نحوهٔ نمایش اعداد اعشاری در سیستم دودویی است.
پس برای محاسبات مالی حساس، استفاده از "Decimal" میتواند مناسبتر باشد.
━━━━━━━━━━━━━━━━━━
۵. نوع "complex"؛ اعداد مختلط
پایتون از اعداد مختلط پشتیبانی میکند.
━━━━━━━━━━━━━━━━━━
۶. نوع "bool"؛ فقط True و False؟
از نظر مفهومی، بهتر است Boolean را برای نمایش وضعیتهای منطقی استفاده کنیم، نه بهعنوان جایگزین عدد.
━━━━━━━━━━━━━━━━━━
۷. نوع "str"؛ رشتهها در پایتون
رشته برای ذخیرهٔ متن استفاده میشود:
اما:
خطا میدهد؛ چون رشته قابل تغییر نیست.
━━━━━━━━━━━━━━━━━━
۸. نوع "list"؛
ویژگیها:
✔️ Ordered
✔️ Mutable
تغییرپذیری:
━━━━━━━━━━━━━━━━━━
۹. نوع "tuple"؛
Tuple:
🔹 مرتب است.
🔹 قابل پیمایش است.
🔹 میتواند دادهٔ تکراری داشته باشد.
🔹 پس از ایجاد، عناصرش قابل تغییر نیستند.
━━━━━━━━━━━━━━━━━━
۱۰. نوع "set"؛
━━━━━━━━━━━━━━━━━━
۱۲. نوع "dict"؛
دیکشنری دادهها را به شکل:
Key → Value
نگهداری میکند.
━━━━━━━━━━━━━━━━━━
۱۳. نوع "range"
برای نمایش یک دنبالهٔ عددی استفاده میشود.
به همین دلیل:
range(10_000_000)
از نظر حافظه بسیار بهینهتر از ساختن یک لیست بزرگ است.
━━━━━━━━━━━━━━━━━━
۱۴. نوع "NoneType" و مقدار "None"
"None" به معنای:
❌ صفر نیست.
❌ رشتهٔ خالی نیست.
❌ "False" نیست.
بلکه نشاندهندهٔ نبود مقدار یا عدم وجود نتیجه است.
result = None
بررسی صحیح:
نوع آن:
خروجی:
<class 'NoneType'>
#Python #آموزش_پایتون #DataTypes #برنامه_نویسی
یکی از مهمترین پایههای برنامهنویسی، شناخت Data Types است!
در پایتون، نوع داده با مفاهیمی مثل Object، رفتار، قابلیت تغییر، هویت و نحوهٔ استفاده در عملیاتها ارتباط مستقیم دارد. 🐍
━━━━━━━━━━━━━━━━━━
۱. نوع داده (Data Type) چیست؟
نوع داده مشخص میکند یک شیء:
🔹 چه نوع اطلاعاتی را نمایش میدهد.
🔹 چه عملیاتی روی آن مجاز است.
🔹 چگونه رفتار میکند.
🔹 آیا قابل تغییر است یا نه.
🔹 چه متدهایی در اختیار دارد.
مثلاً:
x = 10
شیء "10" از نوع "int" است.
اما:
x = "10"
این بار شیء از نوع "str" است.
با اینکه ظاهر داده مشابه است، رفتار آنها کاملاً متفاوت خواهد بود.
print(10 + 5) # 15
print("10" + "5") # 105
━━━━━━━━━━━━━━━━━━
۲. انواع دادهٔ اصلی در پایتون
پایتون چند گروه مهم از دادهها دارد:
📌 Numeric Types
- "int"
- "float"
- "complex"
📌 Boolean Type
- "bool"
📌 Text Type
- "str"
📌 Sequence Types
- "list"
- "tuple"
- "range"
📌 Mapping Type
- "dict"
📌 Set Types
- "set"
- "frozenset"
📌 Binary Types
- "bytes"
- "bytearray"
- "memoryview"
📌 None Type
- "NoneType"
━━━━━━━━━━━━━━━━━━
۳. نوع "int"؛ اعداد صحیح
برای نمایش اعداد بدون بخش اعشاری استفاده میشود.
age = 22
temperature = -5
population = 1000000
━━━━━━━━━━━━━━━━━━
۴. نوع "float"؛ اعداد اعشاری
price = 19.99
pi = 3.14159
اما یک نکتهٔ بسیار مهم:
⚠️ همهٔ اعداد اعشاری در کامپیوتر دقیقاً قابل نمایش نیستند.
print(0.1 + 0.2)
خروجی ممکن است:
0.30000000000000004
باشد.
دلیل آن، نحوهٔ نمایش اعداد اعشاری در سیستم دودویی است.
پس برای محاسبات مالی حساس، استفاده از "Decimal" میتواند مناسبتر باشد.
━━━━━━━━━━━━━━━━━━
۵. نوع "complex"؛ اعداد مختلط
پایتون از اعداد مختلط پشتیبانی میکند.
z = 3 + 4j
print(z.real) # 3.0
print(z.imag) # 4.0
━━━━━━━━━━━━━━━━━━
۶. نوع "bool"؛ فقط True و False؟
is_active = True
is_admin = False
از نظر مفهومی، بهتر است Boolean را برای نمایش وضعیتهای منطقی استفاده کنیم، نه بهعنوان جایگزین عدد.
━━━━━━━━━━━━━━━━━━
۷. نوع "str"؛ رشتهها در پایتون
رشته برای ذخیرهٔ متن استفاده میشود:
name = "Python"
message = "سلام دنیا"
text = "Python"
print(text[0]) # P
print(text[-1]) # n
اما:
text[0] = "J"
خطا میدهد؛ چون رشته قابل تغییر نیست.
━━━━━━━━━━━━━━━━━━
۸. نوع "list"؛
numbers = [10, 20, 30]
ویژگیها:
✔️ Ordered
✔️ Mutable
data = [10, "Python", True, 3.14]
تغییرپذیری:
numbers[0] = 100
print(numbers)
━━━━━━━━━━━━━━━━━━
۹. نوع "tuple"؛
point = (10, 20)
Tuple:
🔹 مرتب است.
🔹 قابل پیمایش است.
🔹 میتواند دادهٔ تکراری داشته باشد.
🔹 پس از ایجاد، عناصرش قابل تغییر نیستند.
━━━━━━━━━━━━━━━━━━
۱۰. نوع "set"؛
numbers = {1, 2, 3, 3, 4}
print(numbers)
خروجی:
{1, 2, 3, 4}
ویژگیها:
✔️ عناصر تکراری را حذف میکند.
✔️ برای عملیات مجموعهای بسیار مناسب است.
✔️ Indexing مستقیم ندارد.
✔️ Mutable است.
عملیات مهم:
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # اجتماع
print(a & b) # اشتراک
print(a - b) # تفاضل━━━━━━━━━━━━━━━━━━
۱۲. نوع "dict"؛
user = {
"name": "Ali",
"age": 22,
"is_active": True
}دیکشنری دادهها را به شکل:
Key → Value
نگهداری میکند.
print(user["name"])
━━━━━━━━━━━━━━━━━━
۱۳. نوع "range"
برای نمایش یک دنبالهٔ عددی استفاده میشود.
numbers = range(5)
print(list(numbers))
به همین دلیل:
range(10_000_000)
از نظر حافظه بسیار بهینهتر از ساختن یک لیست بزرگ است.
━━━━━━━━━━━━━━━━━━
۱۴. نوع "NoneType" و مقدار "None"
"None" به معنای:
❌ صفر نیست.
❌ رشتهٔ خالی نیست.
❌ "False" نیست.
بلکه نشاندهندهٔ نبود مقدار یا عدم وجود نتیجه است.
result = None
بررسی صحیح:
if result is None:
print("No result")
نوع آن:
print(type(None))
خروجی:
<class 'NoneType'>
#Python #آموزش_پایتون #DataTypes #برنامه_نویسی
❤1
🐍 عملگرها (Operators) در پایتون
عملگرها نمادها یا کلماتی هستند که برای انجام عملیات روی دادهها استفاده میشوند؛ مثل جمع، مقایسه، انتساب و بررسی شرطها.
مثلاً:
اینجا "+" یک عملگر است.
---
1️⃣ عملگرهای حسابی (Arithmetic Operators)
برای انجام محاسبات ریاضی:
"+" جمع
"-" تفریق
"*" ضرب
"/" تقسیم اعشاری
"//" تقسیم صحیح
"%" باقیمانده
"**" توان
💡 نکته: عملگر "%" در تشخیص زوج و فرد بسیار کاربرد دارد.
---
2️⃣ عملگرهای انتساب (Assignment Operators)
برای مقداردهی و تغییر مقدار متغیر:
مثلاً:
---
3️⃣ عملگرهای مقایسهای (Comparison Operators)
نتیجه این عملگرها همیشه "True" یا "False" است.
"==" | برابر است
"!=" | نابرابر است
">" | کوچکتر
"<" | بزرگتر
">=" | کوچکتر یا مساوی
"<=" | بزرگ تر یا مساوی
مثال:
خروجی:
True
⚠️ تفاوت مهم:
= # انتساب
== # مقایسه
---
4️⃣ عملگرهای منطقی (Logical Operators)
برای ترکیب چند شرط:
"and" | هر دو شرط باید درست باشند
"or" | حداقل یکی درست باشد
"not" | نتیجه شرط را معکوس میکند
مثال:
---
5️⃣ عملگرهای عضویت (Membership)
برای بررسی وجود یک مقدار در یک مجموعه یا رشته:
خروجی:
True
True
مثال با لیست:
---
6️⃣ عملگرهای هویتی (Identity)
برای بررسی اینکه دو متغیر به یک شیء یکسان در حافظه اشاره میکنند یا نه:
📌 تفاوت:
"==" → مقایسه مقدار
"is" → مقایسه هویت شیء
---
7️⃣ عملگرهای بیتی (Bitwise)
برای کار روی بیتهای اعداد صحیح:
این عملگرها در مباحثی مثل سیستمهای کامپیوتری، شبکه، رمزنگاری و بهینهسازی کاربرد دارند.
ما عملگر های شیفت و مکمل ۲ رو هم داریم که جزو عملگر های بیتی هستن
البته شناخته شده تر ها و پر کاربرد تر ها همون and و or و xor هستن
---
🧠 جمعبندی
عملگرها پایهی تقریباً تمام منطقهای برنامهنویسی هستند.
اگر این بخش را خوب یاد بگیری، درک مباحث بعدی مثل:
✅ شرطها
✅ حلقهها
✅ توابع
✅ الگوریتمها
✅ کار با دادهها
خیلی راحتتر خواهد بود
#پایتون
#عملگر_ها
#python
عملگرها نمادها یا کلماتی هستند که برای انجام عملیات روی دادهها استفاده میشوند؛ مثل جمع، مقایسه، انتساب و بررسی شرطها.
مثلاً:
a = 10
b = 3
print(a + b)
اینجا "+" یک عملگر است.
---
1️⃣ عملگرهای حسابی (Arithmetic Operators)
برای انجام محاسبات ریاضی:
"+" جمع
"-" تفریق
"*" ضرب
"/" تقسیم اعشاری
"//" تقسیم صحیح
"%" باقیمانده
"**" توان
💡 نکته: عملگر "%" در تشخیص زوج و فرد بسیار کاربرد دارد.
number = 7
print(number % 2)
---
2️⃣ عملگرهای انتساب (Assignment Operators)
برای مقداردهی و تغییر مقدار متغیر:
x = 10
x += 5 # x = x + 5
x -= 2 # x = x - 2
x *= 3 # x = x * 3
x /= 2 # x = x / 2
مثلاً:
x = 10
x += 5
print(x) # 15
---
3️⃣ عملگرهای مقایسهای (Comparison Operators)
نتیجه این عملگرها همیشه "True" یا "False" است.
"==" | برابر است
"!=" | نابرابر است
">" | کوچکتر
"<" | بزرگتر
">=" | کوچکتر یا مساوی
"<=" | بزرگ تر یا مساوی
مثال:
age = 20
print(age >= 18)
خروجی:
True
⚠️ تفاوت مهم:
= # انتساب
== # مقایسه
---
4️⃣ عملگرهای منطقی (Logical Operators)
برای ترکیب چند شرط:
age = 20
has_card = True
print(age >= 18 and has_card)
"and" | هر دو شرط باید درست باشند
"or" | حداقل یکی درست باشد
"not" | نتیجه شرط را معکوس میکند
مثال:
temperature = 25
print(temperature > 0 and temperature < 40)
---
5️⃣ عملگرهای عضویت (Membership)
برای بررسی وجود یک مقدار در یک مجموعه یا رشته:
name = "Python"
print("Py" in name)
print("Java" not in name)
خروجی:
True
True
مثال با لیست:
numbers = [1, 2, 3, 4]
print(3 in numbers)
---
6️⃣ عملگرهای هویتی (Identity)
برای بررسی اینکه دو متغیر به یک شیء یکسان در حافظه اشاره میکنند یا نه:
a = [1, 2]
b = a
c = [1, 2]
print(a is b) # True
print(a is c) # False
📌 تفاوت:
"==" → مقایسه مقدار
"is" → مقایسه هویت شیء
---
7️⃣ عملگرهای بیتی (Bitwise)
برای کار روی بیتهای اعداد صحیح:
a = 5 # 101
b = 3 # 011
print(a & b) # 1
print(a | b) # 7
print(a ^ b) # 6
این عملگرها در مباحثی مثل سیستمهای کامپیوتری، شبکه، رمزنگاری و بهینهسازی کاربرد دارند.
ما عملگر های شیفت و مکمل ۲ رو هم داریم که جزو عملگر های بیتی هستن
البته شناخته شده تر ها و پر کاربرد تر ها همون and و or و xor هستن
---
🧠 جمعبندی
عملگرها پایهی تقریباً تمام منطقهای برنامهنویسی هستند.
اگر این بخش را خوب یاد بگیری، درک مباحث بعدی مثل:
✅ شرطها
✅ حلقهها
✅ توابع
✅ الگوریتمها
✅ کار با دادهها
خیلی راحتتر خواهد بود
#پایتون
#عملگر_ها
#python
❤2
🐍 توابع پرکاربرد پایتون که از همون اول باید بلد باشی!
اگر تازه پایتون رو شروع کردی، این چند تابع رو حتماً یاد بگیر؛ چون توی پروژههای مختلف بارها و بارها ازشون استفاده میکنی. 👨🏻💻
━━━━━━━━━━━━━━
🔹 print()
برای نمایش اطلاعات در خروجی:
خروجی:
━━━━━━━━━━━━━━
🔹 input()
برای دریافت اطلاعات از کاربر:
━━━━━━━━━━━━━━
🔹 type()
برای فهمیدن نوع یک داده:
خروجی:
━━━━━━━━━━━━━━
🔹 len()
برای بهدست آوردن تعداد اعضای یک لیست یا تعداد کاراکترهای یک رشته:
خروجی:
مثلاً برای لیست:
خروجی:
━━━━━━━━━━━━━━
🔹 int()
برای تبدیل مقدار به عدد صحیح:
یا یکی از کاربردهای خیلی رایجش:
━━━━━━━━━━━━━━
🔹 float()
برای تبدیل مقدار به عدد اعشاری:
━━━━━━━━━━━━━━
🔹 str()
برای تبدیل مقدار به رشته:
━━━━━━━━━━━━━━
🔹 max()
بزرگترین مقدار را پیدا میکند:
خروجی:
━━━━━━━━━━━━━━
🔹 min()
کوچکترین مقدار را پیدا میکند:
خروجی:
━━━━━━━━━━━━━━
🔹 sum()
مجموع اعداد یک لیست را حساب میکند:
خروجی:
━━━━━━━━━━━━━━
🔹 range()
برای ساختن یک بازه از اعداد، مخصوصاً در حلقهها:
خروجی:
━━━━━━━━━━━━━━
🔥 خلاصه توابعی که بهتره از همون اول بلد باشی:
📌 سعی کن برای هر کدوم چند مثال کوچیک بنویسی
#Python
#پایتون
#آموزش_پایتون
#برنامه_نویسی
اگر تازه پایتون رو شروع کردی، این چند تابع رو حتماً یاد بگیر؛ چون توی پروژههای مختلف بارها و بارها ازشون استفاده میکنی. 👨🏻💻
━━━━━━━━━━━━━━
🔹 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) محسوب میشود.
🔹 برای بررسی نوع داده:
خروجی:
<class 'str'>
━━━━━━━━━━━━━━━━━━
🔹 دسترسی به کاراکترهای رشته
هر کاراکتر یک شماره یا Index دارد که از "0" شروع میشود.
خروجی:
P
y
n
📌 اندیس منفی هم داریم:
خروجی:
n
━━━━━━━━━━━━━━━━━━
🔹 برش دادن رشته | Slicing
خروجی:
Pt
ساختار کلی:
text[start:end:step]
⚠️ اندیس "end" در برش حساب نمیشود.
✅ step
برای پرش بین کاراکتر ها استفاده میشود
━━━━━━━━━━━━━━━━━━
🔥 متدهای مهم String
1️⃣ "upper()"
تمام حروف را بزرگ میکند.
HELLO PYTHON
---
2️⃣ "lower()"
تمام حروف را کوچک میکند.
hello python
---
3️⃣ "capitalize()"
حرف اول متن را بزرگ میکند.
Python programming
---
4️⃣ "title()"
حرف اول هر کلمه را بزرگ میکند.
Python Programming Language
---
5️⃣ "strip()"
فاصلههای ابتدا و انتهای رشته را حذف میکند.
Python
دو متد مشابه:
text.lstrip() # حذف از سمت چپ
text.rstrip() # حذف از سمت راست
━━━━━━━━━━━━━━━━━━
6️⃣ "replace()"
یک قسمت از متن را با متن دیگری جایگزین میکند.
خروجی:
I love Python
---
7️⃣ "find()"
موقعیت شروع یک عبارت را پیدا میکند.
خروجی:
6
اگر عبارت پیدا نشود:
-1
---
8️⃣ "count()"
تعداد تکرار یک عبارت را مشخص میکند.
خروجی:
3
━━━━━━━━━━━━━━━━━━
9️⃣ "startswith()"
بررسی میکند متن با عبارت مشخصی شروع شده یا نه.
خروجی:
True
---
🔟 "endswith()"
بررسی میکند متن با عبارت مشخصی تمام شده یا نه.
خروجی:
True
━━━━━━━━━━━━━━━━━━
1️⃣1️⃣ "split()"
رشته را به چند بخش تقسیم میکند و نتیجه را به صورت "list" برمیگرداند.
print(languages)
خروجی:
['Python', 'Java', 'C++']
📌 یکی از پرکاربردترین متدهای String در پایتون است.
━━━━━━━━━━━━━━━━━━
1️⃣2️⃣ "join()"
برعکس "split()" عمل میکند و چند رشته را به هم متصل میکند.
خروجی:
Python-Java-C++
━━━━━━━━━━━━━━━━━━
🧠 نکته مهم
رشتهها در پایتون Immutable هستند.
یعنی بعد از ساخته شدن، نمیتوانیم مستقیماً یکی از کاراکترهای آن را تغییر دهیم.
❌ این کار خطا میدهد:
اما میتوانیم یک رشته جدید بسازیم:
خروجی:
Jython
━━━━━━━━━━━━━━━━━━
🎯 تمرین
برنامهای بنویسید که یک نام کامل از کاربر دریافت کند :
🔹 فاصلههای اضافی ابتدا و انتهای آن را حذف کند.
🔹 تمام حروف را کوچک کند.
🔹 تعداد حروف "a" را بشمارد.
🔹 بررسی کند آیا نام با ""ali"" شروع میشود یا خیر.
🔹 نام را با "-" از هم جدا کند.
#python
#پایتون
#رشته_ها
در پایتون، هر متنی که داخل "' '" یا "" "" قرار بگیرد، یک رشته (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 ارزیابی میشه؟ بعد از اون، هر بار تابع رو بدون دادن اون آرگومان فراخوانی کنیم، پارامتر به همان شیء قبلی اشاره میکنه و از نو ساخته نمیشه
مثال:
خروجی:
چون {} فقط یک بار در زمان تعریف تابع ساخته شده و همون دیکشنری بین فراخوانیها باقی میمونه
برای دیدن این موضوع میتونیم id رو چاپ کنیم:
هر سه عدد یکی هستن، چون هر بار همون شیء دیکشنری برگردونده میشه
حالا اگر میخوایم هر بار مقدارمون خالی و تازه باشه چیکار کنیم؟
راه درست اینکه مقدار پیشفرض رو None بذاریم و داخل تابع، در صورت None بودن، دیکشنری جدید بسازیم:
یا اگر لازم نیست دیکشنری از بیرون به تابع پاس داده بشه، اون رو داخل خود تابع بسازیم:
@comma_code
@comma_code
#کاما_کد #فانکشن #پایتون
#function #mutable #comma_code #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️⃣ روش اول: استفاده از عملگر %
این روش یکی از قدیمیترین روشهای قالببندی رشتهها در پایتون است.
📤 خروجی:
My name is Ali and I am 20 years old.
🔹
خروجی:
Price: 19.99
عبارت
━━━━━━━━━━━━━━━━━━
2️⃣ روش دوم: استفاده از متد format()
در این روش، از متد
📤 خروجی:
My name is Sara and I am 22 years old.
🔹 میتوانیم با استفاده از اندیس، ترتیب مقادیر را مشخص کنیم:
خروجی:
Ali is 25 years old.
🔹 همچنین میتوانیم نام متغیرها را مشخص کنیم:
خروجی:
Name: Reza, Age: 21
━━━━━━━━━━━━━━━━━━
3️⃣ روش سوم: استفاده از f-string
این روش از پایتون ۳.۶ به بعد معرفی شده و یکی از خواناترین و پرکاربردترین روشهای قالببندی رشتههاست.
کافی است قبل از علامت کوتیشن رشته، حرف
📤 خروجی:
My name is Ali and I am 20 years old.
🔹 مزیت مهم f-string این است که میتوانیم عبارتهای پایتونی را مستقیماً داخل
خروجی:
Sum: 15
Result: 50
🔹 حتی میتوانیم تعداد ارقام اعشاری را مشخص کنیم:
خروجی:
Price: 19.99
✅ نکته مهم: هر سه روش معتبر هستند؛ اما در کدهای جدید پایتون، معمولاً f-string به دلیل خوانایی و سادگی انتخاب مناسبی است.
━━━━━━━━━━━━━━━━━━
🧩 تمرین برای شما
دو متغیر زیر را در نظر بگیرید:
برنامهای بنویسید که با استفاده از هر سه روش بالا، جمله زیر را چاپ کند:
I am learning Python version 3.14
💬 پاسخ خود را در کامنتها بنویسید
#Python
#آموزش_پایتون
#برنامه_نویسی
#قالب_بندی
یکی از مباحث کاربردی در پایتون، قالببندی رشتهها (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 استفاده کرده.
راهحلش سادهست: قبل از مقایسه، نرمالسازی کن.
معمولاً 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