Python 输入时从列表列表中获取最近的元素

Python 输入时从列表列表中获取最近的元素,python,Python,我有一个文本文件,其中包含一些类似于猜数字游戏的内容,第一列只是一个唯一id,第二列和第三列是来宾的范围,第四列是一个组类型: a:6.5:10.2:G1 b:2.4:11.7:G2 c:3.1:9.7:G1 d:4.6:8.7:G3 用户将被提示输入两次,例如: 3.1 : 9.9 : 3.2 : 9.8 其中,前两次将是第一次尝试,第三次和第四次将是第二次尝试。根据上面的输入,代码将对文本文件中的内容在第一次尝试和第二次尝试之间进行比较 例如: 第一次尝试将是3.1:9.9,并继续与文本

我有一个文本文件,其中包含一些类似于猜数字游戏的内容,第一列只是一个唯一id第二列和第三列是来宾的范围,第四列是一个类型:

a:6.5:10.2:G1
b:2.4:11.7:G2
c:3.1:9.7:G1
d:4.6:8.7:G3
用户将被提示输入两次,例如:

3.1 : 9.9 : 3.2 : 9.8
其中,前两次将是第一次尝试第三次和第四次将是第二次尝试。根据上面的输入,代码将对文本文件中的内容在第一次尝试和第二次尝试之间进行比较

例如:

第一次尝试将是3.1:9.9,并继续与文本文件中的内容进行比较。还将比较第二次尝试3.2:9.8,并生成与用户输入范围最接近的输出,即:

output = 3.1 , 9.7 (from the text file, without the id and type)
这是我试过的。首先,我创建了两个列表,因为文件中每行只有两组数字,并且用户四组数字,如果我将输入分为两组进行比较,我认为这很方便

guess = input("Enter your guess:")  #Ex: 3.1:9.9:3.2:9.8
List1 = []                          # [3.1,9.9]
List2 = []                          # [3.2,9.8]
separateStr = guess.split(':')
floatInput = [float(i) for i in separateStr]

List1,List2 = floatInput[:2],floatInput[2:]

openFile = open('__.txt')
table = []                  #Created a list to contain the contents
for line in openFile:
    contents = line.strip().split(':')
    table.append(contents)

def getClosest(l):
    for i in range(....
    .
    .

我无法计算出最近范围的函数,因为我假设如果两个列表能够与包含文件内容的表进行比较,是否可能?我的方法可能是错误的,所以我想就此寻求建议。

我没有测试它,因为我是懒惰的atm,但它应该是好的

def get_closest(test, my_table):
    min_dist = 10e5
    pos = None
    for i, data in enumerate(my_table):
        dist = ((test[0] - data[0])**2 + (test[1] - data[1])**2)**0.5  # euclidean norm
        if dist < min_dist:
            pos = (i, data)
            min_dist = dist
    return pos

openFile = open('__.txt')
table = []
for line in openFile:
    table.append(line.strip().split(':')[1:3])  # only the numbers

user_input = input("Enter your guess:")  # Ex: 3.1:9.9:3.2:9.8
floatInput = list(map(float, user_input.split(':')))
guesses = [floatInput[:2], floatInput[2:]]
for guess in guesses:
    winner = get_closest(guess, table)
    print(winner[1])
def get_closest(测试,我的表格):
最小距离=10e5
位置=无
对于i,枚举(my_表)中的数据:
dist=((测试[0]-数据[0])**2+(测试[1]-数据[1])**2)**0.5#欧氏范数
如果距离小于最小距离:
pos=(i,数据)
最小距离=距离
返回位置
openFile=open(“”.txt’)
表=[]
对于openFile中的行:
table.append(line.strip().split(“:”)[1:3])#仅数字
用户输入=输入(“输入您的猜测:)#例如:3.1:9.9:3.2:9.8
floatInput=list(映射(float,用户输入.split(':'))
猜测=[floatInput[:2],floatInput[2:]
对于猜测中的猜测:
获胜者=获得最接近(猜测,表格)
打印(获胜者[1])
注:

  • 用户输入的格式很奇怪。我会选择更直观的东西,比如
    3.1,9.9;3.2,9.8
    (区分中间分离器和其余分离器)

这一切归结为你想要使用的标准(你想要测量距离的方式)。剩下的你已经弄明白了。