Menu
Coddy logo textTech

עיצוב עם sprintf()

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 2 מתוך 64.

sprintf() בונה מחרוזת מתוך תבנית. כל מציין מקום מסוג % מוחלף בארגומנט הבא: %s עבור טקסט, %d עבור מספרים שלמים ו־%f עבור מספרים עשרוניים.

name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))

פלט:

[1] "Ada is 36 years old"

%d מקבל רק מספרים שלמים: sprintf("%d", 2.5) נעצר עם שגיאה.

דיוק בין % ל-f קובע את מספר הספרות העשרוניות, כך ש-%.2f מעגל לשתי ספרות אחרי הנקודה:

total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))

פלט:

[1] "Total: 16.20"

רוחב מרפד את הערך במספר התווים הזה: %5d מרפד משמאל, %-6s מרפד מימין ו-%03d מרפד באפסים. %% מדפיס סימן אחוז.

print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))

פלט:

[1] "[   42]"
[1] "[tea   ]"
[1] "007"
[1] "85%"

sprintf() מבצעת וקטוריזציה: עם ארגומנטים שהם וקטורים היא מחזירה מחרוזת אחת לכל איבר. cat() עם sep = "\n" מדפיסה כל מחרוזת בשורה נפרדת.

items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")

פלט:

tea     4.00
cake   12.50
challenge icon

אתגר

קל

השלימו את receipt_line(item, qty, price). החזירו את הפריט, הכמות וסך השורה (qty * price) בצורה tea x3 = 13.50: הפריט, רווח, x ואחריו הכמות, ואז = והסכום עם שתי ספרות בדיוק אחרי הנקודה העשרונית.

הקוד שסופק קורא את הפריט, הכמות והמחיר (אחד בכל שורה) ומדפיס את הערך שהוחזר.

נסו בעצמכם

receipt_line <- function(item, qty, price) {
  # כתבו את הקוד שלכם כאן
  ""
}

# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר R אונליין