Menambahkan Siswa
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 22 dari 64.
Dalam proyek ini, kamu membuat buku nilai yang membaca perintah, satu per baris, lalu membalas setiap perintah. Dalam lima langkah, buku nilai ini akan belajar menambahkan siswa, mencatat nilai, melaporkan rata-rata, dan menemukan siswa dengan nilai tertinggi. Setiap langkah mengembangkan fungsi gradebook(commands) yang sama.
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPNilai tersimpan dalam list bernama: nama setiap siswa dipetakan ke vektor numerik berisi nilai siswa tersebut. List cocok karena setiap siswa memiliki beberapa nilai.
grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))Output:
[1] 1
[1] "ada"numeric(0) adalah vektor numerik kosong. Menggunakan c() tidak akan berhasil di sini: hasilnya adalah NULL, dan menetapkan NULL akan menghapus entri list.
Setiap perintah dipisahkan berdasarkan spasi, jadi parts[1] adalah perintah dan parts[2] adalah namanya. Rangkaian if / else if menentukan tindakan yang harus dilakukan:
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
# tangani ADD
}
}Balasan dikumpulkan dengan replies <- c(replies, ...) dan dikembalikan di akhir.
Tantangan
MudahLengkapi gradebook(commands) untuk perintah pertama:
ADD <name>: jika siswa tersebut baru, simpan tanpa nilai dan balasadded <name>. Jika nama tersebut sudah tersimpan, balas<name> already exists.
Kode yang disediakan meneruskan setiap baris input ke gradebook() sebagai satu perintah dan mencetak setiap balasan yang dikembalikan pada barisnya sendiri. Nama terdiri dari satu kata dengan huruf kecil, dan input hanya berisi perintah yang dijelaskan sejauh ini.
Coba sendiri
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
# Tulis kodemu di sini
}
replies
}
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online