Python:缩进

时间:2014-05-22 15:39:02

标签: python

我在代码中观察到一些奇怪的东西。在下面的剪辑中,我将长设置表达式缩减为短占位符。观察

import numpy as np
for t in np.arange(0,100):
    print "t", t
    # compute something
    e=1 
    for n in arange(0, 80):
        print "n", n
        if (df.loc[t, n]['d'] == 1):
            a=1
            b=2
            c=3
            d=4
            e=5 
        else:
            a=1
            b=2
            c=3
            d = 4 \
                + 5 \
                * 6
            e = 7
            e=8 * \
                9
        print t, n

因此,t上有一个外环,而n上有一个内环。最后的print t, n在内循环内部 - 我想 - 因此应该在每个循环上打印。我的预期输出是

t, 0
n, 0
0, 0
n, 1
0, 1
n, 2
0, 2
(..)
t, 1

然而,输出是

t 0
n 0
n 1
n 2
n 3
n 4
n 5
n 6
n 7
n 8
n 9
n 10
n 11
n 12
n 13
n 14
n 15
n 16
n 17
n 18
n 19
n 20
n 21
n 22
n 23
n 24
n 25
n 26
n 27
n 28
n 29
n 30
n 31
n 32
n 33
n 34
n 35
n 36
n 37
n 38
n 39
n 40
n 41
n 42
n 43
n 44
n 45
n 46
n 47
n 48
n 49
n 50
n 51
n 52
n 53
n 54
n 55
n 56
n 57
n 58
n 59
n 60
n 61
n 62
n 63
n 64
n 65
n 66
n 67
n 68
n 69
n 70
n 71
n 72
n 73
n 74
n 75
n 76
n 77
n 78
n 79
t 1
1 79

print t, n不仅不在内循环内,而且在内循环结束时不会被调用"而在第二循环开始时 - 仍然是旧内循环变量n = 79。请告诉我这里发生了什么。

更新

所以,从控制台运行它没有问题。这是我标记代码并设置"在控制台中运行"在我的IDE(PyCharm)中,它打破了。我可以把它缩小到一个特定的双层衬垫:

            prof = (repo.profits(wNew, LTot, Grid.eGrid[df.loc[(t, n), 'a']], Param)
                -Param.psi * (Grid.lGridNoDefault[df.loc[(t, n), 'x']] - Param.delta) ** 2 / (LTot) * wNew )

我以前没有提到过:所有这些都在函数内部。如果我选择从函数定义开始直到(但不包括)给定行的代码并设置"在终端"中运行,则定义函数。如果我包含这一行,终端会尝试运行它:它认为函数定义在前一行结束。

我试图删除所有的空白区域" reindenting"我随处可见标签。此外,我试图合并这两行。两次尝试都没有结果 - 我无能为力。

1 个答案:

答案 0 :(得分:0)

PyCharm Python控制台中似乎存在一个错误,它处理多行代码。相同的代码副本&粘贴在Canopy的iPython控制台中运行。