#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.