Pętla w Pythonie - dzielniki

0

Cześć i czołem, wczoraj zacząłem naukę języka Python (jest to moje pierwsze zetknięcie z programowaniem) i dziś trafiłem na pierwszy problem, dla Was pewnie banalny do rozwiązania, lecz dla mnie to tragedia, nad którą spędziłem już pół dnia, mianowicie napisałem taki kod:

liczba = 20
index = 1
while index <= liczba:
    if liczba%index==0:
        print(index)
        index = index + 1

który ma za zadanie znaleźć całkowite dzielniki podanej liczby. Niestety nie działa on jak należy i zwykle pokazuje (zależnie od podanej liczby) 1 lub 1 i 2, czasem zdarzają się liczby 1 - 3, 1 - 6, itp. nie wiem od czego to zależy. Nadmienię, że przy próbie zamknięcia IDLE pokazuje się okno "Your program is still running". Czy wie ktoś co może być tego powodem i mógłļy rozwiązać mój największy problem w dziedzinie programowania w moim dotychczasowym życiu?

1

W pythonie ważne są wcięcia, więc przed index = index + 1 musi być taka sama ilośćią spacji/tabów co if. Bez tego będzie się zwiększał tylko jeśli znajdzie dzielnik, przy pierwszym "nie dzielniku" while będzie się wykonywał w nieskończoność. Oto twój program po tej poprawce

liczba = 20
index = 1
while index <= liczba:
    if liczba%index==0:
        print(index)
    index = index + 1

W takich sytuacjach przydatne bywają dodatkowe print-y, w tym przypadku wyświetlanie index co obrót while-a pozwoliło by ci domyśleć się o co chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1