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şturdunuz. Şimdi, fatura hesaplaması için kullanıcı girişini toplama işlevini ekleyin.

Mevcut karşılama mesajınızdan sonra, kullanıcıdan üç giriş okuyun:

  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ı

Etkileşimli olmayan (bu platformdaki gibi) R betiklerinde, giriş standart giriş akışından (standard input stream) okunur. Bunu yapmak için önce file() kullanarak stdin'e bir bağlantı açın, ardından readLines() ile her satırı okuyun ve işiniz bittiğinde bağlantıyı kapatın:

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)

İşte her bir parçanın ne yaptığı:

  • file("stdin", "r") — okuma için standart giriş akışını açar ve bunu con içinde saklar
  • readLines(con, n = 1) — bu bağlantıdan tam olarak bir satır okur. Not: readLines(), readline()'dan farklıdır — readLines() dosya bağlantılarıyla (stdin dahil) çalışır ve n = kullanarak aynı anda birden fazla satırı okuyabilir, oysa readline() yalnızca R konsolunda etkileşimli olarak çalışır
  • suppressWarnings(...)stdin'den bu şekilde okuma yaparken ortaya çıkan zararsız uyarıları susturur. R bir betik içinde stdin'den okuma yaptığında, her şey doğru çalışsa bile bazen "incomplete final line" gibi bir uyarı verir. Çağrıyı suppressWarnings() içine almak, bu mesajları gizleyerek çıktınızı karıştırmalarını önler — okunan değerleri etkilemez
  • as.numeric(...) — metin girişini bir sayıya dönüştürür
  • close(con) — tüm girişler okunduktan sonra bağlantıyı kapatır

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

Girişleri okuduktan sonra, girilenleri aşağıdaki formatta gösteren bir onay mesajı görüntüleyin:

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

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

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

cat("Bill: $", 120, "\n")   # şunu yazdırır: Bill: $ 120 

$ ile 120 arasında ve yeni satırdan önceki istenmeyen boşluklara dikkat edin. sep = "" eklemek, cat()'e ayırıcı olarak boş bir dize kullanmasını söyler, böylece öğeler arasına hiçbir şey eklenmez:

cat("Bill: $", 120, "\n", sep = "")   # şunu yazdırır: Bill: $120

Bu deseni her üç onay satırına da uygulayın:

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

Örneğin, girişler 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