تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التفاعل مع المستخدم في بيثون
#1
التفاعل مع المستخدم



من حين لآخر ، قد يكون من المفيد طرح سؤال على المستخدم.



الدالة input



تطلب هذه الدالة من المستخدم ادخال بيانات باستخدام لوحة المفاتيح وتنتظره إلى أن ينقر مفتاح الإدخال Enter :



كود :
city_name = input("Enter the city name : ")
print(f"The city name = {city_name}")


تنبيه: التحقق من المدخلة / التحويل



لاحظ جيدا أن الدالة input تعيد **دائما** سلسلة نصية (str). ولكن من السهل جدا أن ننسى ذلك ونمرر هذه السلسلة مباشرة إلى وظيفة أو دالة تتوقع، على سبيل المثال ،  تلقي عدد صحيح ، وفي هذه الحالة تسوء الأمور:



كود :
input("number of lines ? ") + 3
number of lines ? 12
#u==  والنتيجة ===
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: must be str, not int


في المثال السابق كان يتوجب استخدام الدالة int لتحويل المدخلة النصية الى عدد صحيح قبل إجراء عملية الجمع:



كود :
input("number of lines ? ") + 3
number of lines ? 12
لاحظ أن الحل السابق لا يضع في الحسبان احتمال خطأ المستخدم في كتابة المطلوب.



محدودية الدالة input



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



بالنسبة للبرامج المطورة بلغة بيثون والتي تشتغل عبر الطرفية، فهي تتلقى البيانات التي يدرجها المستخدم من خلال الطرفية نفسها. من بين الأدوات المساعدة في ذلك نجد الوحدة النمطية argparse كما في المثال التالي:



كود :
#u== السطور التالية لا تشتغل إلا من خلال الطرفية ===
import argparse

parser = argparse.ArgumentParser()
parser.add_argument(dest="number", type=int,
                   help="This will calculate the square of your input number")
input_args = parser.parse_args()
number = input_args.number
print("You have entered {}".format(number))
print("The square of your given number: {}".format(number**2))


بما أن السطور السابقة موجهة للاستخدام عبر الطرفية، فلابد من حفظها في ملف: مثلا arg_parser.py ثم تنفيذ السكربت :



كود :
python3 arg_parser.py 7
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف