用于在用户输入的xmax,xmin,ymax,ymin之间查找“点”(x,y)并使用流控制命令打印“点”名称的代码

时间:2019-02-12 03:13:35

标签: python controls flow

给出点和位置(x,y)的嵌套列表:     点列表= [[[-174.6,52],'A'],[[-152,58],'B'],[[-166.1,53],'C']],[[90,-179.7] ,'D']]

我需要帮助来创建一个代码,该代码将告诉用户在输入的xmax,xmin,ymax,ymin之间是否存在点。如果来自点列表的点在xmax-xmin和ymax-ymin值的范围内,则代码需要打印包含的一个或多个点的名称。

数据列表的格式为 pointlist = [[x值,y值],“点名称”]

我已经定义了用户将输入的变量:

xmax = float(input("Enter a maximum x value:"))
xmin = float(input("Enter a minimum x value:"))
ymax = float(input("Enter a maximum y value:"))
ymin = float(input("Enter a minimum y value:"))

我知道我需要使用If和For语句以及=>和<=,但是我不确定如何将其与数据集中涉及的负值联系起来。我们的老师希望能够在更大的数据集上使用此代码。她在上面给我们提供的样本只是一个很小的练习样本。

1 个答案:

答案 0 :(得分:0)

这是我的尝试。输出为列表:

pointlist = [[[-174.6, 52], 'A'], [[-152, 58], 'B'], [[-166.1, 53], 'C'],[[90, -179.7], 'D']]

def check(xmax, xmin, ymax, ymin):
    in_range = []
    for i in pointlist:
        if i[0][0] >= xmin and i[0][0] <= xmax and i[0][1] >= ymin and i[0][1] <= ymax:
            in_range.append(i[1])
    return in_range

一些例子:

>>>print(check(100, -180, 60, -180))
['A', 'B', 'C', 'D']

>>>print(check(100, -170, 60, -180))
['B', 'C', 'D']

>>>print(check(80, -180, 60, -180))
['A', 'B', 'C']

>>>print(check(100, -180, 55, -180))
['A', 'C', 'D']

>>>print(check(100, -180, 60, -170))
['A', 'B', 'C']