الفرق بين input و raw_input في بايثون

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

الكثير من المبتدئين ﻻ يعلم أن بايثون تقدم أسلوبين أو دالتين لتلقي مدخلات المستخدم:
الدالة الأولى هي raw_input و هي الأكثر إنتشارا و ﻻ أعتقد أنه يوجد مبرمج بايثون ﻻ يعرفها
الدالة الثانية هي input و هي الأقل إنتشارا بين المبرمجين
و لكن أين الفرق بينهما و لم بايثون توفر دالتين عوض واحدة؟
الدالة الأولى raw_input تتلقى المدخلات من المستخدم على أنها كائن نصي string(في بايثون كل الأوامر و المتغيرات و الدوال هي كائنات) و لهذا إن كنت تطلب من المستخدم ﻹدخال حروف فلا تحتاج إلى تغيير المدخلات إلى سلسلة نصية عن طريق الدالة str  و لكن لو طلبت من المستخدم إدخال أرقام فهنا عليك تغيير نوع المدخلات إلى أرقام عن طريق الدالة int.



الدالة الثانية input هي موجهة ﻹدخال الكائنات الرقمية (int,float,long,complex) و ﻻ يفضل استخدامها مع المدخلات النصية.
هنا سيقول البعض،إذن ما هي أفضل دالة إدخال؟
في بايثون 3 تم حذف الدالة raw_input و تم الإبقاء على الدالة input و لكن مع بعض التغييرات بحيث أصبحت الدالة input تتلقى المدخلات افتراضيا على شكل سلسلة نصية.
إن كنت من مستخدمي بايثون 3 فأنت أمام خيار واحد و هو استخدام الدالة input أما إن كنت من مستخدمي بايثون 2 فمن الأفضل إستخدام الدالة raw_input ﻷنها أكثر تخصيصا من الدالة input في بايثون2.
أتمنى أن تكونوا قد استفدتم من هذا الدرس الخفيف،و إن شاء الله يعينني على أن أكمل ما بدأت.
نسأل الله التوفيق.
أخوكم في الله

تعليقات

  1. نعم اخي و لكن في اصدالاة الجديد اعتقد لا يوجد raw_input

    ردحذف
    الردود
    1. نعم أخي إسماعيل،في إصدار بايثون الجديد ﻻ توجد raw_input

      حذف
  2. http://docs.python.org/3.3/whatsnew/3.0.html?highlight=raw_input

    PEP 3111: raw_input() was renamed to input(). That is, the new input() function reads a line from sys.stdin and returns it with the trailing newline stripped. It raises EOFError if the input is terminated prematurely. To get the old behavior of input(), use eval(input()).

    raw_input لم تحذف، بل تم تغيير اسمها الى input

    ردحذف
  3. حتى و لو تم تغيير إسمها فقط،فلك أن تلاحظ الفرق بينهما في نوع المدخل.

    ردحذف
  4. طيب ماذا افعل كي افرض على المستخدم ادخال الارقام من النوع int ؟اتمنى التوضيح بمثال بسيط وشكرا .

    ردحذف
  5. طيب ماذا افعل كي افرض على المستخدم ادخال الارقام من النوع int ؟اتمنى التوضيح بمثال بسيط وشكرا .

    ردحذف

إرسال تعليق

شاركنا رأيك حول الموضوع...