2
respostas

TypeError: '<' not supported between instances of 'float' and 'NoneType'

Boa tarde, no meu código ele informa o seguinte erro:

TypeError                                 Traceback (most recent call last)
<ipython-input-48-c8b8c735e831> in <cell line: 6>()
      8   distancia_rota = calcular_distancia(rota)
      9 
---> 10   if distancia_rota < menor_distancia :
     11     menor_distancia = menor_rota
     12     menor_rota = rota

TypeError: '<' not supported between instances of 'float' and 'NoneType'

código:

def desenhar_rota(rota):

  
  tamanho_rota = len(rota)
  distancia_percorrida = 0
  for i in range(tamanho_rota):
    x,y = rota[i]
    cor = "black"
    if i == 0:
      cor = "blue"
    elif i == tamanho_rota - 1:
      cor = "red"
    plt.scatter(x,y, color = cor)
    if i < tamanho_rota - 1:
      x1,y1 = rota[i+1]
      dx = x1 - x
      dy = y1 - y
      plt.arrow(x,y, dx,dy, color = "black", head_width = 0.1)
      distancia_percorrida = distancia_percorrida + distancia_euclidiana(rota[i], rota[i+1])

--------------------------------------------------------------------------------------------------------------------------------------------------------
    
  plt.title(f"Rota com distância de {round(distancia_percorrida,2)}")
  plt.show()
    
    
    
origem = (0,0)
destino = (4,4)

enderecos = [(2,2), (2,1), (5,3), (8,3)]

rota = [origem] + enderecos + [destino]

desenhar_rota(rota)
----------------------------------------------------------------
def calcular_distancia(rota):
  distancia = 0
  tamanho_rota = len(rota)
  for i in range(tamanho_rota):
    if i < tamanho_rota - 1:
      distancia = distancia + distancia_euclidiana(rota[i], rota[i+1])
  return distancia

 from itertools import permutations

menor_distancia = float('inf')
menor_rota = None

for permutacao in permutations(enderecos):
  rota = [origem] + list(permutacao) + [destino]
  distancia_rota = calcular_distancia(rota)

  if distancia_rota < menor_distancia :
    menor_distancia = menor_rota
    menor_rota = rota


print(menor_rota, menor_distancia)
desenhar_rota(menor_rota)

poderia me ajudar?

2 respostas

Achei o erro! obrigada de qualquer forma

Boa tarde Camyla!

Que bom que conseguiu resolver. Em caso de dúvidas não hesite em voltar no nosso fórum.

Abraços e bons estudos!