Python 3.x 在创建的点的随机列表中创建两点之间的最小距离。创建距离值列表时遇到问题

Python 3.x 在创建的点的随机列表中创建两点之间的最小距离。创建距离值列表时遇到问题,python-3.x,Python 3.x,这是一个大类点内的函数。此问题的目标是创建一个空的距离值列表(已经创建了def calc_距离),然后在创建的随机坐标值列表中进行迭代,并在随机坐标值列表中找到最小距离值及其索引。提前谢谢你 import random class Point: def __init__(self, x, y, z=0.0): self.x = x self.y = y self.z = z self.d = 2 if se

这是一个大类点内的函数。此问题的目标是创建一个空的距离值列表(已经创建了def calc_距离),然后在创建的随机坐标值列表中进行迭代,并在随机坐标值列表中找到最小距离值及其索引。提前谢谢你

import random

class Point:
    def __init__(self, x, y, z=0.0):
        self.x = x
        self.y = y
        self.z = z
        self.d = 2
        if self.z != 0:
            self.d = 3

    def print_coordinate(self):
        print("The coordinates are ({}, {}, {})".format(self.x, self.y, self.z))

    def calc_distance(self, pt):
        isinstance((x, y, z, pt.x, pt.y, pt.z), float)
        return ((((pt.x - self.x) ** 2 + (pt.y - self.y) ** 2) + (pt.z - self.z) ** 2) ** 0.5)


#d1 = Point(4.12, -234.4, 34.1)
#d2 = Point(-63.2, 34.6, -23.1)
#d1.print_coordinate()
#d2.print_coordinate()
#d1.calc_distance(d2)


    def __repr__(self):
        return f'({str(self.x)}, {str(self.y)})'

#Q6

    def float_N(self, num_point, dimension, lower_bound, upper_bound):
        points = []

        for _ in range(num_point):
            if dimension == '2-D':
                point = Point(random.uniform(lower_bound, upper_bound), random.uniform(lower_bound, upper_bound))
                points.append(point)
            else:
                pass
                # if 3-D coordinates
        return points

#print(float_N(100, '2-D', 0, 100))

# Q7 generate 100 Point class instances

#a = Point(0, 0)
#list1 = a.float_N(100, '2-D', 0, 100)
#print(list1) #= 100 Point class instances

#Q8 closest pt from list to (50, 50)

    def closest_pt(self):

        dvalues = []

        list1 = a.float_N(100, '2-D', 0, 100)
        min = (((pt.x - self.x) ** 2 + (pt.y - self.y) ** 2) ** 0.5)

        for _ in range(len(list1)):
            dvalue = (((pt.x - self.x) ** 2 + (pt.y - self.y) ** 2) ** 0.5)
            # or dvalue = Point.calc_distance(self, pt)
            return dvalue
        dvalues.append(dvalue)
        try:
            if dvalue < min:
                min = dvalue
        except NameError:
            min = dvalue



a = Point(0, 0)
b = Point(50, 50)
print(a.float_N(100, '2-D', 0, 100)) #= 100 Point class instances ---> Q7 <--- (list1)
list1 = a.float_N(100, '2-D', 0, 100)
print("Minimum Point is ", min(list1, key=dvalues))
return min((a.float_N(100, '2-D', 0, 100)), key=dvalues)
print(b.closest_pt(dvalue))
随机导入
课程点:
定义初始值(self,x,y,z=0.0):
self.x=x
self.y=y
self.z=z
self.d=2
如果self.z!=0:
self.d=3
def打印坐标(自身):
打印(“坐标是({},{},{})”.format(self.x,self.y,self.z))
def calc_距离(自身,pt):
isinstance((x,y,z,pt.x,pt.y,pt.z),浮点)
返回(((pt.x-self.x)**2+(pt.y-self.y)**2+(pt.z-self.z)**2)**0.5)
#d1=点(4.12,-234.4,34.1)
#d2=点(-63.2,34.6,-23.1)
#d1.打印坐标()
#d2.打印坐标()
#d1.计算距离(d2)
定义报告(自我):
返回f'({str(self.x)},{str(self.y)})'
#问题6
def float_N(自身、数值点、尺寸、下限、上限):
点数=[]
对于范围内的(数值点):
如果维度==“2-D”:
点=点(random.uniform(下界,上界),random.uniform(下界,上界))
点。追加(点)
其他:
通过
#如果三维坐标
返回点
#打印(浮点数(100,'2-D',0,100))
#Q7生成100点类实例
#a=点(0,0)
#列表1=a.float_N(100,'2-D',0,100)
#打印(列表1)#=100点类实例
#Q8从列表到最近pt(50,50)
def最接近点(自身):
D值=[]
列表1=a.float_N(100,'2-D',0,100)
最小=((pt.x-self.x)**2+(pt.y-self.y)**2)**0.5)
对于范围内的(len(列表1)):
d值=((pt.x-self.x)**2+(pt.y-self.y)**2)**0.5)
#或D值=点计算距离(自身,pt)
返回值
附加(dvalue)
尝试:
如果D值<最小值:
最小值=d值
除名称错误外:
最小值=d值
a=点(0,0)
b=点(50,50)

打印(a.float_N(100,'2-D',0,100))#=100点类实例-->Q7谢谢你的问题,你能更具体一点吗?当您说“未定义dvalue”时,此错误将抛出哪个函数?如果您可以删除与此错误无关的任何代码,社区将更容易跟踪此问题。错误应位于
print(b.closest_pt(dvalue))
。在此代码中之前的任何一点上,
d值
仅在函数内部定义,不在外部范围内定义。在这之前的那一行上还有一个
返回值
。。。?请检查您的代码的格式和缩进。嗨,蜥蜴比尔,我尝试了其他返回缩进,pycharm认为它们是无法访问的代码。嗨,乔什·沙基,我收到的错误消息是:回溯(最近一次调用):文件“C:/Users/sarah/PycharmProjects/a02_wozniak.py/Projects/a04_wozniak.py”,第146行,打印(b.最近点(D值))NameError:name'dvalue'未定义我肯定有很多不必要的代码。这是我第一次参加python课程,之前没有任何编码经验,所以我正在努力学习一些。谢谢你的问题,你能说得更具体一点吗?如果你说“dvalue未定义”,这个错误会抛出哪个函数?如果你能删除任何代码与此错误无关,社区将更容易跟踪问题。错误应位于
print(b.closest_pt(dvalue))
。在此之前的任何时候,
dvalue
仅在函数内部定义,而不是在外部范围。在此之前的行上还有一个
return
。?请检查您的代码的格式和缩进。嗨,蜥蜴比尔,我尝试过其他缩进,pycharm认为它们无法达到le code.Hi Josh Sharkey,我收到的错误消息是:回溯(最近一次调用):文件“C:/Users/sarah/PycharmProjects/a02_wozniak.py/Projects/a04_wozniak.py”,第146行,打印(b.closest_pt(dvalue))NameError:name'dvalue'没有定义我肯定有很多不必要的代码。这是我第一次参加python课程,之前没有任何编码经验,所以我正在努力学习一些。