我的代码存在问题:
#!/usr/bin/python
import numpy as np
#Hit and mess method
A=0 #Integral left limit
B=1 #Integral right limit
C=1.0 #Maximum function value in interval [a,b]
N=100000 #Number of experiments
L=[10**x for x in range(7)] #List of powers of ten (1,10,100,...)
def F(X): #Function to integrate
return np.sqrt(1-(X**2))
for M in L:
NA=0 #Number count of hits
for J in range(M):
U=np.random.rand()
V=np.random.rand()
X=A+(B-A)*U
if F(X) > C*V:
NA=NA+1
P=NA/float(M) #Probability
I=C*(B-A)*P #Integral value
STD=np.sqrt(P*(1-P)/M)*C*(B-A)
print M,NA,P,I,STD
错误是:
文件" HIT.py",第19行 U = np.random.rand() ^ IndentationError:预期缩进块
谢谢!
答案 0 :(得分:1)
您正在混合制表符和空格。您的代码使用U=np.random.rand()
上方2行中的标签,但缩进由U=np.random.rand()
的空格提供。您的代码中还有许多其他混合空格和制表符示例。
对于一些行,代码看起来像这样(\ t代表一个标签):
for M in L:
\tNA=0 #Number count of hits
\tfor J in range(M):
U=np.random.rand()
\tV=np.random.rand()
\tX=A+(B-A)*U
如果可能,您应该只使用空格进行缩进(在维护旧代码时可能无法进行缩进)。您可以在PEP 8中了解此问题和其他样式问题。