Ustanowiłem bardzo podstawowe obliczenie, aby ćwiczyć zainteresowanie złożone przez zmienną liczbę lat. Definiuję podobne zmienne:

>>> initial = 100
>>> rate = 1.1
>>> years = 5
>>> final = (initial*rate**years)

Myślę, że ten kawałek kodu jest w porządku, ponieważ mogę uzyskać poprawną odpowiedź:

>>> print(final)
161.051...

Ok, więc teraz chcę przypisać nową wartość zmienną i spróbować ponownie z nową zmienną. Więc robię to:

>>> rate = 1.05
>>> print(final)
161.051...

Bez względu na to, ile razy ponowne przypisuję zmienne, odpowiedź pozostanie taka sama.

Jak to jest brak? Mam niejasne wspomnienie czegoś o nazwie arytmetyczne wskaźnik i zastanawiam się, czy to w ogóle istotne, ale nie mogę znaleźć odpowiedzi, gdzie.

-1
BigDog 28 czerwiec 2017, 02:57

3 odpowiedzi

Najlepsza odpowiedź

Zgodnie z uwagami na temat pytań najprostszy sposób, aby coś zmienić, jak to jest określenie funkcji, która wykonuje obliczenia.

Na przykład.

def calculate_final_loan_principal(initial, rate, years):
    return initial*rate**years

Może być wtedy nazywa się tak:

>>> calculate_final_loan_principal(initial=100, rate=1.1, years=5)
161.05100000000004
>>> calculate_final_loan_principal(initial=100, rate=1.05, years=5)
127.62815625000003

Nazwy parametrów były tam do jasności, ale nie są rzeczywiście potrzebne podczas wywołania funkcji:

>>> calculate_final_loan_principal(100, 1.05, 5)
127.62815625000003

Lub, jeśli zdefiniujesz klasę, możesz użyć właściwości. Rozważałbym to przesłonięć, ale opuścił opowiedzą o tym.

class CompoundInterestLoan:
    def __init__(self, initial, rate, years):
        self.initial = initial
        self.rate = rate
        self.years = years

    @property
    def final(self):
        return self.initial*self.rate**self.years

Następnie musisz utworzyć instancję klasy, aby go użyć:

>>> loan = CompoundInterestLoan(initial=100, rate=1.1, years=5)
>>> loan.final
161.05100000000004
>>> loan.rate = 1.05
>>> loan.final
127.62815625000003
0
David Scarlett 28 czerwiec 2017, 11:33

Dlaczego wartość ostatniej zmiany, gdy nie będziesz go ponownie obliczyć! Po przypisaniu nowej wartości współczynnika trzeba ponownie obliczyć wartość ostatniego. Wtedy tylko Python obliczy nową wartość finału.

>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)
127.62815625
0
Ank 28 czerwiec 2017, 00:06

Powiedzmy, że masz 2 wiadra farby: czerwony i niebieski. Biorę trochę farby z każdego i wymieszasz go razem w trzecim wiadrze. Niesamowite! Teraz masz dodatkowy, fioletowy kolor. Teraz zastępujesz czerwoną wiadro farby z zielonym wiadrem do malowania. Będzie kolorowy zmiana wiadra? Nie, dlaczego miałby? Nie dotykałeś go po wymieszaniu kolorów.

Teraz porozmawiajmy o swoim kodzie. Nigdy nie zmieniasz zmiennej "Final" po mnożenia, właśnie zmieniłeś jeden z czynników. Aby zauważyć, że zmiana musisz ponownie pomnożyć:

>>>rate=1.05
>>>final=(initial*rate**years)
>>>print(final)
3
Michal K 28 czerwiec 2017, 00:08