Как я могу применить циклы, чтобы сбрить линии из этого запутанного калькулятора процентных ставок? - PullRequest
0 голосов
/ 25 февраля 2020
  1. Как мне убрать строчки из этого кода? Я чувствую, что мог бы использовать циклы, чтобы упростить этот процесс.
  2. Я только начал изучать python, чтобы сделать мои занятия по математике более интересными. Я почти ничего не знаю о кодировании, поэтому пример будет очень полезен.
  3. Код должен включать в себя опцию, чтобы записать начальный капитал.
  4. Спасибо!

    capital = float(input("Enter initial capital: "))
    interest_rate = float(input("Enter interest rate: "))
    annual_saving = float(input("Enter annual savings: "))
    year = float(input("Enter number of years of saving: "))
    
    # Y stands for Year
    Y0 = capital + annual_saving
    Y1 = Y0 * (1 + interest_rate)
    Y2 = (Y1 + annual_saving) * (1 + interest_rate)
    Y3 = (Y2 + annual_saving) * (1 + interest_rate)
    Y4 = (Y3 + annual_saving) * (1 + interest_rate)
    Y5 = (Y4 + annual_saving) * (1 + interest_rate)
    Y6 = (Y5 + annual_saving) * (1 + interest_rate)
    Y7 = (Y6 + annual_saving) * (1 + interest_rate)
    Y8 = (Y7 + annual_saving) * (1 + interest_rate)
    Y9 = (Y8 + annual_saving) * (1 + interest_rate)
    Y10 = (Y9 + annual_saving) * (1 + interest_rate)
    Y11 = (Y10 + annual_saving) * (1 + interest_rate)
    
    if year == 1:
        print(Y1)
    if year == 2:
        print(Y2)
    if year == 3:
        print(Y3)
    if year == 4:
        print(Y4)
    if year == 5:
        print(Y5)
    if year == 6:
        print(Y6)
    if year == 7:
        print(Y7)
    if year == 8:
        print(Y8)
    if year == 9:
        print(Y9)
    if year == 10:
        print(Y10)
    

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Вы можете создать функцию, которая будет выполнять все вычисления и возвращать правильный результат. Функция получает 4 переменные из ввода.

def calculations(capital, interest_rate, annual_saving, year):
    x = (capital + annual_saving) * (1 + interest_rate)
    for i in range(1, year, 1):
        x = (x + annual_saving) * (1 + interest_rate)
    return x

capital = float(input("Enter initial capital: "))
interest_rate = float(input("Enter interest rate: "))
annual_saving = float(input("Enter annual savings: "))
year = float(input("Enter number of years of saving: "))

results = calculations(capital, interest_rate, annual_saving, year)
print(results)
2 голосов
/ 25 февраля 2020

Формула для начисленных процентов: K_interrest = K_start * (1 + (p/100))**n с p в качестве вашей ставки и n в годах. С этим мы можем поместить ваш код в удобную функцию. Ваш первоначальный фонд и ежегодные сбережения, умноженные на процентную ставку, получают ваш новый капитал. Это случается n раза.

def calculate_savings(k, p, a, n):
    for i in range(n):
        k = (k+a) * (1 + (p/100))
    print(f"{k:.2f}", "$")  # will print your result with 2 decimal digits


capital = float(input("Enter initial capital: "))
interest_rate = float(input("Enter interest rate [%]: "))  # input in percent
annual_saving = float(input("Enter annual savings: "))
years_duration = int(input("Enter number of years of saving: "))  # years must be int here

calculate_savings(capital, interest_rate, annual_saving, years_duration)

Другая возможность заключается в использовании рекурсивной функции (функции, которая вызывает себя):

def calculate_savings(k, p, a, n):
    if n <= 0:
        print(f"{k:.2f}", "$")
    else:
        k = (k+a) * (1 + (p/100))
        calculate_savings(k, p, a, n-1)  # calculates k with one year less

Обычно считается хорошей практикой сохранять ваши код DRY (не повторяйся). Кроме того, когда ваш сценарий становится немного более существенным, вам следует рассмотреть возможность отлова ошибочных входных данных.

...