קבלת קלט מהמשתמש
חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 34 מתוך 78.
אתגר
קלבשיעור הקודם יצרת הודעת פתיחה עבור מחשבון חלוקת החשבון. עכשיו הוסף את הפונקציונליות לקליטת קלט מהמשתמש לצורך חישוב החשבון.
אחרי הודעת הפתיחה הקיימת שלך, קרא שלושה קלטים מהמשתמש:
- הסכום הכולל של החשבון
- אחוז הטיפ (כמספר שלם, למשל
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אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטריםתרגלו בעצמכם: קומפיילר R אונליין