2016-12-05 97 views
-3

我不知道如何用這段代碼修復python上的標識問題。 因爲這一切都在這一刻拋出。當我運行它。在python上縮進時遇到問題

import math 

p = int(raw_input("Please enter deposit amount: \n")) 

i = int(raw_input("Please input interest rate: \n")) 

t = int(raw_input("Please insert number of years of the invesment: \n")) 

interest = raw_input("Do you want a simple or compound interest ? \n") 



A =p(1+r*t) 

B =p (1+r)^t 



if interest == "simple": 
print int(float(A)) 

elif interest == "compound": 
print int(float(B)) 
+1

插入兩/四/ 16位兩個'print'語句之前。 –

回答

2

Python需要縮進語句塊以定義塊結束的位置。某些語言使用大括號({,})或其他符號來分隔塊的開始和結束。但是,在Python中,行末尾的冒號(:)表示下一行是塊的開頭,塊必須比冒號所在的行縮進得更多,塊中的每一行都必須縮進確切的數額。任何以下行回到帶有冒號的行的原始縮進級別(或者反向縮進(反向凹陷?)甚至更進一步)表示該塊的結束。

所以......

if塊(單一的if線以下代碼行)應縮進比if線本身。 elif行不縮進,因爲它不是if塊的一部分。與elif行和elif塊類似。

因此,對於你的最後4行縮進應該是:

if interest == "simple": 
    print int(float(A)) 
elif interest == "compound": 
    print int(float(B)) 

大多數語言,縮進僅僅是風格和可讀性。使用Python它也是語法的一部分。

+0

它返回13行此錯誤:@timotree 回溯(最近通話最後一個): 文件「」,13號線,在 NameError:名字「R」是沒有定義 – Duvall912

+0

當我在運行它控制檯 – Duvall912

+0

這是一個單獨的問題。 :-)然而,似乎你正在評估'A = p(1 + r * t)',包括'r'而沒有在任何地方定義它(並且在下一行中)。 –

1

當你用Python語言編寫

if a == b: 
    print c 

ifif必須運行一些代碼,如果它的條件爲真。

當你的,如果所做的不僅僅是一件事

if a == b: 
    print c 
    print b 

它並不總是很清楚哪些動作是綁在if的條件

if a == b: 
print c 
print b 

在這種情況下,Python不知道更多是否只有print b如果a == bprint b這兩種方式。 當代碼不清晰時,電腦不喜歡它。

File "broken.py", line 2 
    print(c) 
     ^
IndentationError: expected an indented block 

但是有一件事我們可以做,使其更清晰。

像這樣

if a == b: 
    print c 
print b 

現在,Python可以告訴大家,print b是不依賴於如的條件,因爲它不是縮進。

TL; DR: 最後4行你的程序應該是

if interest == "simple": 
    print int(float(A)) 
elif interest == "compound": 
    print int(float(B))