Вы пытаетесь сохранить две преобразованные координаты в одном месте p[i]
, поэтому вы всегда добавляете только один поплавок в качестве элемента dict, а не список из двух поплавков.На самом деле, лучше использовать кортеж для координат (пара координат - это упорядоченная неоднородная последовательность, а кортеж потребляет меньше ОЗУ, чем список).
Вот исправленная версия вашего кода.Я добавил немного дополнительной проверки ошибок, чтобы гарантировать, что координаты могут быть преобразованы в числа с плавающей точкой.
p = {}
for i in range(4):
while True:
p_input = input("Enter starting point X,Y Coordinates:")
p_components = p_input.split(',')
if len(p_components) != 2:
print("Missing coordinate or too many coordinates, please try again.")
continue
try:
x = float(p_components[0])
y = float(p_components[1])
except ValueError:
print("Invalid coordinates", p_components, "please try again.")
else:
p[i] = (x, y)
break
print(p)
демонстрационный вывод
Enter starting point X,Y Coordinates:1,2
Enter starting point X,Y Coordinates:3,4,5
Missing coordinate or too many coordinates, please try again.
Enter starting point X,Y Coordinates:3
Missing coordinate or too many coordinates, please try again.
Enter starting point X,Y Coordinates:a,b
Invalid coordinates ['a', 'b'] please try again.
Enter starting point X,Y Coordinates: 5 , 6
Enter starting point X,Y Coordinates:7,8
Enter starting point X,Y Coordinates:3,4
{0: (1.0, 2.0), 1: (5.0, 6.0), 2: (7.0, 8.0), 3: (3.0, 4.0)}