Menu
Coddy logo textTech

Kullanıcıdan Girdi Alma

Coddy'nin R Journey'sinin Temeller bölümünün bir parçası. Ders 34 / 78.

challenge icon

Görev

Kolay

Önceki derste Bill Split Calculator için bir karşılama mesajı oluşturdun. Şimdi fatura hesaplaması için kullanıcı girdilerini toplama işlevini ekle.

Mevcut karşılama mesajından sonra kullanıcıdan üç girdi oku:

  1. Toplam fatura tutarı
  2. Bahşiş yüzdesi (tam sayı olarak; örneğin %15 için 15)
  3. Faturayı paylaşan kişi sayısı

Bu platformdaki gibi etkileşimsiz çalışan R betiklerinde girdi, standart girdi akışından okunur. Bunu yapmak için önce stdin kullanarak file() ile bir bağlantı aç, ardından her satırı readLines() ile oku ve işin bittiğinde bağlantıyı kapat:

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)

Her bölümün yaptığı işlem şöyledir:

  • file("stdin", "r"): standart girdi akışını okumak üzere açar ve con içinde saklar
  • readLines(con, n = 1): bu bağlantıdan tam olarak bir satır okur. Not: readLines(), readline() işlevinden farklıdır: readLines() dosya bağlantılarıyla ( stdin dahil) çalışır ve n = kullanarak aynı anda birden fazla satır okuyabilir; readline() ise yalnızca R konsolunda etkileşimli olarak çalışır
  • suppressWarnings(...): bu şekilde stdin üzerinden okuma yapılırken ortaya çıkan zararsız uyarıları sessize alır. R bir betikte stdin üzerinden okuma yaptığında, her şey doğru çalışsa bile bazen "incomplete final line" gibi bir uyarı üretir. Çağrıyı suppressWarnings() içine almak, bu mesajları gizleyerek çıktını gereksiz yere kalabalıklaştırmalarını önler. Okunan değerleri etkilemez
  • as.numeric(...): metin girdisini sayıya dönüştürür
  • close(con): tüm girdiler okunduktan sonra bağlantıyı kapatır

Üç değeri bill, tip_percent ve people adlı değişkenlerde sakla.

Girdileri okuduktan sonra, girilen değerleri aşağıdaki biçimde gösteren bir doğrulama mesajı yazdır:

Bill: $[bill]
Tip: [tip_percent]%
People: [people]

Tüm çıktılar için cat() kullan ve gerektiği yerlerde satır sonu karakterleri \n ekle. İstenmeyen boşlukları önlemek için her sep = "" çağrısında cat() kullan.

Varsayılan olarak cat(), yazdırdığı her öğenin arasına bir boşluk ekler. Örneğin:

cat("Bill: $", 120, "\n")   # prints: Bill: $ 120 

$ ile 120 arasında ve satır sonundan önce oluşan istenmeyen boşluklara dikkat et. sep = "" eklemek, cat() işlevine ayırıcı olarak boş bir dize kullanmasını söyler; böylece öğelerin arasına hiçbir şey eklenmez:

cat("Bill: $", 120, "\n", sep = "")   # prints: Bill: $120

Bu kalıbı üç doğrulama satırının tümüne uygula:

cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")

Örneğin girdiler 120, 18 ve 4 ise tam çıktı şu şekilde olmalıdır:

Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4

Kendin dene

# 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")

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi