الإدخال القياسي في بايثون: الأساسيات وحالات استخدام للمبتدئين

1. المقدمة

عند إنشاء برنامج بلغة Python، يُعدّ «الإدخال القياسي» الذي يستقبل مدخلات المستخدم ويعالجها مهمًا جدًا. وبشكل خاص، يتيح استخدام الدالة input() الحصول على البيانات من لوحة المفاتيح، مما يمكّن من التفاعل مع المستخدم。 في هذه المقالة، سنشرح لمبتدئي Python استخدامات الإدخال القياسي من الأساسيات إلى الأساليب المتقدمة، مع أمثلة عملية. وهي مادة تعليمية تتيح التعلّم خطوةً فخطوة بدءًا من البرامج البسيطة وصولًا إلى طرق المعالجة المتقدمة。

2. الاستخدام الأساسي للإدخال القياسي في Python

2.1 ما هي دالة input()؟

input() هي دالة تستقبل إدخال المستخدم وتعيده كسلسلة نصية. على سبيل المثال، يحصل الكود التالي على اسم المستخدم ويطبعه.
name = input("يرجى إدخال الاسم: ")
print(f"مرحباً، {name}!")
في هذا الكود، نُخزّن الاسم المُدخل عبر input() في name ونطبع عبارة ترحيب.

2.2 إدخال البيانات العددية وتحويل النوع

نظرًا لأن البيانات التي تُرجعها input() تكون سلسلة نصية، فإذا أردت التعامل معها كأرقام فقم بتحويل النوع باستخدام الدالة int() أو float().
age = int(input("يرجى إدخال العمر: "))
print(f"أنت تبلغ من العمر {age} سنة.")
في هذا المثال، نحول القيمة من سلسلة نصية إلى عدد صحيح، ثم نطبع العمر كقيمة رقمية。
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. معالجة الإدخال القياسي متعدد الأسطر

3.1 إدخال نص متعدد الأسطر

إذا أردت استقبال إدخال متعدد الأسطر، فإن استخدام for حلقة أو استيعاب القوائم يكون فعّالًا. على سبيل المثال، الكود التالي يطلب من المستخدم إدخال ثلاث كلمات مختلفة.
words = [input(f"يرجى إدخال الكلمة رقم {i+1}: ") for i in range(3)]
print(f"الكلمات المُدخلة: {words}")
في هذا الكود، تُخزَّن ثلاثة أسطر من الإدخال في قائمة ثم تُطبَع。

3.2 إدخالات متعددة مفصولة بمسافات

عند إدخال عدة بيانات في سطر واحد، يمكن استخدام split() الدالة لتقسيمها بحسب المسافات. في المثال التالي، نطلب من المستخدم إدخال أعداد مفصولة بمسافات ثم نحولها إلى أعداد صحيحة。
numbers = list(map(int, input("يرجى إدخال الأعداد مفصولة بمسافات: ").split()))
print(f"الأعداد المُدخلة: {numbers}")
هنا نستخدم map() الدالة لتحويل الأعداد المُدخلة إلى أعداد صحيحة. split() يُقسِّم الإدخال ثم يُخزَّن بكفاءة في قائمة.

4. تطبيقات الإدخال القياسي: معالجة الملفات والبيانات الثنائية

4.1 معالجة الإدخال القياسي باستخدام sys.stdin

باستخدام sys.stdin يمكنك قراءة البيانات مباشرةً من الإدخال القياسي. يكون ذلك مفيدًا عند التعامل مع كميات كبيرة من بيانات النص أو عند التعامل مع محتوى الملفات الممرَّرة عبر معاملات سطر الأوامر بوصفه إدخالًا قياسيًا.
import sys

data = sys.stdin.read()
print(f"البيانات المستلمة: {data}")
في هذا الكود، يتم قراءة كل البيانات من الإدخال القياسي وإخراجها.

4.2 معالجة بسيطة للبيانات الثنائية

باستخدام sys.stdin.buffer يمكنك معالجة البيانات الثنائية مباشرةً. يكون ذلك مفيدًا عند التعامل مع بيانات الصور أو الملفات بتنسيق ثنائي.
import sys

binary_data = sys.stdin.buffer.read()
print(binary_data)
في هذا الكود، تتم قراءة البيانات الثنائية من الإدخال القياسي وإخراجها كما هي。
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. حالات استخدام عملية: حل المشكلات باستخدام الإدخال القياسي

5.1 برنامج حساب المتوسط باستخدام الإدخال القياسي

في البرنامج التالي، نستقبل أعدادًا صحيحة من الإدخال القياسي، ثم نحسب متوسطها ونطبعه. تُستخدم مثل هذه المعالجة كثيرًا في البرمجة التنافسية ومعالجة البيانات.
N = int(input("يرجى تحديد عدد القيم التي ستدخلها: "))
numbers = list(map(int, input("يرجى إدخال القيم مفصولة بمسافات: ").split()))
average = sum(numbers) / N
print(f"المتوسط هو {average}.")
يستقبل هذا البرنامج أولًا عدد القيم، ثم يتعامل مع الأعداد المُدخلة مفصولة بمسافات على أنها قائمة، ويحسب المتوسط.

5.2 برنامج يستقبل البيانات حتى انتهاء الإدخال

برنامج يستمر في استقبال البيانات حتى يُدخل المستخدم سطرًا فارغًا. من خلال تعيين شرط إنهاء محدد، يصبح بالإمكان معالجة بيانات الإدخال لفترات طويلة.
data = []
while True:
    line = input()
    if line == "":
        break
    data.append(line)
print("البيانات المُدخلة: ", data)
في هذا المثال، يستمر البرنامج في استقبال البيانات حتى إدخال سطر فارغ، وفي النهاية يطبع جميع البيانات。

6. الأخطاء الشائعة وطرق التعامل معها

6.1 طريقة التعامل مع ValueError

عند إدخال قيمة رقمية، إذا أدخل المستخدم عن طريق الخطأ سلسلة نصية فسيحدث ValueError。 لتفادي هذا الخطأ، يلزم إضافة كود للتحقق من قيمة الإدخال。
try:
    age = int(input("يرجى إدخال العمر: "))
except ValueError:
    print("إدخال غير صالح. يرجى إدخال رقم.")

6.2 طريقة التعامل مع EOFError

عند استقبال إدخال متعدد الأسطر، قد يحدث خطأ EOF (End of File) الذي يشير إلى انتهاء الإدخال القياسي. لتفادي ذلك، من المهم ضبط شرط الإنهاء بشكل مناسب。
import sys

for line in sys.stdin:
    if line.strip() == "":
        break
    print(line.strip())

7. الخلاصة

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