Ale ... po co się tak doświadczasz pisząc coś co jest łatwe do rozwiązania? Wystarczy funkcja min(...) która załatwia to szybko i bezboleśnie:
#!/usr/bin/env python3
def najbliższy_punkt(punkty):
return min(punkty, key=lambda point: point[0] ** 2 + point[1] ** 2)
assert najbliższy_punkt([(-3,-2),(2,-1),(1,-20)]) == (2, -1)
assert najbliższy_punkt([(-3,2),(2,1),(2,1)]) == (2,1)
Inna sprawa to... czy naprawdę chcesz używać znaków spoza ASCII do nazywania funkcji? Może gdybym był mieszkańcem Indii mam Ci to zapisać w telugu (సమీప స్థానం)?
No ale jeśli odnieść się do tego co zaprezentowałeś:
1. Słowo kluczowe tuple jest już zajęte w rdzeniu języka. To jest bez sensu:
for tuple in punkty:
2. Budowanie mapy odległości także:
s[odleglość]= tuple
... dodatkowo to nieszczęśliwe słowo tuple...
Ogólnie... błąd jest koncepcyjny.
BTW, dla Python'a w wersji 2, rozwiązanie (zaskakująco) zbliżone. Pozwól że bez "polskich znaczków".
#!/usr/bin/env python2
def najblizszy_punkt(punkty):
return min(punkty, key=lambda point: point[0] ** 2 + point[1] ** 2)
assert najblizszy_punkt([(-3,-2),(2,-1),(1,-20)]) == (2, -1)
assert najblizszy_punkt([(-3,2),(2,1),(2,1)]) == (2,1)