抱歉,我是一个有点编程的新手,但是我在一个简单的循环中得到一个浮动分区错误,我不知道如何纠正。
这是python 2.7中的代码
import random
N = 100
A = []
p = 0
q = 0
k = 1
while k<=N:
x = random.random()
if x<= 0.5:
p+= 1
else:
q+=1
y = p/q
A.append(y)
k+=1
运行此代码会产生零分割错误。我无法纠正。有谁能告诉我如何纠正这个问题?
答案 0 :(得分:0)
由于此代码
,您将收到零分割错误if x <= 0.5:
p+=1
else:
q+=1
y= p/q
你已经初始化了q = 0,因此当第一次运行while循环时,如果x <= 0.5,那么p将递增,但q将等于零,在下一步中,你将p除以q(这是零)。您需要在执行除法之前设置检查条件,以便分母不为零。您可以通过以下方式纠正它。
if x <= 0.5:
p+=1
else:
q+=1
if (q == 0):
print "Denominator is zero"
else:
y= p/q
这只是一个解决方案,因为我不知道您在代码中尝试做什么。
答案 1 :(得分:0)
您可以使用numpy.nextafter(q,1)。 这样一来,您可以在q之后的下一个浮点值接近1,这是非常小的数字。