Wypisywanie liczb parzystych z tablicy w określonej kolejności - gdzie mam błąd?

0

mam takie zadanie:

Za pomocą pętli wypisz wszystkie liczby parzyste z tablicy liczby w takiej samej kolejności w jakiej zostały w niej zapisane. Nie wypisuj żadnej liczby, która w tej tablicy znajduje się za liczbą 237.

liczby = [
    951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
    615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
    386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
    399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
    815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
    958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
    743, 527
]

moje rozwiazanie:

i=0
while liczby [i] != 237:
    if liczby % 2 == 0:
        print liczby [i],
        i += 1

Gdzie mam błąd? czy może w ogóle zle do tego podeszłam. Uczę sie pythona od tygodnia a 3 dni siedzę nad tym zadaniem i już w siebie wątpię czy w ogóle się do tego nadaje ;/

0

Nie wiem w czym to próbowałeś uruchomić, ale ja z miejsca dostałem error tu

if liczby % 2 == 0:

powinno być liczby[i]. Dodatkowo i++ masz "za bardzo w prawo" powinno wykonywać się niezależnie od if-a.

osobiście zrobił bym to tak

 for liczba in liczby:
    if liczba % 2 == 0:
        print(liczba)
    elif liczba == 237:
        break
0

zadanie robie na tej stronie: http://www.learnpython.org/pl/Petle

teraz faktycznie zapomniałam o [i] ale wcześniej wpisywałam to [i] i nadal nie szło ;/

0

zadziałało jednak wchodziło o wcięcie ;/ o tym nie pomyślałam jeszcze długa droga przede mną :) ale ważne ze chociaż mój pomysł był dobry 3 dni zabawy przez wcięcie ;p dzięki za pomoc

1

Moje rozwiazanie:

 liczby = [
    951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
    615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
    386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
    399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
    815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
    958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
    743, 527
]

# miejsce na twoj kod
for i in range(len(liczby)):
    if(liczby[i] % 2 == 0):
        print(liczby[i])
    if(liczby[i] == 237):
        break
0
Mały Rycerz napisał(a):

zadziałało jednak wchodziło o wcięcie ;/ o tym nie pomyślałam jeszcze długa droga przede mną :) ale ważne ze chociaż mój pomysł był dobry 3 dni zabawy przez wcięcie ;p dzięki za pomoc

W pythonie ze względu na brak klamer wcięcia determinują "co kiedy się wykona" więc uważaj na nie, bo w przeciwieństwie do np c++ mają znaczenie nie tylko wizualne.

0

Można też w ten sposób

import itertools as it
res = filter(lambda x: not x % 2, it.takewhile(lambda x: x != 237, liczby))
print res

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