Menerima Input Pengguna
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 34 dari 78.
Tantangan
MudahPada pelajaran sebelumnya, kamu membuat pesan sambutan untuk Bill Split Calculator. Sekarang, tambahkan fungsi untuk menerima input pengguna guna menghitung tagihan.
Setelah pesan sambutan yang sudah ada, baca tiga input dari pengguna:
- Total tagihan
- Persentase tip (sebagai bilangan bulat, misalnya
15untuk 15%) - Jumlah orang yang membagi tagihan
Dalam skrip R yang dijalankan secara noninteraktif (seperti di platform ini), input dibaca dari aliran input standar. Untuk melakukannya, pertama-tama buka koneksi ke stdin menggunakan file(), lalu baca setiap baris dengan readLines(), dan tutup koneksi setelah selesai:
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)Berikut fungsi setiap bagian:
file("stdin", "r"): membuka aliran input standar untuk dibaca dan menyimpannya diconreadLines(con, n = 1): membaca tepat satu baris dari koneksi tersebut. Catatan:readLines()berbeda darireadline():readLines()bekerja dengan koneksi file (termasukstdin) dan dapat membaca beberapa baris sekaligus menggunakann =, sedangkanreadline()hanya bekerja secara interaktif di konsol RsuppressWarnings(...): menyembunyikan peringatan yang tidak berbahaya dan muncul saat membaca daristdindengan cara ini. Saat R membaca daristdindalam skrip, terkadang muncul peringatan seperti "incomplete final line" meskipun semuanya berfungsi dengan benar. Membungkus pemanggilan dengansuppressWarnings()menyembunyikan pesan ini agar tidak memenuhi output. Ini tidak memengaruhi nilai yang dibacaas.numeric(...): mengubah input teks menjadi angkaclose(con): menutup koneksi setelah semua input dibaca
Simpan ketiga nilai dalam variabel bernama bill, tip_percent, dan people.
Setelah membaca input, tampilkan pesan konfirmasi yang menunjukkan nilai yang dimasukkan dengan format berikut:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Gunakan cat() untuk semua output dan sertakan karakter baris baru \n jika diperlukan. Gunakan sep = "" dalam setiap pemanggilan cat() agar tidak ada spasi yang tidak diinginkan.
Secara default, cat() menyisipkan spasi di antara setiap item yang dicetaknya. Contohnya:
cat("Bill: $", 120, "\n") # prints: Bill: $ 120 Perhatikan spasi yang tidak diinginkan antara $ dan 120, serta sebelum karakter baris baru. Menambahkan sep = "" memberi tahu cat() untuk menggunakan string kosong sebagai pemisah, sehingga tidak ada yang disisipkan di antara item:
cat("Bill: $", 120, "\n", sep = "") # prints: Bill: $120Terapkan pola ini pada ketiga baris konfirmasi:
cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")Contohnya, jika inputnya adalah 120, 18, dan 4, output lengkapnya seharusnya:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4Coba sendiri
# 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")Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika (AND, OR)Operator Logika Bagian 2 (NOT)Rangkuman: Logika SederhanaLogika Tervektorisasi Bagian 1Logika Tervektorisasi Bagian 27Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input Pengguna10FizzBuzz dengan Sentuhan Unik
Ikhtisar PermainanFungsi FizzBuzz2Variabel dan Tipe Data
Tipe Data NumerikTipe Data IntegerTipe Data KarakterTipe Data LogikaMemeriksa Tipe DataKonvensi PenamaanNilai yang Hilang: NARingkasan: Membuat Variabel8Perulangan
For LoopWhile LoopBreakBerikutnya (Continue)Ringkasan: FaktorialPembuatan Urutan (seq, :)Loop BersarangRingkasan: Input Dinamis3Operator Bagian 1
Operator AritmetikaPembagian Bilangan Bulat dan ModuloOperator PenugasanRangkuman: Matematika SederhanaOperator Perbandingan6Dasar input/output
Cetak outputcat untuk outputOutput dengan variabelMembaca input dengan readline()Dasar konversi tipe dataRingkasan: Kalkulator usiaRingkasan: Benar atau salah9Fungsi
Mendeklarasikan FungsiArgumen FungsiNilai KembalianUlasan: Fungsi SigmaUlasan: Fungsi ValidasiNilai Parameter Default12Melakukan Iterasi pada Urutan
Mengiterasi Elemen VektorMenggunakan seq_along()Mengiterasi Karakter (strsplitFungsi Manipulasi stringLatihan sendiri: Compiler R online