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

Blackhacker

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

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

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

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

    1

كل منشورات العضو Blackhacker

  1. أريد معرفة ماذا سيحدث في حالة استدعيت وحدة داخل دالة معينة في لغة بايثون، فهل سيتم إعادة استدعاء الوحدة في كل مرة أشغل فيها الدالة؟ وهل يتم استدعاء الوحدة عند بداية البرنامج أو فقط في حالة تم تشغيل الدالة؟
  2. أريد معرفة ما هي أفضل طريقة لاستدعاء وحدة path من مكتبة os فهل من الأفضل استدعاؤها عن طريق سطر import os.path أو عن طريق import os في لغة بايثون؟
  3. أملك قائمة تحتوي على عناصر من نوع سلاسل نصية وأريد إعادة ترتيب مواقع هذه العناصر بشكل عشوائي فهل توجد دالة أو طريقة معينة في لغة بايثون لفعل ذلك؟
  4. هل يمكنني إنشاء ملف أرشيف zip وتوفيره للتحميل لكن بدون حفظه على القرص الصلب؟ كيف أستطيع فعل ذلك على إطار ويب دجانغو؟
  5. أريد معرفة تنسيق القيم المنطقية في السلاسل النصية في لغة بايثون، فهل للقيم المنطقية تنسيق معين؟ كما في هذا المثال: "%b %b" % (True, False)
  6. هنالك عدّة حلول يمكنك استخدامها لمعرفة عرض الشاشة في لغة روبي مثل ENV['COLUMNS'] وtput columns لكن المشكلة في هذه الطرق أنها لا تعطي النتيجة الصحيحة إذا تم تعديل عرض الطرفية أثناء عمل تطبيق روبي. لذلك أعتقد أن ruby-terminfo gem هو أفضل حل لهذه المشكلة باستخدام التابع screen_size والذي يعطيك يعطيك طول وعرض الطرفية من ناحية الأعمدة والصفوف كما في المثال التالي: require 'terminfo' p TermInfo.screen_size # [lines, columns]
  7. هنالك عدّة طرق لإنشاء hash بناءا على عناصر مصفوفة معينة، فلو فرضنا أنك قمت بإنشاء دالة f وتريد فقط إنشاء hash فيمكنك استخدام توابع collect و flatten كما في المثال التالي: def f(fruit) fruit + "!" end arr = ["apples", "bananas", "coconuts", "watermelons"] h = Hash[ *arr.collect { |v| [ v, f(v) ] }.flatten ]وسيكون الناتج: {"watermelons"=>"watermelons!", "bananas"=>"bananas!", "apples"=>"apples!", "coconuts"=>"coconuts!"} أما لو كنت تستخدم الإصدار 1.8.7 من روبي فسيكون الحل أفضل وأقصر لأننا سنستغني عن تابع flatten كما يظهر في المثال التالي: h = Hash[arr.collect { |v| [v, f(v)] }]
  8. يمكنك تحويل القائمة إلى قاموس بسهولة وبعدة طرق في لغة بايثون، فيمكنك على سبيل المثال استخدام دوال zip و dict كما في المثال التالي: b = dict(zip(a[0::2], a[1::2])) أما في حالة كان حجم a كبير فربما تحتاج إلى القيام بشيء مثل هذا والذي لن ينشئ أية قوائم مؤقتة كما في المثال أعلاه: from itertools import izip i = iter(a) b = dict(izip(i, i)) أما في بايثون 3 فيمكنك استخدام "تفهيم القاموس"، لكن هنالك طريقة أفضل عن طريق استخدام دوال range و len كما في المثال التالي: b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
  9. هنالك طرق عديدة في لغة بايثون لحساب عدد تكرارات عناصرها، وبما أن السلسلة النصية مرتبة فسيصبح أمر ترتيبها سهل للغاية. يمكنك استخدام دالة groupby من وحدة itertools مع دوال len و list وحلقة تكرار for للحصول على ما تريد: a = [1,1,1,1,2,2,2,2,3,3,4,5,5] from itertools import groupby [len(list(group)) for key, group in groupby(a)] وسيكون الناتج: [4, 4, 2, 1, 2] أما إذا كنت تستخدم الإصدار 2.7 من بايثون فيمكنك في هذه الحالة استخدام دالة Counter من وحدة collections حيث ستحصل بهذه الطريقة على قاموس يحتوي على العناصر وعدد مرات تكرار وإذا أردت الحصول على عدد مرات التكرار فقط فيمكنك استخدام دالة values() كما في المثال التالي: import collections a = [1,1,1,1,2,2,2,2,3,3,4,5,5] counter=collections.Counter(a) print(counter) # Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1}) print(counter.values()) # [4, 4, 2, 1, 2] print(counter.keys()) # [1, 2, 3, 4, 5] print(counter.most_common(3)) # [(1, 4), (2, 4), (3, 2)]
  10. هنالك طريقتين شهيرتين لفعل هذا بالاعتماد على إصدار بايثون المثبت على جهازك، ففي الإصدار الثاني من بايثون يمكنك تجنب إنشاء نسخة مؤقتة من جميع القيم باستخدام تابع itervalues() والذي سيرجع لك نسخ من مفاتيح القاموس ومن ثم يمكنك الجمع كالتالي: sum(d.itervalues()) أما في الإصدار الثالث للبايثون يمكنك استخدام d.values() فقط لأنه ذلك التابع قد تغير للقيام بذلك (وتم حذف itervalues() لأنها لم تعد هنالك حاجة لها): sum(d.values())
  11. أريد الحصول على حرف واحد من المستخدم في الطرفية على نظام لينكس بدون أن يضغط المستخدم على زر الإدخال، فما هي أسهل طريقة لفعل ذلك في روبي؟
  12. ما الطريقة الصحيحة للدوران على مدى للوقت في روبي، ومن ثم تعيين قيمة delta؟ الفكرة التي خطرت على بالي الفكرة التالي والتي لا تعمل؟ for hour in (start_time..end_time, hour) hour #=> Time object set to hour end فكيف أستطيع فعل ذلك في روبي؟
  13. أملك المصفوفة التالية والحاولة على سلاسل نصية: arr = ['sandra', 'sam', 'sabrina', 'scott', 'mark', 'melvin'] أريد البحث في داخلها على حروف أو كلمة معين، مثلا عندما أريد البحث عن "sa” فتظهر لي مصفوفة تحتوي على ['sandra', 'sam', 'sabrina']، فما هي أسهل طريقة لفعل ذلك في روبي؟
  14. أريد أتأكد ما إذا كانت مصفوفتين لديهما نفس القيم، فكيف أستطيع فعل ذلك في لغة روبي؟ أول فكرة خطرت على بالي هي: require 'set' a.to_set == b.to_set فهل توجد طريقة أفضل منها؟
  15. أريد استبدال مواقع عنصرين في قائمة معينة حيث سيأخذ العنصر الأول مكان العنصر الثاني والعكس، فكيف أستطيع فعل ذلك في لغة بايثون؟ القائمة: ['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter'] العنصرين الذين أريد تبديلهما 'password1' و'password2' .
  16. ما مشابه رموز backticks الموجودة في لغات روبي وبيرل في لغة بايثون؟ فمثلا أستطيع في لغة روبي أن أكتب هذا: foo = `cat /tmp/baz` فهل هنالك تعليمة برمجية مشابهة لهذه؟
  17. أكتب في الوقت الحالي تطبيق GUI سيحصل على بيانات متنوعة من اتصال ويب، فهل أستخدم Qt threads عند تعاملي مع الخيوط (threads) أم تنصحوني باستخدام خيوط بايثون (Python threads) ؟ وما الفرق بينهما؟
  18. بدأت بتعلم web2py منذ مدة ووجدته إطار سهل وقوي لكن أغلب المواقع الشهيرة تعمل بإطار دجانغو لأنه يوفر إمكانيات أفضل من web2py فهل تنصحوني بأن أنتقل لتعلم دجانغو أم أكمل تعلمي لـ web2py؟
  19. أحتاج إلى تشغيل سكربت shell عن طريق استخدام لغة بايثون فقط فما هي أسهل طريقة لفعل ذلك؟ فهل توجد دالة معينة يمكنها مساعدتي؟
  20. أحتاج إلى دمج القواميس التالية: d1={1:2,3:4} d2={5:6,7:9} d3={10:8,13:22} لتصبح قاموس واحد كما يظهر في المثال التالي: d4={1:2,3:4,5:6,7:9,10:8,13:22} فما هي أسرع طريقة في لغة بايثون لفعل ذلك؟
  21. لدي سلاسل نصية التالية Hello world !! وأريد أن يطبعها لي بايثون كالتالي 48:65:6c:6c:6f:20:77:6f:72:6c:64:20:21:21 فهل هنالك دالة معينة أو أي طريقة لفعل ذلك؟
  22. أريد الدوران حول مجال معيّن بشكل عكسي مثل من 100 إلى 0، فكيف أستطيع فعل ذلك في لغة بايثون؟ جربت استخدام هذا السطر لكنه لم ينجح: for i in range (100,0)
  23. قرأت قليلا في التوثيق الرسمي للغة بايثون عن تعريف raise لكنني لحد الآن كيف أستخدمها بالضبط، فكيف أستطيع استخدام raise في بايثون؟
  24. أملك مصفوفة تتكون من عدة مصفوفات في ريلز (الإصدار 3.1) حيث أن هذه الأخيرة متباينة في الحجم، فهل هنالك طريقة سهلة لدمج جميع هذه المصفوفات إلى مصفوفة واحدة كبيرة ذات بعد واحد؟
  25. كيف يمكنني ترميز ملف به شيفرة برمجية بلغة روبي بترميز utf-8، لأنني وجدت عدة طرق مختلف مثل هذه الطرق: # encoding: UTF-8 # coding: UTF-8 # -*- coding: UTF-8 -*-فهل توجد فروق بين هذه الطرق؟ وما هي؟
×
×
  • أضف...