الحصول على مدخلات المستخدم
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 34 من 78.
التحدي
سهلفي الدرس السابق، قمت بإنشاء رسالة ترحيب لآلة حساب تقسيم الفاتورة (Bill Split Calculator). الآن، أضف الوظيفة لجمع مدخلات المستخدم لحساب الفاتورة.
بعد رسالة الترحيب الموجودة لديك، اقرأ ثلاثة مدخلات من المستخدم:
- إجمالي مبلغ الفاتورة
- نسبة البقشيش (كعدد صحيح، مثل
15لـ 15%) - عدد الأشخاص الذين سيتقاسمون الفاتورة
في سكربتات 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")— يفتح دفق الإدخال القياسي للقراءة ويخزنه فيconreadLines(con, n = 1)— يقرأ سطراً واحداً بالضبط من ذلك الاتصال. ملاحظة:readLines()تختلف عنreadline()— حيث تعملreadLines()مع اتصالات الملفات (بما في ذلكstdin) ويمكنها قراءة أسطر متعددة في وقت واحد باستخدامn =، بينما تعملreadline()فقط بشكل تفاعلي في وحدة تحكم RsuppressWarnings(...)— يسكت التحذيرات غير الضارة التي تظهر عند القراءة من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
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ