ملخصات بايثون
المقتطفات التي ستلجأ إليها في كل درس. الكود أعلاه يعمل في الخلايا؛ هذه هي الأنماط الجاهزة للنسخ.
-
المتغيرات
-
الإسناد والقراءة
x = 5 x = x + 1 # 6 print(x) # 6علامة = تحفظ قيمة تحت اسمٍ ما. إعادة الإسناد تعيد ربط الاسم بالقيمة الجديدة فحسب.
-
قواعد التسمية
score = 10 # snake_case ✅ age_2 = 3 # digits ok after first char age 2 = 3 # ❌ space & leading digit Score = 10 # works, but remember: case-sensitiveالأسماء حسّاسة لحالة الأحرف. استخدم snake_case وأسماءً وصفية وتجنّب الكلمات المدمجة مثل print.
-
التبديل والتفكيك
a, b = 1, 2 a, b = b, a # swap in one line first, *rest = [1, 2, 3] # first=1, rest=[2, 3]تسنِد Python عدة أسماء دفعة واحدة — وهذا أسلوب التبديل الأفضل على الإطلاق.
-
-
الإخراج
-
print
print('Hello, world!') print(2 + 3) # 5, values print automaticallyالدالة الوحيدة التي ستستخدمها في كل درس على الإطلاق.
-
بدون فاصلة زائدة
print('a', 'b', sep='-') # a-bتتحكم sep في الفاصل؛ والافتراضي هو مسافة.
-
-
الإدخال
-
قراءة المطالَب
name = input('Your name: ') print('Hi', name)تتوقف input() وتنتظر؛ وهي تُرجع نصًّا دائمًا.
-
تحويل الناتج
age = int(input('Age: ')) price = float(input('Price: '))حوّل عند القراءة باستخدام int()/float()، وإلا فستفشل كل خطوة حسابية لاحقة.
-
-
الأرقام
-
العمليات الحسابية الأساسية
x = 7 x // 2 # 3 integer division x % 2 # 1 remainder x ** 2 # 49 exponent// و % شريكان في القسمة — تجيبان عن «كم مرة» و«كم يتبقى».
-
type()
type(3) # <class 'int'> type(3.0) # <class 'float'> type("3") # <class 'str'>افحص نوع أي قيمة عندما تذكر رسالة الخطأ عدم تطابق في الأنواع.
-
التحويل
int('42') # 42 float('4.2') str(42) # '42'تُرجع input() دائمًا نصًّا — حوّل قبل إجراء أي عملية حسابية.
-
-
النصوص
-
f-string (تنسيق النصوص)
name = 'PyDA' print(f'{name} → {len(name)} letters')الحرف f قبل علامة الاقتباس يجعل {…} تُدخِل القيم. استخدم هذا بدل الدمج بالـ +.
-
الأساليب (Methods)
' hi '.strip() # 'hi' 'hello'.upper() # 'HELLO' 'a,b'.split(',') # ['a', 'b']الأساليب تُرجع نصًّا جديدًا — فالنصوص (السلاسل) غير قابلة للتعديل.
-
التقطيع
word = 'python' word[0] # 'p' word[-1] # 'n' word[1:4] # 'yth'البداية شاملة والنهاية مستبعدة. المؤشرات السالبة تُعدّ من النهاية.
-
الدمج والتكرار والبحث
'py' + 'thon' # 'python' 'ha' * 3 # 'hahaha' 'py' in 'python' # True len('abc') # 3+ تلصق النصوص، و* يكرّرها، و in يفحص نصًّا فرعيًّا، و len() تعدّ الأحرف.
-
الهروب بالشرطة المائلة الخلفية
print('she\'s fine') # she's fine print('line1\nline2') # two lines print('tab\there') # tab here\' علامة اقتباس، و\n سطر جديد، و\t تبويب. استخدم النصوص الخام r"…" عندما يحتوي المسار على شرطات مائلة كثيرة.
-
-
القوائم
-
الإنشاء والإضافة
nums = [1, 2, 3] nums.append(4) # [1, 2, 3, 4] nums + [5] # [1, 2, 3, 4, 5]append تعدّل القائمة في موضعها؛ بينما + تنشئ قائمة جديدة.
-
القراءة
nums[0] # 1 len(nums) # 4 nums[-1] # 4 3 in nums # Truein و not in هما معاملا فحص العضوية.
-
التكرار
for n in nums: print(n * 2)حلقة for تمرّ على كل عنصر واحدًا تلو الآخر.
-
الترتيب والنسخ
nums.sort() # in place sorted(nums) # NEW sorted list copy = nums[:] # real copy, not the same listsort() تعدّل القائمة وتُعيد None؛ بينما sorted() تُعيد قائمة جديدة. استخدم nums[:] للعمل على نسخة.
-
حيل التقطيع
nums = [0, 1, 2, 3, 4] nums[1:] # [1, 2, 3, 4] drop the head nums[:-1] # [0, 1, 2, 3] drop the tail nums[::-1] # [4, 3, 2, 1, 0] reversedصيغة [start:end:step] هي جراحة القوائم — حذف ونسخ وعكس في سطر واحد.
-
-
الصفوف والمجموعات
-
الصفوف (Tuples)
t = (1, 2, 3) t[0] # 1 x, y = t # unpack # t[0] = 9 # ❌ tuples can't changeقائمة ثابتة — استخدمها عندما يجب ألا يتغيّر الشكل: الإحداثيات، أزواج الإعدادات، البيانات للقراءة فقط.
-
المجموعات (Sets)
s = {1, 2, 2, 3} # {1, 2, 3} — duplicates dropped s.add(4) 4 in s # True s.remove(4)كيس غير مرتب من العناصر الفريدة — مثالي لإزالة التكرار وفحص العضوية السريع.
-
عمليات المجموعات
a = {1, 2, 3} b = {3, 4} a | b # {1, 2, 3, 4} union a & b # {3} intersection a - b # {1, 2} difference a ^ b # {1, 2, 4} symmetric| و& و- و^ تحوّل المجموعات إلى حساب في سطر واحد — قارن مجموعات دون حلقات متداخلة.
-
أي حاوية تختار؟
list # ordered, editable, keeps order tuple # ordered, read-only set # unordered, unique, fast in dict # key → value lookupاختر حسب ما تحتاجه الشيفرة: الترتيب، أو التفرد، أو إيجاد الأشياء بالاسم.
-
-
القواميس
-
الإنشاء والقراءة
ages = {'ada': 36, 'bob': 41} ages['ada'] # 36 ages.get('zoe') # None (safe "missing") ages.get('zoe', 0) # 0 (with default)استخدام [key] مع مفتاح مفقود يرفع KeyError — فضّل .get() عندما لا تكون متأكدًا.
-
الكتابة
ages['ada'] = 37 ages['zoe'] = 22 del ages['bob']الإسناد يضيف أو يحدّث؛ بينما del يزيل مفتاحًا.
-
التكرار
for k, v in ages.items(): print(k, v).items() تعطي أزواج (مفتاح، قيمة)؛ بينما يعطي .keys() و .values() جانبًا واحدًا فقط.
-
-
الشروط
-
if / elif / else
if score >= 90: print("A") elif score >= 80: print("B") else: print("C")elif يتوقف بمجرد تحقق أحد الشروط — الترتيب مهم.
-
المقارنات
== != < <= > >=== يفحص التساوي؛ بينما = يسند. تذكّر هذا ليصلّح معظم أخطاء «لماذا هو True» لدى المبتدئين.
-
العوامل المنطقية
a and b # both truthy a or b # at least one a and not band / or / not — كلمات عادية، وليست && و ! كما في اللغات الأخرى.
-
الصدق (Truthiness)
if x: # 'is x non-empty?' print(x) # Falsy: 0, 0.0, '', [], {}, None # Everything else is truthy«if x:» هي الفحص الاصطلاحي «هل يوجد x؟» — الحاويات الفارغة و0 تفشل، وكل ما عدا ذلك ينجح.
-
الشرط الثلاثي في سطر واحد
'pass' if score >= 50 else 'fail'if/else مختصر يُرجع قيمة — رائع داخل f-strings والـ print().
-
-
الحلقات التكرارية
-
range
for i in range(3): # 0, 1, 2 print(i) for i in range(1, 4): # 1, 2, 3 print(i)range يتوقف قبل الرقم الثاني — نفس قاعدة استبعاد النهاية كما في التقطيع.
-
enumerate / zip
for i, item in enumerate(['a','b']): print(i, item) for x, y in zip([1,2],[3,4]): print(x, y)enumerate يضيف عدّادًا؛ بينما zip يزاوج تسلسلَين عنصرًا بعنصر.
-
break / continue
for n in range(10): if n == 3: break # stop the loop for n in range(10): if n % 2: continue # skip this one print(n)break يخرج من الحلقة كليًا؛ بينما continue يقفز إلى التكرار التالي.
-
while
n = 3 while n > 0: print(n) n -= 1 # don't forget: while needs progresswhile تتكرر حتى يصبح شرطها False — حلقة لا تحدّث شرطها لن تنتهي أبدًا.
-
else مع الحلقة (اختياري)
for n in nums: if n == target: break else: print("not found")كتلة else تعمل فقط إذا انتهت الحلقة دون break — علمٌ مدمجٌ «هل وُجد؟».
-
-
الدوال
-
التعريف والاستدعاء
def double(x): return x * 2 y = double(21) # 42نص def… يجب أن يكون مُزاحًا بمسافة بادئة. return تُعيد قيمة؛ وبدونه تحصل على None.
-
القيم الافتراضية والوسائط المفتاحية
def greet(name, exclaim=True): s = f"Hello {name}" return s + ("!" if exclaim else "") greet("ada") # Hello ada! greet("ada", False) # Hello adaالمعلمات التي لها = تحصل على قيم افتراضية؛ ويمكن للمتصل تمريرها بالاسم (keyword).
-
إرجاع قيم متعددة
def minmax(nums): return min(nums), max(nums) lo, hi = minmax([3, 1, 4]) # lo=1, hi=4يمكن للدالة أن تُرجع صفًّا (tuple) ويفككه المتصل في عدة أسماء دفعة واحدة.
-
النطاق وprint مقابل return
x = 10 # global def show(y): x = 5 # local — different x! print(x, y) # side effect, returns None result = show(1) # result is Noneprint يعرض القيمة في الطرفية؛ أما return فتُرجِعها فعلًا. الإسناد داخل دالة يُظلّل المتغير العام.
-
لامدا (الصيغ القصيرة)
double = lambda x: x * 2 sorted(nums, key=lambda n: -n)استخدم lambdas للدوال المؤقتة المكوَّنة من سطر واحد وتُمرَّر إلى sort/max/map.
-
-
الاستيعاب
-
قائمة
[n * 2 for n in nums] # [2, 4, 6] [n for n in nums if n > 1] # [2, 3] {n * 2 for n in nums} # setحلقة for داخل أقواس مربعة — الأسلوب الاصطلاحي لتحويل قائمة.
-
قاموس
{n: n ** 2 for n in range(4)} # {0: 0, 1: 1, 2: 4, 3: 9}نفس الشكل، مع نقطتين بين المفتاح والقيمة.
-
-
الملفات وCSV
-
قراءة ملف
text = open("file.txt").read() lines = text.splitlines()أسهل طريقة للقراءة؛ استخدم with open(...) as f عندما تحتاج القراءة بالتدرج (streaming).
-
صفوف CSV
import csv with open('data.csv') as f: rows = list(csv.reader(f))rows[0] هو الترويسة (header)؛ وكل صف لاحق هو قائمة نصوص — حوّلها إلى أرقام قبل أي حساب.
-
-
pandas (تحليل البيانات)
-
التحميل والنظرة الأولى
import pandas as pd df = pd.read_csv('data.csv') df.head() # first 5 rows df.describe() # numeric summaryالصيغة القياسية — pd.read_csv هي طريقة بدء كل درس بيانات.
-
الأعمدة والصفوف
df['name'] # one column df[['a', 'b']] # several df.loc[0] # first row df[df['age'] > 30] # filter rowsأقواس مربعة على اسم العمود؛ وأقنعة منطقية (boolean masks) للفلترة.
-
التجميع والإجمال
df.groupby('city')['sales'].sum() df.groupby('city').mean()groupby + طريقة تلخيص واحدة هي محور قسم تحليل البيانات.
-
-
معالجة الأخطاء
-
اقرأ السطر الأخير
TypeError: unsupported operand type(s) for +: 'int' and 'str'السطر الأخير يسمّي الخطأ والقيم المخالفة — إنها الرسالة التي تخبرك بماذا تُصلح.
-
try / except
try: total = int(user_input) * 2 except ValueError: print('That was not a number')التقط فقط الخطأ المحدد الذي تتوقعه؛ فالتقاط كل شيء يخفي أخطاءً حقيقية.
-