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