Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الحصول على مدخلات المستخدم

جزء من قسم الأساسيات في رحلة R على Coddy. الدرس 34 من 78.

challenge icon

التحدي

سهل

في الدرس السابق، أنشأتَ رسالة ترحيب لـ Bill Split Calculator. الآن، أضف الوظيفة اللازمة لجمع إدخال المستخدم لحساب الفاتورة.

بعد رسالة الترحيب الموجودة، اقرأ ثلاثة مدخلات من المستخدم:

  1. إجمالي مبلغ الفاتورة
  2. نسبة الإكرامية (كعدد صحيح، مثلًا 15 لـ 15%)
  3. عدد الأشخاص الذين يتقاسمون الفاتورة

في نصوص R البرمجية التي تعمل دون تفاعل (مثل تلك الموجودة على هذه المنصة)، تتم قراءة الإدخال من دفق الإدخال القياسي. للقيام بذلك، افتح أولًا اتصالًا بـ stdin باستخدام file()، ثم اقرأ كل سطر باستخدام readLines()، وأغلق الاتصال عند الانتهاء:

con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)

إليك وظيفة كل جزء:

  • file("stdin", "r"): يفتح دفق الإدخال القياسي للقراءة ويخزّنه في con
  • readLines(con, n = 1): يقرأ سطرًا واحدًا بالضبط من ذلك الاتصال. ملاحظة: تختلف readLines() عن readline(): تعمل readLines() مع اتصالات الملفات (بما في ذلك stdin) ويمكنها قراءة عدة أسطر دفعة واحدة باستخدام n =، بينما تعمل readline() تفاعليًا فقط في وحدة تحكم R
  • suppressWarnings(...): يكتم التحذيرات غير الضارة التي تظهر عند القراءة من stdin بهذه الطريقة. عندما تقرأ R من stdin في نص برمجي، فإنها تُصدر أحيانًا تحذيرًا مثل "incomplete final line" حتى عندما يعمل كل شيء بشكل صحيح. يؤدي تغليف الاستدعاء داخل suppressWarnings() إلى إخفاء هذه الرسائل حتى لا تزدحم بها مخرجاتك. ولا يؤثر ذلك في القيم التي تتم قراءتها
  • as.numeric(...): يحوّل إدخال النص إلى رقم
  • close(con): يغلق الاتصال بعد قراءة جميع المدخلات

خزّن القيم الثلاث في متغيرات أسماؤها bill وtip_percent وpeople.

بعد قراءة المدخلات، اعرض رسالة تأكيد توضّح ما تم إدخاله بالتنسيق التالي:

Bill: $[bill]
Tip: [tip_percent]%
People: [people]

استخدم cat() لجميع المخرجات، وأدرج محارف السطر الجديد \n عند الحاجة. استخدم sep = "" في كل استدعاء لـ cat() لتجنب المسافات غير المرغوب فيها.

افتراضيًا، تُدرج cat() مسافة بين كل عنصر تطبعه. على سبيل المثال:

cat("Bill: $", 120, "\n")   # prints: Bill: $ 120 

لاحظ المسافات غير المرغوب فيها بين $ و120، وقبل السطر الجديد. إن إضافة sep = "" تخبر cat() باستخدام سلسلة فارغة كفاصل بدلًا من ذلك، ولذلك لا يتم إدراج أي شيء بين العناصر:

cat("Bill: $", 120, "\n", sep = "")   # prints: Bill: $120

طبّق هذا النمط على أسطر التأكيد الثلاثة جميعها:

cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")

على سبيل المثال، إذا كانت المدخلات هي 120 و18 و4، فيجب أن تكون المخرجات الكاملة كما يلي:

Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4

جرّب بنفسك

# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")

جميع دروس الأساسيات

تدرّب بنفسك: مترجم R عبر الإنترنت