Pętla zagnieżdżona
Część sekcji Podstawy ścieżki GDScript w Coddy. Lekcja 49 z 92.
Zagnieżdżona pętla to pętla znajdująca się wewnątrz innej pętli. Przy każdej iteracji pętli zewnętrznej pętla wewnętrzna wykonuje wszystkie swoje iteracje:
var rows := 3
var cols := 2
for i in range(rows):
print("Outer: ", i)
for j in range(cols):
print(" Inner: ", j)Outer: 0
Inner: 0
Inner: 1
Outer: 1
Inner: 0
Inner: 1
Outer: 2
Inner: 0
Inner: 1Wewnętrzny blok jest wcięty o dwa poziomy. Wykonuje się łącznie rows x cols = 3 x 2 = 6 razy. j zaczyna od 0 za każdym razem, gdy wykonuje się pętla zewnętrzna, natomiast rows i cols pozostają takie same i tylko informują pętle, kiedy mają się zatrzymać.
Te dwie pętle wymagają różnych nazw zmiennych. Zapisanie for i wewnątrz innego for i jest błędem zgłaszanym przed uruchomieniem programu.
Zagnieżdżone pętle przydają się do tworzenia wierszy i kolumn. print() zawsze kończy wiersz, więc aby wypisać wiersz gwiazdek, najpierw zbuduj go w ciągu znaków, a następnie wypisz, gdy pętla wewnętrzna się zakończy:
for row in range(2):
var line := ""
for col in range(3):
line += "*"
print(line)***
***Pętla zewnętrzna wykonuje się raz dla każdego wiersza, a pętla wewnętrzna dodaje jedną gwiazdkę w każdej kolumnie. Instrukcja break wewnątrz pętli wewnętrznej zatrzymuje tylko pętlę wewnętrzną: pętla zewnętrzna przechodzi do następnej iteracji.
Wyzwanie
ŁatwyProgram wczytuje dwie liczby całkowite: rows i cols.
Użyj zagnieżdżonych pętli, aby wypisać prostokąt z gwiazdek (*) złożony z rows wierszy i cols gwiazdek w każdym wierszu.
Dla danych wejściowych 3 i 4 wynikiem jest:
****
****
****Użyj nowego licznika w każdej pętli (na przykład row dla wierszy i col dla gwiazdek w wierszu) i porównuj go z rows lub cols. Nie zmieniaj samych rows ani cols: każdy wiersz potrzebuje ponownie cols.
Spróbuj swoich sił
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
# Pętla zewnętrzna: jedna iteracja na każdy wiersz
# Pętla wewnętrzna: dodaj jedną gwiazdkę dla każdej kolumny
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneDzielenie całkowiteOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
WyjścieWyjście ze zmiennymiFormatowanie ciągów znakówWejścieRzutowanie typówPowtórka — do 120Powtórka — prawda czy fałsz10Funkcje
Deklarowanie funkcjiArgumentyZwracanie wartościTypy zwracanych wartościPowtórka — funkcja sigmaPowtórka — funkcja walidującaWartości domyślne5Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operator warunkowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych14Zaawansowane tablice
Wycinanie fragmentów tablicyOperatory sekwencjiPrzynależnośćSortowanie i odwracanie3Zmienne, część 2
Deklarowanie typówWnioskowanie o typachStałePowtórka — inicjalizacja zmiennychKonwersja typów6Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka – prosty kalkulatorZagnieżdżone if - elseInstrukcja match9Pętle
Pętla forPętla whilePrzerwijKontynuujPowtórka — silniaFunkcja rangePętla zagnieżdżonaPowtórka — dane wejściowe dynamicznePoćwicz samodzielnie: Kompilator GDScript online