我在代码中观察到一些奇怪的东西。在下面的剪辑中,我将长设置表达式缩减为短占位符。观察
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"我随处可见标签。此外,我试图合并这两行。两次尝试都没有结果 - 我无能为力。
答案 0 :(得分:0)
PyCharm Python控制台中似乎存在一个错误,它处理多行代码。相同的代码副本&粘贴在Canopy的iPython控制台中运行。