2013-09-22 2 views
0

Я начинаю на питоне, и эта домашняя работа требует от меня получить будущую стоимость инвестиций.Ошибка кода - будущие инвестиции vlaue в Python

p = raw_input("[How much did you invest?]:") 
r = str(raw_input("[How much is the interest rate?]:")) 
n = raw_input("[How long have you been investing?]:") 
future_value = p*(1+1)**n 
print "\n\n\tYour future value of your investment is: %s\n" % future_value 

Код ошибки:

unsupported operand type(s) for ** or pow(): 'int' and 'str' 

Любая помощь?

ответ

1

Вы должны бросить вход в int потому что raw_input функция возвращает string

Если вы наберете help(raw_input) в интерактивном терминале, вы должны увидеть определение:

raw_input(...) 
    raw_input([prompt]) -> string 

Фиксированный код:

p = int(raw_input("[How much did you invest?]:")) 
r = float(raw_input("[How much is the interest rate?]:")) 
n = int (raw_input("[How long have you been investing?]:")) 
future_value = p*(1+1)**n 
print "\n\n\tYour future value of your investment is: %s\n" % future_value 
+0

Он работал с (1 + 1) ** n. Когда я изменил его на (1 + r) ** 2, у меня было такое же сообщение об ошибке. – user2803287

+0

В вашем исходном коде 'r' не использовался. Если вам нужно добавить 'r' в формулу, вам нужно также наложить' r' на 'int': D соответственно указан код – Mingyu

+0

[Сколько вы инвестировали?]: 1000 [Сколько стоит процентная ставка?] :. 08 Traceback (последний последний звонок): Файл «C: \ * \ * \ Desktop \ CSC130-Assignment-2 \ Asn2-4.py», строка 2, в r = int (raw_input («[Сколько стоит процент?]:»)) ValueError: недействительный литерал для int() с базой 10: '.08' – user2803287

1

В сообщении об ошибке сообщается, что вы пытаетесь поднять целое число на st мощность кольца. Это должно быть это часть кода: (? Это 2 - если 2 является то, что вы хотите, почему бы не написать 2 вместо 1+1)

(1+1)**n 

Действительно, 1 + 1 является целым числом.

Итак, что такое n? n был получен из звонка raw_input(). И действительно, raw_input() всегда возвращает строку. Если вы хотите изменить эту строку на целое число (вы делаете), сделайте это вместо этого:

n = int(raw_input("[How long have you been investing?]:")) 
+0

Да, вы на самом деле правы .it is (1 + r) ** n. Это была ошибка, когда я набрал 1 + 1. У меня все еще есть ту же неподдерживаемый тип операндов для +: 'int' и 'str' – user2803287

+0

Это не та же ошибка! Первая ошибка, о которой вы сообщали, касалась неподдерживаемых типов операндов для '**'. Теперь вы получаете один для '+'. Это потому, что 'r' является строкой: ** все **, возвращаемые' raw_input() ', являются строкой. Если вы хотите, чтобы 'r' являлось целым числом, вам нужно добавить вызов' int() ', как и раньше. Или, если вы хотите, чтобы 'r' был числом с плавающей запятой,' 'float()' call. Я не могу догадаться, что вы хотите ;-) –

+0

Это сработало, когда я использовал float() Спасибо вам большое :) – user2803287