بدر عبدالكريم عبدالجبار نشر الجمعة في 19:31 أرسل تقرير نشر الجمعة في 19:31 السلام عليكم أرجوا أن تساعدوني في فهم هذا السؤال لم سمحتم لم أفهم لماذا الجواب (c) ؟ ، انا حسب ما فهمت الكود ، قيمة x هي ١٥ ، و قيمة y هي ٥ حسب الشرط الأول: x هي أكبر من y ، لذلك سيتحقق الشرط و يتم طباعة: x is bigger than y و لن يتم الذهاب الى الشروط الاخرى 2 اقتباس
0 Chihab Hedidi نشر الجمعة في 19:38 أرسل تقرير نشر الجمعة في 19:38 السبب في ان الاجابة هي c يعود الى ان الدالة input في لغة بايثون تستقبل المدخلات كنصوص وليس كارقام. عند مقارنة النصوص فان البرنامج يقارن الرموز من اليسار الى اليمين بناء على قيمتها. في هذا السؤال تمت مقارنة الرمز الاول من النص 15 وهو 1 مع الرمز الاول من النص 5 وهو 5. وبما ان 1 اصغر من 5 فان البرنامج يعتبر ان النص 15 اصغر من النص 5 ولذلك لم يتحقق الشرط الاول وانتقل التنفيذ الى else مباشرة. لجعل المقارنة صحيحة وتتم بشكل عددي يجب تحويل المدخلات الى ارقام باستخدام int كما في الكود التالي. x = int(input('x: ')) y = int(input('y: ')) بهذه الطريقة ستكون النتيجة هي الخيار a لان المقارنة ستصبح بين قيم عددية حقيقية. 1 اقتباس
0 محمد عاطف25 نشر الجمعة في 21:39 أرسل تقرير نشر الجمعة في 21:39 وعليكم السلام ورحمة الله وبركاته. لاحظ عدم استخدام دالة int عند استقبال النص ولهذا فالمتغيرات نوعها نصي string حيث دالة input تعيد القيم بنوع نصي وليس رقم . ولهذا فعند المقارنة يتم مقارنة نصوص وليس ارقام وهنا تختلف طريقة المقارنة فمقارنة النصوص تتم حرف بحرف من جهة اليسار . فمثلا الرقم 15 والرقم 5 هنا يتم مقارنة الرقم 1 من جهة اليسار ورقم 5 وهنا ال 5 اكبر من 1 لهذا يرى ان 5 اكبر من 15 . 1 اقتباس
0 Mustafa Suleiman نشر السبت في 10:58 أرسل تقرير نشر السبت في 10:58 دالة ()input تُعيد نصاً وليس رقماً، وذلك لأن المستخدم قد يكتب في لوحة المفاتيح أي شيء: أرقام: 123 نصوص: Ahmed رموز: !@#$ مسافات فارغة أو خليط من ذلك. لذا النوع الوحيد من البيانات القادر على تمثيل أي حرف يُكتب من الكيبورد دون التسبب بانهيار البرنامج هو النص String، ولو كانت الدالة تُعيد أرقام تلقائياً، فماذا ستفعل عندما يكتب المستخدم اسمه؟ سيتوقف البرنامج بسبب خطأ في النوع. وتركت بايثون لك حرية تحديد نوع البيانات الذي تريده بالتحديد ()int أو ()float أو إبقائه نصاً. وعلى مستوى أنظمة التشغيل، تيار الإدخال القياسي Standard Input / stdin يتعامل مع الضغطات القادمة من لوحة المفاتيح كسلسلة من البايتات أو المحارف Characters، بايثون تقرأ ما يصلها من لوحة المفاتيح كما هو تماماً أي النص، وتترك لك مهمة معالجته بحسب حاجتك. 1 اقتباس
0 بلال زيادة نشر منذ 17 ساعة أرسل تقرير نشر منذ 17 ساعة الكود يستخدم input() لقراءة القيم، والدالة input() في بايثون دائماً تُرجع نص (string) وليس رقم (integer)، حتى لو كتب المستخدم أرقاماً. فعندما يُدخل المستخدم: x: 15 y: 5 فإن قيمة x هي النص 15 وقيمة y هي النص 5 وليست أرقاماً فعلية. والمقارنة بين النصوص (strings) في بايثون تتم بطريقة قاموسية/حرفية (lexicographic)، أي تقارن حرفاً بحرف حسب الترتيب في جدول ASCII، وليس بالقيمة العددية. فلو قارنّا 15 > 5: تُقارن أول محرف من كل نص: 1 مقابل 5 في ترتيب ASCII، الرقم 1 أصغر من 5 (لأن 1 = 49 و5 = 53) إذن 15 < 5 كنصوص، لهذا السبب لا يتحقق الشرط x > y، ولا يتحقق أيضاً x == y (لأن النصين مختلفان)، فينتقل التنفيذ إلى else ويُطبع: "x is less than y" ثم لو أراد المبرمج مقارنة الأرقام فعلياً، كان يجب عليه تحويل المدخلات إلى أرقام هكذا: x = int(input('x: ')) y = int(input('y: ')) عندها فقط ستكون المقارنة عددية، وستحصل على x is bigger than y كما توقعت. 1 اقتباس
السؤال
بدر عبدالكريم عبدالجبار
السلام عليكم
أرجوا أن تساعدوني في فهم هذا السؤال لم سمحتم
لم أفهم لماذا الجواب (c) ؟ ، انا حسب ما فهمت الكود ، قيمة x هي ١٥ ، و قيمة y هي ٥
حسب الشرط الأول: x هي أكبر من y ، لذلك سيتحقق الشرط و يتم طباعة: x is bigger than y و لن يتم الذهاب الى الشروط الاخرى
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.