اذهب إلى المحتوى

هشام رزق الله

الأعضاء
  • المساهمات

    1442
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    31

كل منشورات العضو هشام رزق الله

  1. يوجد في بايثون العديد من الطرق لفعل ذلك فيمكنك على سبيل المثال استخدام دالة node من مكتبة platform كما في المثال التالي: >>> import platform >>> platform.node() أو يمكنك استخدام دالة gethostname من مكتبة socket كما في المثال التالي: >>> import socket >>> socket.gethostname() ويمكنك أيضا استخدام environ بعد تمرير COMPUTERNAME من وحدة os كالتالي: >>> import os >>> os.environ['COMPUTERNAME']
  2. إذا كنت تستخدم الإصدار الثاني من بايثون، افتح الملف باستخدام وضع 'wb' بدلا من 'w'، لأن دالة csv.writer تكتب \r\n إلى الملف بشكل مباشر وإذا لم تفتح الملف بوضع الثنائي (binary) فستكتب \r\r\n وذلك بسبب أن في وضع النصي لويندوز سيترجم كل \n إلى \r\n. with open('file.csv', 'wb') as outfile: writer = csv.writer(outfile) أما في بايثون 3 فيجب عليك إضافة معامل جديد وهو newline='' بدلا من الطريقة السابقة كما في المثال التالي: with open('thefile.csv', 'w', newline='') as outfile: writer = csv.writer(outfile)
  3. إن الرقمين 0 و1 هما رقمي الخروج حيث أن تمرير الرقم 0 لدالة exit() معناه أنه سيتم الخروج بدون أية مشاكل أو أخطاء في حين أن تمرير الرقم 1 يعني أن هنالك أخطاء أو مشاكل وهذا هو سبب خروج البرنامج أي أن الخروج ليس طبيعيا.
  4. يوجد في بايثون الكثير من الطرق لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة rstrip مرتين وتمرير 0 في المرة الأولى و . في المرة الثانية كما في المثال التالي لتحويل العدد: ('%f' % x).rstrip('0').rstrip('.') أو يمكنك استخدام طريقة %g لفعل ذلك كما في المثال التالي: '%g'%(3.140000) أما بالنسبة للإصدار 2.6 من بايثون فيمكنك استعمال هذه الطريقة: '{0:g}'.format(3.140000)
  5. يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثل الحصول على أسماء الملفات من خلال استخدام دوال مكتبة glob ومن ثم فرز النتائج باستخدام دالة sort() بالاعتماد على ترتيب دالة getmtime من وحدة os.path كما في المثال التالي: import glob import os search_dir = "/tosearch/" files = filter(os.path.isfile, glob.glob(search_dir + "*")) files.sort(key=lambda x: os.path.getmtime(x)) أو يمكنك على سبيل المثال فعل ذلك باستخدام دوال مكتبة os فقط كما في المثال التالي: import os The_Dir = "/tosearch/" os.chdir(The_Dir) files = filter(os.path.isfile, os.listdir(The_Dir)) files = [os.path.join(The_Dir, f) for f in files] files.sort(key=lambda x: os.path.getmtime(x))
  6. حدثت هذه المشكلة لصديق لي كان مثبت إصدار 2.7 من بايثون وأراد تثبيت الإصدار الثالث من بايثون فبعد عملية التثبيت وتشغيل بايثون يظهر له الخطأ السابق وسبب المشكلة متعلق بتثبيتات pip لذلك لحلها أنصحك بعدم اختبار pip أثناء التثبيت كما في الصورة التالية:
  7. يوجد عدة طرق لفعل ذلك في ريلز كاستخدام تابع to_s مع تمرير :db حتى يتم التحويل بطريقة مناسبة لقواعد البيانات كما في المثال التالي: Time.now.to_s(:db) يجب عليك الانتباه من المناطق الزمنية المخصصة في ريلز لأن الوقت سيتم تخزينه كـ UTC في قاعدة البيانات، لذلك تحتاج إلى تحديد ذلك للقيام بالمقارنات بطريقة صحيحة: Time.now.utc.to_s(:db)
  8. يوجد عدة طرق لفعل ذلك في بايثون مثل استخدام دوال open و read لفتح ملف الصورة وقراءته ومن ثم دالة encode لتشفير السلسلة النصية التي تحتوي على الصورة كما في المثال التالي: with open("Cool.png", "rb") as f: data = f.read() print data.encode("base64") وإذا لم تعمل الطريقة السابقة فجرب استخدام دوال مكتبة base64 كما في المثال التالي: import base64 with open("img.png", "rb") as image_file: encoded_string = base64.b64encode(image_file.read())
  9. يوجد في بايثون العديد من الطرق لمعرفة ذلك كاستخدام try except عن طريق تجربة تحويل السلسلة النصية إلى عدد حقيقي فإذا تحوّل فهذا يعني أنه يمكنك تحويله وإذا أصدر خطأ من نوع ValueError فلا يمكنك ذلك كما في المثال التالي: try: float(test) except ValueError: print "Not float" ويمكنك أيضا استخدام طريقة التعابير النصية لفعل نفس الشيء كما في المثال التالي: import re if re.match("^\d+?\.\d+?$", test) is None: print "Not float"
  10. يوجد عدة طرق في لينكس لفعل ذلك، فيمكنك على سبيل المثال استخدام حلقة التكرار for مع مع الأمر sleep، حيث سنقوم بالتكرار حسب حاجتنا ومن ثم نضع الأمر الذي نريد تنفيذه وفي النهاية نضع الأمر sleep مع عدد الثواني التي نريدها كما في المثال التالي: # for i in {1..10}; do echo -n "Hello World! " ; sleep 5; done ويمكنك فعل نفس الشيء باستخدام حلقة التكرار while حيث قمنا في مثالنا هذا بالتكرار إلى ما لا نهاية كما في المثال التالي: # while true; do echo -n "Hello World! "; sleep 5; done
  11. يشير هذا المصطلح RubyGems إلى مدير حزم لغة روبي والتي توفر صياغة قياسية لتوزيع البرامج والمكتبات، فهذه الأداة صممت لتسهيل إدارة تثبيتات gem وتوزيعهم عن طريق الخادم. يمكنك استخدام أوامر gem لبناء ورفع وتثبيت وتنزيل حزم gem وتُستخدم لطريقة مشابه لمديري الحزمة في أنظمة لينكس مثل apt-get و portage و yum وغيرها...
  12. يوجد عدة طرق في لغة بايثون لفعل ذلك لعل أسهلها استخدام دالة min لإيجاد العنصر الذي يملك اقل مسافة بينه وبين القيمة التي نريدها وذلك باستعمال lambda ودالة abs في داخل دالة min كما في المثال التالي: >>> min(TheList, key=lambda x:abs(x-myNumber)) 4 ملاحظة: يعمل هذا المثال أيضا على القواميس التي تملك أعداد صحيحة كمفاتيح.
  13. في بايثون، لا يوجد معنى لمعامل الجمع + مع sets ، فهو غير موجود أصلا، ويمكنك استخدام معامل | للتعبير عن الاتحاد والمعامل & للتعبير على التقاطع. ويمكنك كما أشرت استخدام المعامل – للتعبير عن الفرق. كما توجد معاملات أخرى يمكنك استخدامها مثل المعامل ^ الذي سيُرجع set جديدة تحتوي على العناصر التي تظهر في واحدة من set لكنها لا تظهر في الإثنين معا.
  14. يوجد عدة طرق لفعل ذلك في بايثون، وأفضل طريقة كما ذكرتها أنت هي طريقة استخدام الخيوط حيث سنقوم بإنشاء دالة تحتوي على الشيفرة البرمجية التي تريد تنفيذها كل مدة معينة ومن ثم نستدعيها بعد أن نضع فيها سطر لنجعلها خيط يتكرر كل مدة معينة من الثواني وذلك عن طريق استخدام دالة Timer من مكتبة threading كما في المثال التالي: import threading def printtest(): threading.Timer(5.0, printit).start() print "Test Every 5 Seconds!" printtest() # بقية الشيفرة البرمجية الموازية …
  15. يوجد عدة طرق في بايثون لفعل ذلك فيمكنك على سبيل المثال إنشاء قائمتين جديدتين تحتوي الأولى على الجزء من بداية القائمة إلى منتصفها والثانية تحتوي على الجزء من منتصف إلى النهاية ويمكنك تحديد منتصف القائمة عن طرق استخدام دالة len لتحديد طول القائمة ومن ثم قسمته على 2 كما في المثال التالي: list1 = [1,2,3,4,5,6] list2 = list1[:len(list1)/2] list3 = list1[len(list1)/2:]
  16. توجد عدة طرق لفعل ذلك في بايثون، والطريقة الرسمية هي استخدام متغير بيئة PYTHONSTARTUP، إذ يكفي أن تنشئ سكربت بايثون جديد ومن ثم تكتب فيه تعليمات الاستدعاء للوحدات التي تريدها وفي النهاية تؤشر متغير البيئة إلى هذا السكربت. للمزيد من المعلومات حول هذا المتغير: التوثيق الرسمي.
  17. يمكنك فعل ذلك في روبي بسهولة وبطرق متعددة، أسهلها إضافة مصفوفتين باستخدام معامل الجمع + وذلك بإنشاء مصفوفة من العناصر التي تريد إضافتها إلى المصفوفة الأولى. سترجع لك هذه الطريقة مصفوفة جديدة دون تغيير المصفوفة الأولى كما في المثال التالي: ar = [1, 2] puts ar + [3, 4] # => [1, 2, 3, 4] puts ar # => [1, 2]
  18. يوجد عدة طرق في لغة بايثون لفعل ذلك، وأفضلها استخدام دوال مكتبة pkgutil حيث سنقوم بالدوران حول أسماء الوحدات الموجودة في الحزمة كأننا نعتبرهم eggs أو zips ومن ثم نطبعها واحدة تلو الآخر باستعمال حلقة تكرار for مع تعليمة الطباعة print كما في المثال التالي: import pkgutil import email # example of package package = email for importer, modname, ispkg in pkgutil.iter_modules(package.__path__): print "Found submodule %s (is a package: %s)" % (modname, ispkg)
  19. يوجد عدة طرق في لغة بايثون لفعل ذلك، وأشهر وأبسط هذه الطرق هي عن طريق فتح الملف بوضع بيناري (binary mode) وذلك عن طريق وضع wb بدلا من w، فإذا لم تفعل ذلك، فإن صياغة نهاية الأسطر ستختلف من نظام لآخر حسب الطريقة الرسمية لكل نظام.
  20. يوجد العديد من الطرق في بايثون لفعل ذلك وأسهل هذه الطرق هي عن طريق استخدام دالة mkdtemp() من مكتبة tempfile حيث تتميز هذه الدالة بعد مميزات ويمكن استعمالها كالتالي: import tempfile tmp = tempfile.mkdtemp() ومن أهم مميزات هذه الدالة أنك لا تحتاج إلى حذف المجلد بعد الاستخدام لأنه سيتم حذف بشكل تلقائي بعد الانتهاء من استخدامه.
  21. يوجد العديد من الطرق في لغة بايثون لمعرفة ذلك وأسهل هذه الطرق هي عن طريق استخدام دالة where من مكتبة numpy كما في المثال التالي: numpy.where(x == 0)[0] حيث سترجع لك مصفوفة تحتوي على مواقع العناصر ذات قيمة صفر. أو يمكنك البحث عن شرط معين داخل مصفوفة numpy معينة كما في هذه الطريقة وسيتم إرجاع مصفوفة تحتوي على مجموعة من القيم المنطقية حسب تطابق الشرط مع عناصر المصفوفة: >>> a == 0 array([ True, False, False, False, False], dtype=bool)
  22. في الحقيقة إذا أردنا الإجابة على السؤال بطريقة دقيقة فإن الجواب الصحيح سيكون عبر طريقة isinstance التي وضعتها، فطريقة hasattr و callable لا تفرق بين دالة وصنف كما في المثال التالي: >>> class Spam(object): ... def __call__(self): ... return 'OK' ... >>> cannn = Spam() >>> import types >>> isinstance(cannn, types.FunctionType) False >>> hasattr(cannn, '__call__') True >>> callable(cannn) True >>>
  23. يعتبر enumeration أحد أنواع البيانات في العديد من لغات البرمجة والتي من بينها سي بلس بلس ويمكن تسميته في اللغة العربية "التعدادي" ويُستخدم لتعريف مجموعة من الأشياء المرتبطة مثل أيام الأسبوع، الألوان، الفصول، أشهر السنة …. لتعريف هذا النوع من البيانات يكفي كتابة enum ثم الاسم وبعدها تضع عناصر هذا "التعداد" كما في المثال التالي: enum color { yellow, white, green = 10, red }; ويمكنك استخدام عناصره كما في المثالين التاليين: int n = white; // n == 9 color col = red;
  24. الجملة الشرطية في هذه الحالة سهلة للغاية، لأن صياغتها ستكون كالتالي: إذا كان الموضوع = “موضوع” فافعل "إظهار الكود". تختلف طريقة كتابة هذه الجملة من لغة إلى أخرى، فيمكنك مثلا في لغة بايثون كتابة شيء مشابه لهذا حيث سيتم طباعة الكود الموجود في متغير code (مثلا) إذا تحقق الشرط: if mawdoua = "mawdou": print code
  25. يمكنك فعل ذلك بسهولة عن طريق لغة بايثون، وذلك عن طريق وضع أسماء الملفات في قائمة و من ثم الدوران حول جميع أسطر كل ملف واستبدال الكلمة القديمة بالكلمة الجديدة (في ملف جديد) وذلك عن طريق استعمال دالة replace كما في المثال التالي: with open("htmlout.txt", "wt") as fout: with open("htmlin.txt", "rt") as fin: for line in fin: fout.write(line.replace('http://gggle.com', 'http://bingbong.com')) حيث أن htmlout.txt هو الملف النهائي وأما htmlin.txt فهو الملف الأول الذي يحتوي على الكلمات (أو الروابط) قبل استبدالها.
×
×
  • أضف...