עיצוב עם 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אתגר
קלהשלימו את 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")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
תת־מחרוזות עם substr()עיצוב עם sprintf()פיצול וחיבורחיפוש במחרוזותהחלפת טקסטסיכום – בונה שמות משתמש4מטריצות
יצירת מטריצותאינדוקס מטריצותסיכומי שורות ועמודותאריתמטיקה של מטריצותסיכום – תרשים מקומות ישיבהתרגלו בעצמכם: קומפיילר R אונליין