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

Wytłumaczenie kodu

Object Storage Arubacloud
0 głosów
307 wizyt
pytanie zadane 2 listopada 2021 w Python przez qwert 100 Obywatel (1,250 p.)

Witam, nie rozumiem co tu się właśnie stało, a na necie nie mogę znaleźć. Dokładnie chodzi mi o części kodu po return. Miałem znaleźć sumę wszystkich numerów od 1 do num.

def summation(num):
    return num*(num+1)//2

Lub

def summation(num):
    return sum(xrange(num + 1))

Z góry dziękuje za wyrozumiałość

1
komentarz 2 listopada 2021 przez adrian17 Ekspert (344,860 p.)

num*(num+1)//2

Tutaj nie ma nic specyficznego dla pythona, to jest zwykłe wyrażenie matematyczne.

xrange

Nie wiem skąd się uczysz, ale to jest przestarzałe od 10+ lat. Python już od dawna nie ma xrange.

komentarz 3 listopada 2021 przez qwert 100 Obywatel (1,250 p.)
Na codewars widziałem w odpowiedziach jak ktoś tak napisał to się zaciekawiłem
komentarz 3 listopada 2021 przez Oscar Nałogowiec (29,320 p.)

Wyjaśnienie matematyki:

Bierzemy dwa ciągi - jeden wprost, drugi od końca


    1  2  3  4  5  6  7  8  9 10 11 12
+  12 11 10  9  8  7  6  5  4  3  2  1   
---------------------------------------
   13 13 13 13 13 13 13 13 13 13 13 13  

sumujemy - każda suma jest taka sama.
każda suma to pierwszy + ostatni
tych sum jest tyle ile elementów ciągu

(liczba elementów)(ostatni + pierwszy) / 2 
dzielone przez dwa bo zsumowane zostały 2 ciągi

 

1 odpowiedź

+1 głos
odpowiedź 2 listopada 2021 przez wizarddos Nałogowiec (25,930 p.)
wybrane 3 listopada 2021 przez qwert 100
 
Najlepsza

Co do pierwszego to jest coś mniej więcej takiego

załóżmy że

num = 5

Więc kod

num*(num+1)//2

- mnoży num * num+1 czyli

5 * 6 
# bo 5+1 = 6

- i wykonuje dzielenie z zaokrągleniem

30 // 2 = 15
#bo 30 : 2 = 15

operator // to dzielenie z zaokrągleniem, jak mówi dokumentacja

 

Mathematical division that rounds down to nearest integer. The floor division operator is //. For example, the expression 11 // 4 evaluates to 2 in contrast to the 2.75 returned by float true division. Note that (-11) // 4 is -3 because that is -2.75 rounded downward.

(trochę więcej)

 

Co do kodu nr 2

xrange to podobna funkcja do range

a ten kod to coś w rodzaju:

zsumuj wszystkie wartości które mieszczą się w przedziale od 0 do inkrementowanej liczby num

(przykłady z xrange)

 

 

1
komentarz 2 listopada 2021 przez adrian17 Ekspert (344,860 p.)

operator // to dzielenie z zaokrągleniem

Nie zaokrągleniem, tylko z podłogą (floor).

Podobne pytania

0 głosów
0 odpowiedzi 201 wizyt
pytanie zadane 12 lutego 2023 w Inne języki przez Martita Bywalec (2,500 p.)
0 głosów
0 odpowiedzi 115 wizyt
pytanie zadane 2 października 2019 w Inne języki przez Amidamaru12 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 153 wizyt
pytanie zadane 11 listopada 2019 w C i C++ przez Comparion Obywatel (1,810 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 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!

...