عرض مشاركة واحدة
قديم 01-03-2019, 09:44 AM   #1
تاريخ التسجيل: Feb 2019
الدولة: قلب ابي
العمر: 31
المشاركات: 1,006
التقييم: 10
تاريخ التسجيل: Feb 2019
الدولة: قلب ابي
العمر: 31
المشاركات: 1,006
التقييم: 10
افتراضي استخدام الدالة format ترقيم المدخلات حسب ترتيبها واستخدامها

تستطيع عند استخدام الدالة format ترقيم المدخلات حسب ترتيبها واستخدامها في تنسيق النص أكثر من مرة:

"{0} be nimble, {0} be quick, {0} jump over the {1}".format("Jack", "candle stick")
# => "Jack be nimble, Jack be quick, Jack jump over the candle stick"
أو باستخدام طريقة تسمية المدخلات:

"{name} wants to eat {food}".format(name="Bob", food="lasagna") # => "Bob wants to eat lasagna"
تستطيع في البايثون 3 استخدام الطريقة القديمة في بايثون 2 لعمل تنسيق للنصوص:

"%s can be %s the %s way" % ("Strings", "interpolated", "old") # => "Strings can be interpolated the old way"
None عبارة عن كائن:

None # => None
لا تستخدم فحص المساواة باستخدام رمز == للمقارنة مع None واستخدم عملية الفحص is بدلا منها:

"etc" is None # => False
None is None # => True
None والرقم 0 والمتغيرات الفارغة من الأنواع strings، lists، dict، وtuples جميعها تُرادف القيمة المنطقية False، أما باقي القيم فهي True:

# All other values are True
bool(0) # => False
bool("") # => False
bool([]) # => False
bool({}) # => False
bool(()) # => False
المتغيرات والتراكيب:
تتوفّردالة خاصة للطباعة (الإخراج على الطرفية) وتسمى print:

print("I'm Python. Nice to meet you!") # => I'm Python. Nice to meet you!
يُطبَع سطر جديد تلقائيا عند استخدام الدالة print. تستطيع استخدام المعطى end لتغيير هذا الأمر وتحديد النص الذي تريده بدلا من السطر الجديد:

print("Hello, World", end="!") # => Hello, World!
للحصول على مدخلات من الطرفية نستخدم الدالة input:

input_string_var = input("Enter some data: ") # Returns the data as a string
ملاحظة/ في النسخ القديمة من البايثون، كانت الدالة input باسم raw_input.

لا يوجد في البايثون تعريفات، ولكن يوجد إعطاء قيم مباشرة. الطريقة المتعارف عليها في تسمية المتغيرات هي الأحرف الصغيرة مع التسطير السفلي:

some_var = 5
some_var # => 5
محاولة استخدام متغير لم يأخذ قيمة مسبقاً ينتج عنه خطأ، راجع كيفية معالجة الأخطاء تحت عنوان جمل التحكم.

some_unknown_var # ينتُج خطأ من الصنف NameError
تشبه القوائم المصفوفات في اللغات الأخرى:

li = []
other_li = [4, 5, 6]
نستخدم append لإضافة عناصر في نهاية القائمة:

li.append(1) # li is now [1]
li.append(2) # li is now [1, 2]
li.append(4) # li is now [1, 2, 4]
li.append(3) # li is now [1, 2, 4, 3]
نستخدم الدالةpop لحذف العناصر من آخر القائمة. ترجع التعليمة أدناه القيمة 3 وتصبح مكونات القائمة [1, 2, 4]:

li.pop() # => 3 and li is now [1, 2, 4]
تعود القائمة إلى حالتها السابقة لتنفيذ الدالة pop بعد تنفيذ الدالة append على النحو التالي:

li.append(3) # li is now [1, 2, 4, 3] again.
تستطيع التعامل مع القائمة مثل المصفوفة من حيث الوصول لعناصرها:

li[0] # => 1
li[-1] # => 3
في حال استخدام فهرس خارج حدود القائمة سينتج خطأ من نوع IndexError:

li[4] # Raises an IndexError
تستطيع استخدام مجال للحصول على جزء أكبر من القائمة بحيث نحدد فهرس البداية وفهرس النهاية.

li[1:3] # => [2, 4]
ملاحظة: فهرس النهاية غير مشمول في القيمة المرجعة، حيث يعدّ النمط المستخدم هو نمط نطاق مغلق-مفتوح.

في حال عدم استخدام فهرس النهاية:

li[2:] # => [4, 3]
في حال عدم استخدام فهرس البداية:

li[:3] # => [1, 2, 4]
اختيار عنصر كل خطوتين ابتداء من العنصر الأول في القائمة:

li[::2] # =>[1, 4]
إرجاع كامل المصفوفة بطريقة عكسية:

li[::-1] # => [3, 4, 2, 1]
القاعدة العامة للاستعلامات السابقة في القوائم هي كالتالي(البداية start، النهاية end والخطوة step):

# li[start:end:step]
نسخ عميق (Deep Copy):

li2 = li[:] # => li2 = [1, 2, 4, 3]
عندما نفحص المساواة باستخدام عملية is كالتالي: (li2 is li) ستكون النتيجة False.

لحذف عنصر من القائمة:

del li[2] # li is now [1, 2, 3]
لحذف أول عنصر في القائمة يساوي القيمة المدخلة في الدالة remove:

li.remove(2) # li is now [1, 3]
li.remove(2) # ValueError لأن القيمة غير موجودة
إضافة عنصر في مكان معين في القائمة:

li.insert(1, 2) # li is now [1, 2, 3] again
الحصول على فهرس أول عنصر في القائمة يساوي القيمة المعطاة:

li.index(2) # => 1
li.index(4) # ValueError لأن القيمة غير موجودة
لإضافة قائمة لقائمة وإرجاع النتيجة كقائمة جديدة:

li + other_li # => [1, 2, 3, 4, 5, 6]
لتمديد قائمة وإضافة قائمة إليها:

li.extend(other_li) # Now li is [1, 2, 3, 4, 5, 6]
لفحص وجود قيمة في القائمة:

1 in li # => True
للحصول على حجم القائمة (عدد العناصر التي بها):

len(li) # => 6
نوع البيانات Tuple تشبه القائمة ولكنها غير قابلة للتعديل (ثابتة-immutable):

tup = (1, 2, 3)
tup[0] # => 1
tup[0] = 3 # Raises a TypeError
لاحظ أنه في حالة وجود عنصر واحد في tuple لابد من وضع فاصلة عادية بعد العنصر، أما في حالة وجود أكثر من عنصر فتصبح الفاصلة إضافية:

type((1)) # => <class 'int'>
type((1,)) # => <class 'tuple'>
type(()) # => <class 'tuple'>
تستطيع تنفيذ أغلب عمليات القوائم على النوع Tuple:

len(tup) # => 3
tup + (4, 5, 6) # => (1, 2, 3, 4, 5, 6)
tup[:2] # => (1, 2)
2 in tup # => True
تستطيع تفريغ (unpacking) محتويات Tuples وكذلك القوائم في متغيرات كما في الأمثلة التالية:

a, b, c = (1, 2, 3) # a = 1, b = 2, c = 3
a, *b, c = (1, 2, 3, 4) # a = 1, b = [2, 3], c = 4
عند عدم استخدام الأقواس فإن نوع البيانات التلقائي الذي سيتم استخدامه هو Tuple:

d, e, f = 4, 5, 6
تبديل قيم المتغيرات بطريقة سهلة:

e, d = d, e # d = 5, e = 4

مهرة النجدية غير متواجد حالياً   اقتباس