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

Pierwszy program w python, czy ten kod jest okej?

Object Storage Arubacloud
0 głosów
230 wizyt
pytanie zadane 5 października 2022 w Python przez Daaa22 Dyskutant (8,250 p.)

Nabazgrałem program który mnoży wielomiany i podaje wynik w postaci listy

def multiply_two_polynomials(A, B):
    return_polynomial = (len(A) + len(B) - 1)*[int(0)]
    for i in range(len(A)):
        for j in range(len(B)):
            return_polynomial[i+j] += A[i]*B[j]
    return return_polynomial

def multiply(polynomialList):
    if len(polynomialList) < 2:
        return 0
    elif len(polynomialList) == 2:
        return multiply_two_polynomials(polynomialList[0], polynomialList[1])
    else:
        polynomialList[-2] = multiply_two_polynomials(polynomialList[-1], polynomialList[-2])
        polynomialList.pop()
        return multiply(polynomialList)

polynomial = []

print("Podaj ilosc wielomianow: ")

for i in range(int(input())):
    print("Podaj stopien " + str(i + 1) + ". wielomianu: ")
    polynomial.append([])
    for j in range(int(input()) + 1):
        print("Podaj " + str(j + 1) + ". wspolczynnik " + str(i + 1) + ". wielomianu: ")
        polynomial[i].append(int(input()))

print(multiply(polynomial))

czy ten kod jest okej? Bo działa, ale dziwnie mi wygląda linijka

return_polynomial = (len(A) + len(B) - 1)*[int(0)]

Lepiej napisać

polynomialList.pop()
return multiply(polynomialList)

czy może

return multiply(polynomialList[:len(polynomialList)-1])

? Czy może jeszcze coś lepszego jest? I nie chodzi mi o czytelność tylko możliwie największą wydajność. Gdzie mogę sprawdzić jakie rozwiązania jaką dokładnie mają wydajność? Bo podejrzewam że często mogę się spotkać z problemem który ma kilka rozwiązań, a które jest lepsze nie jest oczywiste

komentarz 5 października 2022 przez tmar1212 Bywalec (2,600 p.)
2
komentarz 5 października 2022 przez Ehlert Ekspert (212,670 p.)

@Daaa22, 

I nie chodzi mi o czytelność tylko możliwie największą wydajność.

To nie pisz w Pythonie xD

1
komentarz 6 października 2022 przez manjaro Nałogowiec (37,390 p.)
A to w Pythonie nie można optymalizować kodu?
komentarz 6 października 2022 przez Ehlert Ekspert (212,670 p.)
Python daję mnóstwo narzędzi do tego aby kod był czytelny, skalowalny i testowalny. Nie należy o nich zapominać idąc w wydajność zwłaszcza przy tak trywialnych zadaniach jak tutaj.

1 odpowiedź

+2 głosów
odpowiedź 5 października 2022 przez Ehlert Ekspert (212,670 p.)
wybrane 6 października 2022 przez Daaa22
 
Najlepsza
  1. Nie ma typów
  2. Dodaj sprawdzenie czy plik jest bezpośrednio wywołany czy dołączony poprzez __main__
  3. Zmienne małymi literami
  4. Polecam ogarnąć tego typa: https://m.youtube.com/watch?v=LrtnLEkOwFE
komentarz 6 października 2022 przez Daaa22 Dyskutant (8,250 p.)
Co to znaczy że nie ma typów?
komentarz 24 października 2022 przez tubylec01 Obywatel (1,260 p.)
Autorowi postu chodzi zapewne o typy zmiennych (int, float, bool, itp.), przy czym w Python nie trzeba deklarować ale można, tak jak pokazano pod linkiem wklejonym powyżej.

Podobne pytania

+1 głos
1 odpowiedź 1,659 wizyt
+1 głos
2 odpowiedzi 569 wizyt
+2 głosów
3 odpowiedzi 666 wizyt
pytanie zadane 5 lutego 2019 w Python przez Byczek_ Bywalec (2,570 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 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!

...