Menu
CoddyTech

Odczyt danych wejściowych za pomocą readline()

Część sekcji Podstawy ścieżki R w Coddy. Lekcja 29 z 78.

Do tej pory nauczysz się wyświetlać dane wyjściowe. Teraz czas sprawić, by Twoje programy były interaktywne, odczytując dane wejściowe od użytkownika. Funkcja readline() pozwala przechwycić to, co wpisuje użytkownik.

name <- readline()
cat("Hello,", name, "\n")

Gdy ten kod uruchamia się w interaktywnej sesji R (konsoli R lub RStudio), R czeka, aż użytkownik coś wpisze i naciśnie Enter. To, co wpisze, zostaje zapisane w zmiennej name. Jeśli użytkownik wpisze „Alice”, wynikiem będzie: Hello, Alice

Na tej platformie Twój kod działa jako skrypt za pomocą Rscript, więc readline() nie czeka: od razu zwraca pusty ciąg znaków "". Dlatego kod początkowy tego wyzwania w lekcji odczytuje dane wejściowe za pomocą readLines().

Ważna rzecz, którą warto wiedzieć: readline() zawsze zwraca ciąg znaków, nawet jeśli użytkownik wpisze liczbę. Jeśli ktoś wpisze „25”, zostanie ona zapisana jako tekst "25", a nie liczba 25. W następnej lekcji nauczysz się konwertować wartości między typami.

Możesz odczytać wiele danych wejściowych, używając readline() wiele razy:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

W sesji interaktywnej każde wywołanie readline() czeka na osobną linię danych wejściowych od użytkownika.

Podczas łączenia tekstu ze zmiennymi za pomocą cat() między elementami oddzielonymi przecinkiem pojawia się spacja. Czasami trzeba połączyć tekst bez żadnej spacji, na przykład, aby bezpośrednio dołączyć znak interpunkcyjny do słowa. W takich sytuacjach przydaje się paste0(). Łączy ciągi znaków, nie wstawiając między nimi separatora:

city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")

W tym miejscu paste0(city, "!") łączy wartość city i "!" bez spacji, więc jeśli użytkownik wpisze „Paris”, wynikiem będzie: Welcome to Paris!

challenge icon

Wyzwanie

Łatwy

Wczytaj dwa wiersze danych wejściowych i wyświetl spersonalizowane powitanie.

Otrzymasz dwa dane wejściowe:

  1. Imię
  2. Nazwę miasta

Kod początkowy wczytuje już oba dane wejściowe do zmiennych name i city za pomocą readLines(), ponieważ readline() działa tylko w sesji interaktywnej i tutaj niczego nie wczyta. Wyświetl komunikat w następującym formacie:

Welcome, [name] from [city]!

Użyj cat(), aby wygenerować wynik. Pamiętaj, aby na końcu umieścić wykrzyknik oraz znak nowej linii \n.

Na przykład, jeśli danymi wejściowymi są Emma i Paris, wynikiem powinno być:

Welcome, Emma from Paris!

Spróbuj swoich sił

# Odczytaj dane wejściowe
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO: Napisz poniżej kod, który wyświetli powitanie
# Użyj cat(), aby wyświetlić: Welcome, [name] from [city]!
# Nie zapomnij o znaku nowej linii \n na końcu
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator R online