如何调用方法?
How to call the method?
我在调用 class 的方法 aleatorio()
时遇到问题。我需要使用我的 ponto
class 的 aleatorio()
方法创建一个随机点 p
,这样我就可以在我的 retangulo
class 中使用它] 使用 interior()
方法,基本上检查随机点是否落在我的两个矩形 r1
和 r2
中的每一个的内部。但是,我似乎无法生成我需要的随机点 p
。
from random import uniform
class ponto:
def __init__(self,x,y):
self.x=float(x)
self.y=float(y)
def aleatorio(self):
''' Ponto aleatorio com coordenadas 0.0 a 10.0 '''
self.x=uniform(0.0,10.0)
self.y=uniform(0.0,10.0)
class retangulo():
def __init__(self,a,b):
self.a=a
self.b=b
def interior(self,p):
''' Verifica se ponto no interior do retangulo '''
if p.x >= self.a.x and p.x <=self.b.x and p.y >=self.a.y and p.y<=self.b.y:
return True
return False
def area(self):
return self.a*self.b
a1=ponto(0.0,0.0)
b1=ponto(2.0,2.0)
r1=retangulo(a1,b1)
b2=ponto(4.0,4.0)
r2=retangulo(a1,b2)
p=ponto(0.4,0.9)
p.aleatorio()
d1=0
d2=0
for r in range(10000):
if r1.interior(p)==True:
d1+=1
elif r2.interior(p)==True:
d2+=1
print(d1,d2)
按照建议,我添加了 d1,d2
的打印,其中 returns:0 0
。 d1
和 d2
应该是我的随机点分别落在 r1
和 r2
内的次数。我想 0
要么意味着我没有生成随机点,要么我只是没有计算它正确落入内部的次数,但我不确定原因是什么。
也许你的问题是循环,而不是滚动。
@AlanLeuthard 是非常正确的:这段代码生成一个点,然后检查 10000 次相同的点是否在两个矩形中的每一个中。每次循环尝试创建一个新点:
d1=0
d2=0
for r in range(10000):
p.aleatorio()
if r1.interior(p)==True:
d1+=1
elif r2.interior(p)==True:
d2+=1
print d1, d2
输出:
397 1187
这样好看吗?
我在调用 class 的方法 aleatorio()
时遇到问题。我需要使用我的 ponto
class 的 aleatorio()
方法创建一个随机点 p
,这样我就可以在我的 retangulo
class 中使用它] 使用 interior()
方法,基本上检查随机点是否落在我的两个矩形 r1
和 r2
中的每一个的内部。但是,我似乎无法生成我需要的随机点 p
。
from random import uniform
class ponto:
def __init__(self,x,y):
self.x=float(x)
self.y=float(y)
def aleatorio(self):
''' Ponto aleatorio com coordenadas 0.0 a 10.0 '''
self.x=uniform(0.0,10.0)
self.y=uniform(0.0,10.0)
class retangulo():
def __init__(self,a,b):
self.a=a
self.b=b
def interior(self,p):
''' Verifica se ponto no interior do retangulo '''
if p.x >= self.a.x and p.x <=self.b.x and p.y >=self.a.y and p.y<=self.b.y:
return True
return False
def area(self):
return self.a*self.b
a1=ponto(0.0,0.0)
b1=ponto(2.0,2.0)
r1=retangulo(a1,b1)
b2=ponto(4.0,4.0)
r2=retangulo(a1,b2)
p=ponto(0.4,0.9)
p.aleatorio()
d1=0
d2=0
for r in range(10000):
if r1.interior(p)==True:
d1+=1
elif r2.interior(p)==True:
d2+=1
print(d1,d2)
按照建议,我添加了 d1,d2
的打印,其中 returns:0 0
。 d1
和 d2
应该是我的随机点分别落在 r1
和 r2
内的次数。我想 0
要么意味着我没有生成随机点,要么我只是没有计算它正确落入内部的次数,但我不确定原因是什么。
也许你的问题是循环,而不是滚动。 @AlanLeuthard 是非常正确的:这段代码生成一个点,然后检查 10000 次相同的点是否在两个矩形中的每一个中。每次循环尝试创建一个新点:
d1=0
d2=0
for r in range(10000):
p.aleatorio()
if r1.interior(p)==True:
d1+=1
elif r2.interior(p)==True:
d2+=1
print d1, d2
输出:
397 1187
这样好看吗?