2016-12-05 73 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))