2013-09-22 36 views
0

我是python的乞丐,這項功課要求我獲得投資的未來價值。代碼錯誤 - 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 回溯(最近一次通話最後): 文件「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是一個整數。

那麼什麼是nn是從raw_input()調用中獲得的。而且,的確,raw_input()總是返回一個字符串。如果您想將該字符串更改爲整數(您這樣做),請改爲:

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

是的,你是對的,它是(1 + r)** n。當我輸入1 + 1時是錯誤的。對於+:'int'和'str',我仍然有相同的錯誤不支持的操作數類型。 – user2803287

+0

這不是同一個錯誤!您報告的第一個錯誤是關於'**'不支持的操作數類型。現在你得到了一個'+'。這是因爲'r'是一個字符串:** raw_input()返回的所有**都是一個字符串。如果你想'r'是一個整數,你需要添加一個'int()'調用,和以前一樣。或者,如果你想讓'r'成爲一個浮點數字,就是一個'float()'調用。我無法猜測你想要什麼;-) –

+0

當我使用float()時,它很有用謝謝你:) – user2803287