أنواع الأخطاء في بايثون

في بايثون يوجد نوعان من الاخطاء: أخطاء في بناء الجملة (Syntax errors) و الاستثناءات (Exceptions) وما سنقوم به في هذه التدوينة هو شرح هاذين الخطأين و في المرة القادمة سنقوم بتعلم كيفية التعامل معهم.

أخطاء في بناء الجملة (Syntax errors)

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


 

>>> while True
  File "", line 1, in ?
    while True 
             ^
SyntaxError: invalid syntax

في المثال السابق نلاحظ أن السهم الصغير يتواجد تحت الحرف e الخاص True حيث أن المشكلة بدأت مباشرة بعد الحرف e وطبعا في مثالنا هذا الخطأ بسبب عدم وجود النقطتين : بعد حلقة while

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


الاستثناءات Exceptions

النوع الأخر من الأخطاء في بايثون هو الاستثناءات .
أحيانا وحتى في حالة عدم وجود أي أخطاء نحوية في الأسطر البرمجية قد يعرض لك بايثون أخطاء أخرى عند محاولة تنفيذ كود لا يستطيع بايثون التعامل معه، حيث نقوم بتسمية جميع الأخطاء المكتشفة عند عملية تنفيذ الكود بالاستثناءات وهي عدة أنواع ويتم عرض نوعها في رسالة الخطأ.

مثال عن أخطاء الاستثناءات
 

>>> 10 * (1/0)#لا يمكن القسمة على 0
Traceback (most recent call last):
  File "", line 1, in ?
ZeroDivisionError: integer division or modulo by zero
>>> 4 + spam*3# لا يمكن جمع عدد مع قيمة غير معرفة
Traceback (most recent call last):
  File "", line 1, in ?
NameError: name 'spam' is not defined
>>> '2' + 2# لا يمكن جمع عدد مع حروف
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects

كانت هذه تدوينة بسيطة قمنا بتعريف أنواع الاخطاء الموجودة في بايثون وفي المرة القادمة سنتعلم كيفية التعامل مع هذه الأخطاء.

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

تعرف على عنوان IP الخاص بك مع بايثون

أقدم لكم سكريبت بسيط يمكنكم من خلاله التعرف على عنوان IP الخاص بك .
أولا عليك ب استدعاء وحدة urllib و re
كما سنقوم باستخدام موقع checkip.dyndns.org

import urllib
import re

url = "http://checkip.dyndns.org"

request = urllib.urlopen(url).read()

theIP = re.findall(r"d{1,3}.d{1,3}.d{1,3}.d{1,3}", request)

print "your IP Address is: ",  theIP
أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

قواميس بايثون

في هذا الدرس سنكلم عن قواميس بايثون في مزيد من التفاصيل .
قواميس بايثون تحتوي على مفاتيح وقيمها وهي قابلة للتغيير أو التبديل ويمكن أن تحتوي على عدة أنواع من البيانات ، ويتم تسمية القواميس في لغات البرمجة الأخري بالمصفوفات .
المفاتيح في القواميس يجب أن تكون كائنات ثابتة مثل السلاسل أو الأرقام كما لا يجب أن تتكرر المفاتيح في نفس القاموس .

 
إنشاءالقاموس

weekend = { "Fri": "Friday", "Sat": "Saturday" }
vals = dict(one=1, two=2)
capitals = {}
capitals["Algeria"] = "Alger"
capitals["Morocco"] = "ٌRabat"
capitals["Tunisia"] = "Tunisia"


print weekend
print vals
print capitals

في المثال السابق قمنا بإنشاء ثلاثة قواميس بثلاثة طرق مختلفة ثم قمنا بعرض محتويات تلك القواميس باستخدام الدالة print
 

weekend = { "Fri": "Friday", "Sat": "Saturday" }

في هذا المثال قمنا بإنشاء قاموس خاص بنهاية الأسبوع بطريقة التدوين الحرفي حيث يتم كتابة كل محتويات القاموس المفتاح والقيمة داخل القوسين {}ويتم كتابة المفاتيح والقيم بين العلامة ” “
ويم الفصل بينهما ب النقطتين : حيث Fri هي المفتاح و Friday هي القيمة .

vals = dict(one=1, two=2)

في المثال الثاني قمنا بإنشاء القاموس باستخدام الدالة dict()

capitals = {}
capitals["Algeria"] = "Alger"
capitals["Morocco"] = "ٌRabat"
capitals["Tunisia"] = "Tunisia"

في هذا المثال قمنا بإنشاء قاموس فارغ ثم بدانا بإضافة ثلاثة أزواج إلى القاموس حيث يتواجد المفتاح بين العلامتين [] والقيمة تتواجد على يمين علامة التعيين =.

العمليات الأساسية

في المثال التالي سنقوم بعرض بعض العمليات الأساسية المتعلقة بالقواميس على بايثون.
basket = { 'oranges': 12, 'pears': 5, 'apples': 4 }

basket['bananas'] = 5

print basket
print "There are %d various items in the basket" % len(basket)

print basket['apples']
basket['apples'] = 8
print basket['apples']

لدينا سلة تحتوي على فواكه مختلفة  وسنقوم بأجراء بعض العمليات على هذا القاموس .

basket = { 'oranges': 12, 'pears': 5, 'apples': 4 }

حسنا قاموس السلة تم إنشاءه ويحتوي على ثلاثة مفاتيح بقيمها.
 

basket['bananas'] = 5

قمنا بإضافة مفتاح وقيمة أخرى إلى القاموس حيث bananas مفتاح و 5 قيمة المفتاح .
 

print "There are %d various items in the basket" % len(basket)

الدالة len ستعطينا عدد المفاتيح الموجودة على القاموس.
 

print basket['apples']

عرض قيمة المفتاح apples.

basket['apples'] = 8

قمنا بتغيير قيمة المفتاح appels لتصبح 8.

المفاتيح والقيم

لكي نقوم بعرض مفاتيح أو قيم قاموس ما نقوم بعمل مايلي:
domains = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
    "us": "United States", "no": "Norway"  }

print domains.keys()# عرض جميع مفاتيح القاموس فقط
print domains.values()# عرض جميع قيم القاموس فقط  
print domains.items()#عرض جميع مفاتيح وقيم القاموس

انتـــــــــــهى.

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

المفاتيح والقيم في قواميس بايثون

مثال بسيط عن كيفية استخدام المفاتيح والقيم في قواميس بايثون.

>>> data = {'x': 1, 'y': 2, 'z': 3}

>>> for d in data.items():
... print d
...
('y', 2)
('x', 1)
('z', 3)

>>> for k, v in data.items():
... print k, v
...
y 2
x 1
z 3

>>> data.keys()
['y', 'x', 'z']

>>> data.values()
[2, 1, 3]

>>> data.items()
[('y', 2), ('x', 1), ('z', 3)]

>>> dict(data.items())
{'y': 2, 'x': 1, 'z': 3}

>>> for d in data.items():
... print list(d)
...
['y', 2]
['x', 1]
['z', 3]

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

الحصول على اسم السيرفر المحلي باستخدام بايثون

للحصول على اسم السيرفر المحلي باستخدام لغة بايثون نقوم باستخدام الدالة socket.gethostname() .

import socket
socket.gethostname()

وستكون النتيجة:

localhost

هناك طريقة أخرى للحصول على اسم السيرفر المحلي باستخدام platform.node()

 

import platform
platform.node()

وستكون النتيجة بطبيعة الحال Localhost

كان هذا درس على السريع حتى نتعلم ونعتاد التعامل مع دوال مكتبة المقبس في بايثون.

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع