Przerwij
Część sekcji Podstawy ścieżki R w Coddy. Lekcja 40 z 78.
Czasami trzeba wcześniej przerwać pętlę, zanim wykona wszystkie iteracje. Instrukcja break pozwala natychmiast zatrzymać pętlę, gdy zostanie spełniony określony warunek.
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Wynik:
[1] 1
[1] 2
[1] 3
[1] 4Pętla miała wykonywać się od 1 do 10, ale gdy i osiągnęło 5, instrukcja break całkowicie zatrzymała pętlę. Zauważ, że 5 nigdy nie zostało wyświetlone, ponieważ break kończy wykonywanie natychmiast.
Jest to szczególnie przydatne w przypadku pętli while, gdy szukasz czegoś:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Wynik:
[1] 5Tutaj while (TRUE) normalnie działałaby bez końca, ale break zatrzymuje ją, gdy znajdziemy pierwszą liczbę, której kwadrat jest większy niż 20. Ten wzorzec jest często stosowany, gdy trzeba szukać, aż zostanie spełniony określony warunek.
Wyzwanie
ŁatwyWczytaj liczbę limit z wejścia. Użyj pętli for, aby iterować od 1 do limit, ale przerwij pętlę wcześniej za pomocą break, gdy napotkasz pierwszą liczbę podzielną zarówno przez 3, jak i przez 7.
Wypisz każdą liczbę przed sprawdzeniem warunku. Gdy znajdziesz liczbę podzielną zarówno przez 3, jak i przez 7, wypisz tę liczbę, a następnie przerwij pętlę.
Po zakończeniu pętli wypisz "Loop ended" za pomocą print().
Na przykład, jeśli wejściem jest 30, wynikiem powinno być:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"Pętla zatrzymuje się na 21, ponieważ jest to pierwsza liczba podzielna zarówno przez 3, jak i przez 7 (21 = 3 × 7).
Spróbuj swoich sił
# Wczytaj dane wejściowe
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: Napisz swój kod poniżej
# Użyj pętli for od 1 do limit
# Wypisz każdą liczbę przed sprawdzeniem warunku
# Przerwij pętlę, gdy znajdziesz liczbę podzielną zarówno przez 3, jak i przez 7
# Wskazówka: Użyj operatora %% do sprawdzenia podzielności
# Wypisz "Loop ended" po zakończeniu pętli
print("Loop ended")Ta 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