• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pisanie "pythonic" kodu

Object Storage Arubacloud
0 głosów
137 wizyt
pytanie zadane 22 grudnia 2019 w Python przez hakiros54 Obywatel (1,160 p.)

Witam, robiłem zadanie na codewars https://www.codewars.com/kata/equal-sides-of-an-array/train/python
w skrócie polega na tym że funkcja ma zwrócić indeks listy dla którego suma liczb na lewo od niego jest równa sumie liczb na prawo od niego. Próbuje zrobić to w stylu pythona i napisałem coś takiego, ale zwraca mi synaxerror i nie mam pojęcia gdzie jest błąd, macie jakiś pomysł?

def find_even_index(arr):
    return i if sum(arr[:i]) == sum(arr[i+1:]) for i in range(len(arr))

Swoją drogą poleci ktoś jakiś tutorial do pythona który nie jest jednocześnie wprowadzeniem do programowania żeby nie tłumaczyli od nowa jak działa pętla itd.?

komentarz 22 grudnia 2019 przez reaktywny Nałogowiec (41,050 p.)

Swoją drogą poleci ktoś jakiś tutorial do pythona który nie jest jednocześnie wprowadzeniem do programowania żeby nie tłumaczyli od nowa jak działa pętla itd.?

Niestety mało jest takich, zwykle trzeba pominąć po prostu początkowe "rozdziały" / sekcje.

1 odpowiedź

+1 głos
odpowiedź 22 grudnia 2019 przez RafalS VIP (122,820 p.)

Brakuje Ci nawiasów. Kwadratowych dla list comprehension. Okrągłych dla generatora. W obu przypadkach zwracasz listę/generator, a nie pojedynczy indeks. Dodatkowo if musi wystąpić za instrukcją for. Tak wygląda całość bez syntax errorów:

def find_even_index(arr):
    return [i for i in range(len(arr)) if sum(arr[:i]) == sum(arr[i+1:])]

A w ten sposób wyciągniesz pierwszy element, o ile taki istnieje, w przeciwnym wypadku None

def find_even_index(arr):
    return next((i for i in range(len(arr)) if sum(arr[:i]) == sum(arr[i + 1 :])), None)

 

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 12 czerwca 2022 w Python przez koleś34 Gaduła (3,270 p.)
0 głosów
2 odpowiedzi 303 wizyt
pytanie zadane 1 maja 2022 w Python przez koleś34 Gaduła (3,270 p.)
0 głosów
0 odpowiedzi 333 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...