إدخال البيانات (User Input)

البرامج المفيدة هي التي تتفاعل مع المستخدم. حتى الآن، كانت برامجنا تعمل بمعزل عن العالم الخارجي. دالة input() هي بوابتك لجعل برامجك تفاعلية، حيث تسمح للمستخدم بإدخال بيانات من لوحة المفاتيح ليقوم البرنامج بمعالجتها.

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

1. دالة input() الأساسية

دالة input() توقف تنفيذ البرنامج وتنتظر حتى يكتب المستخدم شيئاً ويضغط Enter. ما يكتبه المستخدم يتم إرجاعه كسلسلة نصية (String).

basic_input.py
# طلب إدخال بسيط
print("أدخل اسمك:")
name = input()

print(f"مرحباً بك يا {name}!")

# يمكنك وضع رسالة التوجيه (Prompt) داخل الدالة مباشرة
age = input("كم عمرك؟ ")
print(f"عمرك هو {age}")
مثال لتفاعل المستخدم
أدخل اسمك: > أحمد مرحباً بك يا أحمد! كم عمرك؟ > 25 عمرك هو 25

2. نوع البيانات المدخلة (The Trap!)

قاعدة ذهبية: دالة input() ترجع دائماً نصاً (String)، حتى لو أدخل المستخدم أرقاماً.
input_type.py
number = input("أدخل رقماً: ") # لنفترض أن المستخدم أدخل 5

print(f"القيمة: {number}")
print(f"النوع: {type(number)}")

# محاولة إجراء عملية حسابية مباشرة ستفشل
# print(number + 10) # ❌ خطأ: لا يمكن جمع نص ورقم
النتيجة
أدخل رقماً: 5 القيمة: 5 النوع: <class 'str'>

3. تحويل المدخلات (Casting)

لإجراء عمليات حسابية على المدخلات، يجب تحويلها إلى int أو float.

calc_age.py
# تحويل مباشر
birth_year = int(input("في أي سنة ولدت؟ "))

current_year = 2024
age = current_year - birth_year

print(f"عمرك التقريبي هو: {age} سنة")

# للأرقام العشرية
price = float(input("أدخل سعر المنتج: "))
total = price * 1.15 # إضافة ضريبة
print(f"السعر شامل الضريبة: {total}")

4. استقبال مدخلات متعددة

يمكنك استخدام دالة split() لاستقبال عدة قيم في سطر واحد.

multiple_inputs.py
# اطلب من المستخدم إدخال الاسم واللقب مفصولين بمسافة
full_name = input("أدخل اسمك ولقبك: ")
first, last = full_name.split()

print(f"الاسم الأول: {first}")
print(f"اللقب: {last}")

# إدخال أرقام متعددة
# المدخلات: 10 20 30
numbers = input("أدخل 3 أرقام مفصولين بمسافة: ").split()
# numbers الآن هي قائمة من النصوص ['10', '20', '30']

# تحويلها لأرقام (طريقة متقدمة باستخدام map)
x, y, z = map(int, numbers)
print(f"المجموع: {x + y + z}")

5. تطبيق عملي: حاسبة مؤشر كتلة الجسم (BMI)

bmi_calculator.py
print("--- حاسبة BMI ---")

weight = float(input("أدخل وزنك (كجم): "))
height = float(input("أدخل طولك (متر): "))

bmi = weight / (height ** 2)

print(f"مؤشر كتلة الجسم لديك: {bmi:.2f}")

if bmi < 18.5:
    print("تصنيف: وزن أقل من الطبيعي")
elif bmi < 25:
    print("تصنيف: وزن طبيعي")
else:
    print("تصنيف: وزن زائد")

6. أفضل الممارسات

افعل
  • ضع رسالة واضحة للمستخدم في input().
  • توقع الخطأ: ماذا لو أدخل المستخدم نصاً بدلاً من رقم؟ (استخدم try-except).
  • استخدم strip() لإزالة المسافات الزائدة.
لا تفعل
  • لا تستخدم input() داخل حلقات تكرار لا نهائية بدون شرط خروج.
  • لا تستخدم eval(input()) أبداً لأسباب أمنية خطيرة.
ملخص الدرس
  • input() تستقبل البيانات كنص (String).
  • استخدم int() أو float() لتحويل المدخلات لأرقام.
  • يمكنك وضع رسالة التوجيه داخل الأقواس: input("Message: ").

الخطوة التالية

الآن بعد أن تعلمنا الإدخال، لنتقن فن الإخراج والطباعة

الدرس التالي: الطباعة (Print)
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن