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

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

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

challenge icon

التحدي

سهل

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

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

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

في سكربتات R التي تعمل بشكل غير تفاعلي (مثل هذه المنصة)، يتم قراءة المدخلات من دفق الإدخال القياسي (standard input stream). للقيام بذلك، افتح أولاً اتصالاً بـ 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")

جميع دروس Fundamentals