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

Kais Hasan

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

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

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

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

    24

كل منشورات العضو Kais Hasan

  1. إن الطريقة التي تعرضها جيدة و لكن فيها شيء غير مرغوب في بعض الأحيان، و هو أنك تقوم بطباعة فراغ زائد في نهاية كل سطر، و هذا قد يسبب مشاكل في بعض الأحيان خاصة أنه من غير الواضح وجود الفراغ. لحل هذه المشكلة يمكننا وضع قيمة end على أنها فراغ طالما أننا لم نصل لآخر عنصر و في آخر عنصر نضعها سطر جديد، أي كما يلي: num = 1 for i in range(0, 7): for j in range(0, i + 1): print(num, end = ' ' if j < i else '\n') num += 1 لاحظ كيف أننا نقول أننا نريد الفراغ طالما أن j < i أي طالما لم نصل لآخر عنصر و إلا نضع نهاية سطر عندما نصل لآخر عنصر. و لكن بشكل عام هذه الطريقة في كتابة الكود هي طريقة لغات البرمجة مثل السي و الجافا و غيرها، في ال python هناك طريقة أخرى لكتابة هذه الأكواد و يجب اتباعها ليكون الكود pythonic أي يتبع الطريقة التي يكتب فيها المبرمجون المحترفون في لغة البايثون. مثلاً كودك السابق يمكن أن يكتب بطريقة pythonic بالطريقة التالية: from itertools import accumulate steps = list(accumulate(range(8))) output = '\n'.join( [ ' '.join([str(x) for x in range(steps[i]+1, steps[i+1]+1)]) for i in range(7) ] ) print(output)
  2. طريقة أخرى أكثر سرعة للقيام بذلك، هي أن تقوم بتعريف مصفوفة عدد عناصرها 28 بحيث يمثل كل عنصر محرف ( و يمكنك زيادة عدد العناصر في حال كنت ترغب بعد الفراغات و علامات الترقيم و الارقام و ما إلى هنالك، المهم عنصر من أجل كل محرف تريده). و من ثم المرور على عناصر الجملة حرف حرف، و في كل مرة نقوم بزيادة قيمة المصفوفة عند هذا المحرف، يمكن ذلك عن طريق تحويل المحرف إلى العدد الذي يقابله (فكل محرف يمثل على شكل عدد في السي). أي مثال على ذلك: char s[] = "abcaa"; int cnt[255] = {0}; for (int i = 0 ; i < strlen(s) ; ++i) { char c = s[i]; cnt[c]++; } بعدها ببساطة يمكن المرور على عناصر هذه المصفوفة و أخذ الأكبر منها.
  3. بالإضافة لما ذكر زميلي، هناك طريقة أخرى في السي لمعرفة فيما إذا كان الحرف هو capital و هي أن نقوم بطرح الحرف من الحرف A، حيث أن المحارف يتم تمثيلها بشكل رقمي ومتتال و يتم تحويلها لأرقام في حال استعمالها في العمليات الرياضية كالطرح، و بالتالي بعد الطرح يكفي أن نختبر أن نتيجة الطرح هي في المجال [27, 0] أي مثلاً يمكنك كتابة الشرط التالي: char c = 'B'; int diff = c - 'A'; if (diff >= 0 && diff < 28) { printf("capital\n"); } فيمكنك استعمال هذه الطريقة لاختبار فيما إذا كان المحرف capital أم لا، هذا هو لب البرنامج، ما يتبقى فقط متغير لعد هذه المحارف و عمليات الإدخال و الإخراج. أنصحك بمحاولة حل التمرين و مشاركتنا ما قمت به في حال حدوث أخطاء، هذا يعطيك خبرة في التعامل مع البرامج بشكل أفضل.
  4. ليس لدي معرفة بما نفذه المعلم، كما أن الملف الذي أرفقته فارغ. تحياتي.
  5. سأساعدك في المفاهيم، حيث أن كتابة الكود عنك لن يعود عليك بأي فائدة و لن يحسن من مهاراتك البرمجية. في البداية هنا لدينا 3 شروطـ بالطبع يمكن كتابتها عن طريق العبارة الشرطية و لكن المطلوب استعمال switch و التي تقوم بالتحقق من قيمة عدد و تنفيذ التعليمات المطلوبة بناء على ذلك، مثلاً لنفترض أن لدي برنامج يطلب من المستخدم إدخال رقم بين 1 و 3 و سيتم طباعة رسالة معينة حسب كل إدخال، يمكن كتابة ذلك كما يلي: int x; cin >> x; switch(x){ case 1: cout << "hi" << endl; break; case 2: cout << "hello" << endl; break; case 3: cout << "bonjour" << endl; break; } لاحظ كيفية كتابة تعليمة ال switch، حيث نقوم بإعطاءها العدد و تحديد الحالات التي نريدها، و في كل حالة نكتب التعليمات التي نريد تنفيذها يليها break. يمكنك محاولة كتابة ذلك للتمرين الخاص بك. بالنسبة لكيفية حساب الدفع اليومي بناء على عدد الساعات و مستوى الموظف، فإن مستوى الموظف هو حالات ال switch، بينما عدد الساعات ببساطة يمكنك ضربه بمعدل الدفع في الساعة الواحدة ليصبح لديك الناتج. من فضلك حاول كتابة التمرين و سنساعدك في حال حدوث أخطاء معك.
  6. في حال كان السؤال تابع لإحدى الدروس في الدورات من فضلك قم بنشر السؤال كتعليق أسفل الدرس. تحياتي.
  7. يمكنك حل المشكلة عن طريق إضافة class معين للعنصر بشكل ديناميكي، بحيث تكون وضعت قواعد css تحدد كيفية تموضع ال label بناء على ذلك، مثال بسيط على ذلك باستعمال js, html, css بحيث يمكنك تطبيق الفكرة لديك: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <style> .float-container { border: solid 1px #ccc; padding: 0 8px; position: relative; } .float-container input { border: none; font-size: 16px; outline: 0; padding: 16px 0 10px; } label { font-size: 16px; position: absolute; transform-origin: top left; transform: translate(0, 16px) scale(1); transition: all .1s ease-in-out; } .float-container.active label { transform: translate(0, 4px) scale(.75); } </style> </head> <body> <div id="floatContainer" class="float-container"> <label for="floatField"> Label </label> <input id="floatField" type="text" /> </div> <script> const floatField = document.getElementById('floatField'); const floatContainer = document.getElementById('floatContainer'); floatField.addEventListener('focus', () => { floatContainer.classList.add('active'); }); floatField.addEventListener('blur', () => { if (floatField.value === "") { floatContainer.classList.remove('active'); } }); </script> </body> </html> هنا نقوم بكتابة التحويل لل label، بحيث يعمل على class محدد، و نقوم بإضافة أو إزالة هذا ال class، حيث نقوم بإضافته في حالة ال focus و حذفه في حالة ال blur فقط إذا كان الدخل فارغاً.
  8. أبسط طريقة هي أن تقوم بوضع قيمة ضمن جدول المستخدمين تدل على الصلاحية التي لدى هذا المستخدم أو فعلياً إلى أي مجموعة ينتمي، مثلاً يمكنك وضع قيمة عددية تعبر عن ذلك، في حالتك قد يكون مثال على ذلك هو أن تضع قيمة 1 للمستخدمين العاديين، 2 للأطباء، 3 للمدير. و عندها عندما تريد عرض أو تنفيذ أي شيء يمكنك التحقق من هذه القيمة لمعرفة إن كان يحق لهذا المستخدم تنفيذ ما تريد. طريقة أفضل للقيام بذلك هي إضافة جدول خاص بالمجموعات، و ربطه مع جدول المستخدمين بحيث يكون لكل مستخدم مجموعة واحدة بينما المجموعة الواحدة تحتوي على عدة مستخدمين، هذا يسمح لك بإضافة معلومات أخرى عن المجموعة، مثلاً اسم المجموعة.
  9. يجب أن تكون لديك المكتبات المناسبة. ينصح بتنزيل المكتبات لأي مشروع ضمن بيئة افتراضية، مثلاً يمكنك استعمال pipenv، عن طريق الذهاب إلى المجلد الذي يحوي الكود و كتابة ما يلي: pip install pipenv pipenv install tk pipenv shell python -m script حيث أنني أعتبر هنا أن الملف الذي تريد تشغيله له الاسم script.
  10. فهم البرمجة و الأوامر البرمجية و طريقة التفكير البرمجية هو أمر أساسي جداً، بالإضافة لفهم كيفية عمل الويب، ليس عليك أن تكون خبيراً في الباك أو الفرونت و لكن عليك أن تعلم كيف يعمل الويب لتقوم بمعرفة كيفية اختراق هذه الأمور. كما أنه غالبا ستكتب سكربتات للقيام ببعض الأوامر، فليس من السهل في كل مرة كتابة الأوامر من البداية، لذلك تفيدك البرمجة في ذلك. أي بشكل مختصر عليك فهم المفاهيم البرمجية و كيفية عمل الويب و ليس أن تكون خبيراً في بناء التطبيقات و مواقع الويب. كما أنه يجب عليك أن تكون على معرفة كبيرة بالشبكات، فهي من أهم أدواتك.
  11. هذا يعتمد على الرخصة المستعملة، لقد قمت بإجابتك عن هذا السؤال مسبقاً من أجل كل رخصة.
  12. الحالة الأولى تعتبر أنك تستعمل خرج المكتبة بشكل فعلي و ليس المكتبة نفسها، هذا موجود في الشروط، أي أنه عندما تستعمل شيء ناتج عن المكتبة أنت تستعمل خرج المكتبة و ليس المكتبة بحد ذاتها. أما في حال استعمالك لل import فأنت تستعمل المكتبة نفسها. أي هنالك ثلاث حالات من هذه الأمور مرتبة بحسب القيود المفروضة من الأكثر إلى الأقل. استعمال كود المكتبة. استدعاء المكتبة بدون الوصول إلى الكود الخاص بها و تعديله. استعمال خرج المكتبة، أي مثلاً استعمال برنامج كتب بواسطة هذه المكتبة.
  13. يمكنك الاطلاع على مقالات حسوب فهي تحتوي على المحتوى اللازم لكي تتعلم هذه الأمور، كما يمكنك محاولة البحث عن كيفية اختبار فيما إذا كان عدد هو رقم أم لا، مهارة البحث من أهم المهارات التي يجب تعلمها.
  14. انت تقوم فقط باستدعاء المكتبة، لا مشكلة في ذلك فقط قم بذكر الترخيص لا أكثر.
  15. إعطاءك حل الوظيفة بشكل مباشر لن يساهم في تحسين مهاراتك البرمجية و لن يعود عليك بأي فائدة. سأقوم بمساعدتك بالمفاهيم اللازمة لحل هكذا وظيفة و عليك المحاولة بنفسك، يمكننا مساعدتك في حال حدوث خطأ و لكن ليس إعطاءك الحل كاملاً. المفاهيم اللازمة لهذا الأمر هي: الحلقات التكرارية، فأنت تريد المرور على جميع عناصر المصفوفة و تكرار نفس التعليمات في كل مرة. العبارات الشرطية فأنت تريد اختبار فيما إذا كان عنصر ما رقماً أم حرفاً. متغير لتخزين العدد فيه، يكفي إضافة 1 لهذا المتغير في حال تمت الطباعة، أي عد الأرقام، و يمكن معرفة عدد الأحرف عن طريق طرح عدد الأرقام من عدد العناصر في المصفوفة. يمكنك تعلم كل هذه المفاهيم عن طريق الذهاب إلى المقالات الموجودة في أكاديمية حسوب. حاول حل التمرين و أظهر محاولاتك لنحاول مساعدتك في حال حدوث خطأ.
  16. السؤال عن التراخيص، ما هو المثال الذي تريده في البايثون؟ الموضوع لا يختلف باختلاف اللغة، أنا أعتقد أنك تقوم باستدعاء المكتبات فقط بدون استعمال الكود المباشر الخاص بها. يمكنك توضيح ما تقوم به بمثال لأخبرك فيما إذا كنت تستعمل الأكواد أم فقط استدعاء.
  17. القاعدة column-rule-color لاتقوم بتغيير لون الوسم، و إنما تقوم بتغيير لون الفاصل بين الأعمدة في حال كان المخطط الخاص بصفحتك يعتمد على عدة أعمدة، و بالتالي في حالتك القاعدة خاطئة حيث أنه بشكل عام لا يتكون المكون h1 من عدة أعمدة، بل مجرد نص. في حال أردت تغيير لون الوسم h1 عليك استخدام القاعدة color فقط، أي تكتب ما يلي مثلاً: h1 { color: red; }
  18. صحيح من أجل 1 و لكن غير صحيح من أجل 2. في حال قمت باستعمال كود مباشر من هذه المكتبات ( و ليس مجرد استدعاء) فيجب عليك إتاحة الوصول إلى هذه الأجزاء التي استعملتها فقط، و ليس لكل المشروع. أي يبقى بإمكانك توزيع التطبيق بمصدر مغلق، و فتح الوصول إلى هذه الأجزاء فقط.
  19. نعم، حسابك يفترض أنك ربطت حسابك الذي قمت بعمله بحسابك البنكي مثلاً، في هذه الحالة أي تحويل يذهب إلى حسابك البنكي، و يمكنك حتى رؤية التحويلات التي تمت على حسابك في apply pay.
  20. الخطأ يقول لك أنه حدث فشل في الاتصال بقاعدة البيانات. هذا قد يكون لعدة أسباب منها: قاعدة البيانات لا تعمل لديك، ربما نسيت تشغيلها مسبقاً أو هناك مشكلة في السيرفر، عليك النظر إلى ال log الخاص بسيرفر قاعدة البيانات لمعرفة ذلك. قمت بوضع عنوان السيرفر بشكل خاطئ، مثلاً السيرفر يعمل على البورت 9999 و انت قمت بوضع 8888. عليك التأكد من هذه الأمور جيداً.
  21. PySide تندرج تحت رخصة LGPL فبالتالي يمكنك استدعاء اي شيء منها بدون ذكر ذلك حتى. ال QtDesigner مجرد تطبيق يساعدك على انشاء ملفات الواجهة بالتالي لا داعي ايضا لذكر رخصة، يمكنك اعتباره كالفوتوشوب.
  22. هناك الكثير من الرخص مفتوحة المصدر، بالإضافة إلى أن المكتبة نفسها قد تستعمل أكثر من رخصة لكل جزء منها و لذلك لا يمكن إجابتك على هكذا سؤال عام، من أجل ال qt أجبتك و لكن بشكل عام من الصعب الإجابة.
  23. هذا يعتمد على المكتبة، لا يمكن إعطاء جواب عام لكل المكاتب. و لكن طبعا هناك فرق دائماً و لكن يختلف الفرق باختلاف المكتبة.
  24. و هذا هو الغرض من المكتبة، أي استعمال المكتبة يكون هكذا. أنت تستعمل كلاسات و توابع باستدعاءها، و لا تقوم بأخذ الأكواد التي تم كتابة هذه التوابع بها.
×
×
  • أضف...