Zagnieżdżone if - else
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 25 z 78.
Czasami dwie opcje nie wystarczą. Co zrobić, jeśli musisz sprawdzić wiele warunków i obsłużyć każdy z nich inaczej? Możesz umieścić instrukcję if-else wewnątrz innego bloku if lub else, aby tworzyć bardziej złożone ścieżki decyzyjne.
score <- 85
if (score >= 90) {
print("Grade: A")
} else {
if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}
}R najpierw sprawdza, czy wynik wynosi 90 lub więcej. Ponieważ 85 nie spełnia tego warunku, przechodzi do bloku else.
Wewnątrz kolejny warunek if sprawdza, czy wynik wynosi co najmniej 80. Ponieważ 85 spełnia ten warunek, wyświetla „Grade: B”.
W R można zapisać to czytelniej, używając else if:
score <- 85
if (score >= 90) {
print("Grade: A")
} else if (score >= 80) {
print("Grade: B")
} else {
print("Grade: C or below")
}Oba podejścia działają tak samo, ale else if sprawia, że kod jest bardziej płaski i łatwiejszy do odczytania. Możesz łączyć ze sobą dowolną liczbę bloków else if, a R wykona tylko pierwszy blok, którego warunek jest prawdziwy.
Wyzwanie
ŁatwyUtwórz system ustalania cen biletów, używając zagnieżdżonych instrukcji if-else lub else if, aby określić cenę biletu na podstawie wieku.
Otrzymujesz następującą zmienną:
age <- 25Napisz serię warunków, aby określić i wyświetlić cenę biletu na podstawie tych zasad:
- Jeśli wiek jest mniejszy niż 5, wyświetl
"Free" - Jeśli wiek wynosi od 5 do 12 (włącznie), wyświetl
"$5" - Jeśli wiek wynosi od 13 do 17 (włącznie), wyświetl
"$8" - Jeśli wiek wynosi od 18 do 64 (włącznie), wyświetl
"$12" - Jeśli wiek wynosi 65 lub więcej, wyświetl
"$7"
Użyj funkcji print(), aby wyświetlić wynik.
Spróbuj swoich sił
# Podana zmienna
age <- 25
# TODO: Napisz swój kod poniżej
# Użyj zagnieżdżonych instrukcji if-else lub else if, aby ustalić cenę biletu
# na podstawie podanych zasad dotyczących wiekuTa 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