Процентный калькулятор на Python

#python #integer #calculator

#Python #Целое число #калькулятор

Вопрос:

Процентный калькулятор позволяет пользователю рассчитать сумму денег, которую они будут иметь в банке после того, как их проценты будут накапливаться в течение определенного количества лет.

Примечание: A = P (1 r) ^ t, где A = общая сумма, P = основная сумма, r = ставка и t = время.

Это то, что я пробовал:

 principal = input("How much money do you currently have in the bank?")
rate = input("What is your interest rate?")
time = input("Over how many years is the interest compounded?")
actual_principal = float(principal)
actual_rate = float(rate)
actual_time = int(time)

#TODO: Calculate the total amount and print the result
A = (actual_principal(1   actual_rate) ^ actual_time) 
print(A)
  

Я использовал actual_principal, actual_rate и actual_time для преобразования строк в (точные) целые числа…Я использовал float вместо int, потому что float будет поддерживать ввод с десятичными дробями, верно?

Но я получил сообщение об ошибке в строке 9

 TypeError: 'float' object is not callable on line 9
  

Я предполагаю, что объект ‘float’ относится либо к actual_principal, либо к actual_rate, либо к обоим, поскольку это два значения, которые я преобразовал. Почему же тогда они не могут быть вызваны? Как я могу исправить эту программу для правильного расчета процентов? Спасибо!

Редактировать

Узнал, что степенная функция в python равна ** и что подразумеваемые операторы умножения не существуют в синтаксисе python. Переработал мое уравнение, чтобы оно выглядело следующим образом:

 final_actual_rate = actual_rate   1
B = actual_principal * final_actual_rate
A = B ** actual_time
print(A)
  

При вводе 13,58 для «Сколько денег у вас сейчас в банке?», 0,3 для «Какова ваша процентная ставка?» и 5 для «За сколько лет начисляются проценты?», Я получил ответ 1714808.43561 — так что калькулятор работает!

РЕДАКТИРОВАТЬ 2

Заменил мое уравнение на это — это лучший / более чистый способ создания калькулятора процентов, хотя оба приведут к одинаковому результату:

 A = math.pow(actual_principal*(1   actual_rate) , actual_time) 
print(A)
  

Комментарии:

1. Вы должны уважать синтаксис python и не переводить математическую формулу напрямую в интерпретируемые инструкции, но при этом иметь в виду что-то другое. степенная функция ** в python и подразумеваемые операторы умножения не существуют в синтаксисе языка

Ответ №1:

 import math
principal = input("How much money do you currently have in the bank?")
rate = input("What is your interest rate?")
time = input("Over how many years is the interest compounded?")
actual_principal = float(principal)
actual_rate = float(rate)
actual_time = int(time)

#TODO: Calculate the total amount and print the result
A = math.pow(actual_principal*(1   actual_rate) , actual_time) 
print(A)
  

Несколько вещей не так с тем, что у вас есть. ^ это не то, что вы думаете, что это в Python. ^ является ли бинарный оператор XOR не power. Если вам нужна мощность, вы используете модуль math.pow().

Также использование action_principal(1 actual_rate) неверно. Вы пытаетесь вызвать функцию action_principal с аргументом 1 actual_rate вместо его умножения. Попробуйте * вместо этого.

Ответ №2:

Ваш код неверен: вы повышаете все уравнение до степени фактического времени, вместо того, чтобы повышать только (1 r)!!! Проверьте это:

 import math
principal = input("How much money do you currently have in the bank?")
rate = input("What is your interest rate?")
time = input("Over how many years is the interest compounded?")
actual_principal = float(principal)
actual_rate = float(rate)
actual_time = int(time)

#TODO: Calculate the total amount and print the result

A = math.pow((1   actual_rate) , actual_time)
B = actual_principal*A


print(B)
  

Комментарии:

1. «При вводе 13,58 для «Сколько денег у вас в настоящее время в банке?», 0,3 для «Какова ваша процентная ставка?» и 5 для «За сколько лет начисляются проценты?», Я получил ответ 1714808.43561 — значит, калькулятор работает!»……………………………………………………………. К сожалению, даже если 30% — это сумасшедшая процентная ставка, за пять лет невозможно получить более полутора миллионов долларов, начиная с 13,58.