Jeszcze jedno pytanie. W sieci znalazłem takie zadanie: napisać kod, który narysuje połowę choinki złożonej z 3 trójkątów, a kolejny trójkąt będzie miał podstawę o +1 dłuższą niż poprzedni. Zadanie można rozwiązać przez użycie 3 pętli for. "Lepsze" rozwiązanie problemu znalazłem sam. Chodziło o zwiększanie zakresu pętli for o jeden w każdej iteracji pętli, tak by zmniejszyć liczbę pętli do minimum . Nie potrafiłem jednak zapisać tego w kodzie Pythona. nie wiedziałem, że można zastosować taki zapis in range(liczba, zmienna), operowałem na liczbach. Dlatego posiłkowałem się kodem znalezionym w sieci.
Od siebie dołożyłem jeszcze jeden warunek: wyświetlać choinkę złożoną z n trójkątów, gdzie n jest liczbą podaną przez użytkownika.
W trakcie eksperymentowania z kodem z sieci (instrukcja input +pierwsza pętla for moje), zauważyłem pewną prawidłowość
Przy takim kodzie:
Kopiuj
liczba_segmentow_choinki=int(input("podaj liczbe segmentow choinki"))
m=3
for i in range (liczba_segmentow_choinki):
for j in range (1,m):
print(j*"#")
m=m+1
Przykładowo podaje 3 na liczba_segmentow_choinki
Przy takim zapisie program wyświetla 3 trójkąty, pierwszy o wysokości 2 , drugi 4, trzeci 8 "haszy"
Wygląda to jak jakiś ciąg geometryczny
Przy poniższym kodzie, osiągam wynik zamierzony, czyli 3 trójkąty pierwszy o wysokości 2, drugi 3, trzeci 4 "haszy"
Kopiuj
liczba_segmentow_choinki=int(input("podaj liczbe segmentow choinki"))
m=3
for i in range (liczba_segmentow_choinki):
for j in range (1,m):
print(j*"#")
m=m+1
Różnica związana jest chyba z tym fragmentem kodu:
Kopiuj
for j in range (1,m):
print(j*"#")
m=m+1
for i m takie samo wcięcie
Kopiuj
for j in range (1,m):
print(j*"#")
m=m+1
instrukcja przypisana m=m+1 równa z wcięciem print
Skąd się bierze taka różnica w wyświetlaniu trójkątów ?
Dziękuje z góry za każde wyjaśnienie problemu.