متوسطات الطلاب
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 24 من 64.
التحدي
سهلأضف الأمر AVG. حافظ على عمل كل أمر من الخطوات السابقة تمامًا كما كان من قبل.
AVG <name>: أرجِعno student <name>للطالب غير المعروف، و<name>: no gradesللطالب الذي لا يملك درجات، وإلا فأرجِع<name>:متبوعًا بمتوسط درجاته مقربًا إلى منزلة عشرية واحدة، مثلada: 88.8.
ستكون دالة مساعدة تحوّل متجهًا من الدرجات إلى no grades أو إلى المتوسط المنسّق مفيدة مرة أخرى في الخطوة التالية.
يمرّر الكود المزوّد كل سطر إدخال إلى gradebook() باعتباره أمرًا واحدًا، ويطبع كل رد مُعاد في سطر مستقل. الاسم كلمة واحدة بأحرف لاتينية صغيرة، ويحتوي الإدخال فقط على الأوامر الموضحة حتى الآن.
جرّب بنفسك
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
if (name %in% names(grades)) {
replies <- c(replies, paste(name, "already exists"))
} else {
grades[[name]] <- numeric(0)
replies <- c(replies, paste("added", name))
}
} else if (parts[1] == "GRADE") {
if (!(name %in% names(grades))) {
replies <- c(replies, paste("no student", name))
} else {
score <- as.numeric(parts[3])
grades[[name]] <- c(grades[[name]], score)
replies <- c(replies, paste("recorded", score, "for", name))
}
}
}
replies
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت