请问如何通过添加一个循环读取数据的同时完成下面的所有计算,而不是单单一个

Importing read file and utilty method

import io_module as io
import utility as util

Defining the dataset.

*_2d.txt has 2 coordinate

*_3d.txt has 3 coordinate

*_4d.txt has 4 coordinate

red_data = ["datasets/red_2d.txt","datasets/red_4d.txt","datasets/red_6d.txt"]
blue_data = ["datasets/blue_2d.txt","datasets/blue_4d.txt","datasets/blue_6d.txt"]
unknown_data = ["datasets/unknown_2d.txt","datasets/unknown_4d.txt","datasets/unknown_6d.txt"]

red_dataset = None
blue_dataset = None
unknown_dataset = None

###Reading the dataset
while True:
try:
select_dimension = int(input("Select the Dimension for the Red and blue dataset (2,4,8):"))
if select_dimension == 2:
red_dataset = io.read_multi_dim_data(red_data[0])
blue_dataset = io.read_multi_dim_data(blue_data[0])
unknown_dataset = io.read_multi_dim_data(unknown_data[0])
break

    elif select_dimension == 4:
        red_dataset = io.read_multi_dim_data(red_data[1])
        blue_dataset = io.read_multi_dim_data(blue_data[1])
        unknown_dataset = io.read_multi_dim_data(unknown_data[1])
        break

    elif select_dimension == 8:
        red_dataset = io.read_multi_dim_data(red_data[2])
        blue_dataset = io.read_multi_dim_data(blue_data[2])
        unknown_dataset = io.read_multi_dim_data(unknown_data[2])
        break

    else:
        raise ValueError

except ValueError:
    print("Please enter a valid number")

Write a code to find whether the unknow_point is red or blue

min_distance_from_red = 1000
min_distance_from_blue = 1000

unknow_point = unknown_dataset[0]
print(unknow_point)
for numbers in (unknown_dataset):
print(numbers)

for red in red_dataset:
distance_from_red = util.calculate_distance(unknow_point, red)
min_distance_from_red = distance_from_red if distance_from_red < min_distance_from_red else min_distance_from_red

for blue in blue_dataset:
distance_from_blue = util.calculate_distance(unknow_point, blue)
min_distance_from_blue = distance_from_blue if distance_from_blue < min_distance_from_blue else min_distance_from_blue

##compare the distance between red and blue
if (min_distance_from_red > min_distance_from_blue):
print(f"The coodinate {unknow_point} is red ")
else:
print(f"The coodinate {unknow_point} is blue ")

img

img

img

img

其实一个循环就可以写完了,但是你这里分了三个颜色,所以先遵循你的源码来吧

import os
import io_module as io

# 读取文件夹里面的文件,按前缀归到不同数组
file_dir = "datasets"
list_file = os.listdir(file_dir)
red_data, blue_data, unknown_data = [], [], []
for each_file in list_file:
    if each_file.startswith("red"):
        red_data.append("%s/%s" % (file_dir, each_file))
    elif each_file.startswith("blue"):
        blue_data.append("%s/%s" % (file_dir, each_file))
    else:
        unknown_data.append("%s/%s" % (file_dir, each_file))

red_dataset, blue_dataset, unknown_dataset = [], [], []
for f in blue_data:
    blue_dataset.append(io.read_multi_dim_data(f))
for f in unknown_data:
    unknown_dataset.append(io.read_multi_dim_data(f))