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

pisanie "pythonic" kodu

VPS Starter Arubacloud
0 głosów
136 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 (40,650 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ź 204 wizyt
pytanie zadane 12 czerwca 2022 w Python przez koleś34 Gaduła (3,270 p.)
0 głosów
2 odpowiedzi 284 wizyt
pytanie zadane 1 maja 2022 w Python przez koleś34 Gaduła (3,270 p.)
0 głosów
0 odpowiedzi 312 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...