Wpis z mikrobloga

#python Cześć. Mam pytanie odnośnie takiego kodu. Mianowicie czy linia 34 powstała z generatora jest równoznaczna liniom 35-38 ? Wyniki wychodzą podobne, któryś z zapisów na pewno jest poprawny a nie mogę wygenerować w obu przypadkach poprawnego wykresu. Wykres który przemielałem przez k i przez pk załączony poniżej. W komentarzu poprawny format wykresu.

Pobierz lukaszwasyl - #python Cześć. Mam pytanie odnośnie takiego kodu. Mianowicie czy linia ...
źródło: comment_5l4Yfq6mTetWiRACERDwlb2O2zMeFCIt.jpg
  • 6
Tak poza całością, to żebyś się przypadkowo nie przejechał na range:
range(1,n) to generator sekwencji <1;n) - czyli da (n-1) elementów [1, 2, ..., n-2, n-1]
range(n) to generator sekwencji <0;n) - czyli da (n) elementów [0, 1, ..., n-2, n-1]
Poza tym widzę dzikie rzutowania przy dzieleniu:
1/2 zawsze da wynik typu float (/ jest dzieleniem zmiennoprzecinkowym)
1//2 zawsze da wynik typu int (// jest dzieleniem liczb całkowitych)
Ogólnie z mojej strony to jeszcze hejtuję poleganie na scope globalnym.
Żeby zobaczyć co robi def gen(n): to trzeba zrobić podróż do środkowych linii w pliku.

Używanie praktyki z def main(): eliminuje nadużywanie scope globalnego - zmienne można zdefiniować w środku i kod jest czytelniejszy: https://stackoverflow.com/a/4041718
@lukaszwasyl: notacja matematyczna przeniesiona do postaci nazwy zmiennych (x_i) nie czyni tego elementu czymś, co zależy od i.

Konstrukty Pythona 3, które to umożliwiają to:
* funkcja def x(i):, którą potem możesz sobie wywołać jako x(i)
* sekwencyjne kolekcje (np. lista, tupla) x = [0,1,2,3,4] czy x = (0,1,2,3,4), a potem używasz jako x[i]
ang. tupla = krotka po naszemu.

Listę/tuplę możesz też sobie wygenerować przez