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!
Wyzwanie
ŁatwyWczytaj dwa wiersze danych wejściowych i wyświetl spersonalizowane powitanie.
Otrzymasz dwa dane wejściowe:
- Imię
- 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ńcuTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 2
Operatory logiczne (AND, OR)Operatory logiczne, część 2 (NOT)Powtórka — prosta logikaLogika wektoryzowana, część 1Logika wektoryzowana, część 27Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika10FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz2Zmienne i typy danych
Liczbowy typ danychCałkowity typ danychZnakowy typ danychLogiczny typ danychSprawdzanie typów danychKonwencje nazewnictwaBrakujące wartości: NAPodsumowanie – tworzenie zmiennych8Pętle
Pętla forPętla whilePrzerwijNastępna iteracja (continue)Powtórka — silniaGenerowanie sekwencji (seq, :)Pętle zagnieżdżonePowtórka — dynamiczne wprowadzanie danych3Operatory, część 1
Operatory arytmetyczneDzielenie całkowite i moduloOperatory przypisaniaPowtórka — prosta matematykaOperatory porównania6Podstawowe wejście/wyjście
Wyświetlanie danychCat jako wyjścieWyjście z użyciem zmiennychOdczyt danych wejściowych za pomocą readline()Podstawy konwersji typówPowtórka — kalkulator wiekuPowtórka — prawda czy fałsz9Funkcje
Deklarowanie funkcjiArgumenty funkcjiWartości zwracanePowtórzenie — funkcja SigmaPowtórzenie — funkcja walidującaDomyślne wartości parametrówPoćwicz samodzielnie: Kompilator R online