python - How to convert NoneType to Int -


this question has answer here:

i'm applying dijkstra algorythm in graph:

grafo1_distancia = {'baquedano': {'bellas artes': 1.73,   'franklin': 2.57,   'salvador': 1.73,   'santa rosa': 1.7},  'bellas artes': {'baquedano': 1.73,   'einstein': 1.18,   'pedro de valdivia': 0.99},  'cerro blanco': {'escuela militar': 1.84,   'san miguel': 1.54,   'vespucio norte': 1.24},  'departamental': {'la cisterna': 1.94, 'san miguel': 1.03},  'ecuador': {'einstein': 1.07,   'las rejas': 1.59,   'neptuno': 1.56,   'santa julia': 1.3},  'einstein': {'bellas artes': 1.18,   'ecuador': 1.07,   'la moneda': 1.69,   'pedrero': 2.94},  'el golf': {'la moneda': 2.51, 'tobalaba': 2.1},  'escuela militar': {'cerro blanco': 1.84,   'los leones': 2.61,   'manquehue': 0.98},  'francisco bilbao': {'tobalaba': 2.96},  'franklin': {'baquedano': 2.57,   'pajaritos': 1.84,   'pedrero': 2.48,   'plaza de armas': 1.89},  'hernando de magallanes': {'manquehue': 1.28, 'santa ana': 2.49},  'la cisterna': {'departamental': 1.94, 'plaza de puente alto': 2.77},  'la moneda': {'einstein': 1.69,   'el golf': 2.51,   'san alberto hurtado': 2.03,   'san miguel': 2.89},  'las rejas': {'ecuador': 1.59, 'pajaritos': 2.67},  'las torres': {'los leones': 2.81, 'macul': 1.12},  'los leones': {'escuela militar': 2.61,   'las torres': 2.81,   'pedro de valdivia': 2.69,   'tobalaba': 1.09},  'macul': {'las torres': 1.12},  'manquehue': {'escuela militar': 0.98, 'hernando de magallanes': 1.28},  'manuel montt': {'salvador': 1.0},  'mirador': {'san alberto hurtado': 0.98,   'san miguel': 2.94,   'santa julia': 2.94,   'trinidad': 2.36},  'neptuno': {'ecuador': 1.56,   'pajaritos': 1.94,   'san alberto hurtado': 2.01,   'san pablo': 2.09},  'pajaritos': {'franklin': 1.84,   'las rejas': 2.67,   'neptuno': 1.94,   'universidad de santiago': 2.39},  'pedrero': {'einstein': 2.94, 'franklin': 2.48},  'pedro de valdivia': {'bellas artes': 0.99,   'los leones': 2.69,   'salvador': 1.55},  'plaza de armas': {'franklin': 1.89, 'tobalaba': 0.87},  'plaza de puente alto': {'la cisterna': 2.77,   'san pablo': 2.55,   'trinidad': 2.75,   'vicente valdes': 2.68},  'puente cal y canto': {'santa rosa': 0.86},  'salvador': {'baquedano': 1.73,   'manuel montt': 1.0,   'pedro de valdivia': 1.55},  'san alberto hurtado': {'la moneda': 2.03,   'mirador': 0.98,   'neptuno': 2.01,   'vicente valdes': 2.46},  'san miguel': {'cerro blanco': 1.54,   'departamental': 1.03,   'la moneda': 2.89,   'mirador': 2.94,   'vespucio norte': 0.88},  'san pablo': {'neptuno': 2.09, 'plaza de puente alto': 2.55},  'santa ana': {'hernando de magallanes': 2.49, 'vespucio norte': 1.56},  'santa julia': {'ecuador': 1.3, 'mirador': 2.94},  'santa rosa': {'baquedano': 1.7, 'puente cal y canto': 0.86},  'tobalaba': {'el golf': 2.1,   'francisco bilbao': 2.96,   'los leones': 1.09,   'plaza de armas': 0.87},  'trinidad': {'mirador': 2.36, 'plaza de puente alto': 2.75},  'universidad de santiago': {'pajaritos': 2.39},  'vespucio norte': {'cerro blanco': 1.24,   'san miguel': 0.88,   'santa ana': 1.56},  'vicente valdes': {'plaza de puente alto': 2.68, 'san alberto hurtado': 2.46}} 

with code:

def dijkstra(grafo,origen,destino,visitados=[],distancias={},predecesores={}):     if origen == destino:         ruta=[]         pred=destino         while pred != 0:             ruta.append(pred)             pred=predecesores.get(pred,0)         print ('la ruta más corta es: '+str(ruta)+', y su distancia es '+str(distancias[destino]))         costo = str(distancias[destino])         return costo     else:         if not visitados:             distancias[origen]=0         vecino in grafo[origen]:             if vecino not in visitados:                 nueva_distancia = distancias[origen]+grafo[origen][vecino]                 if nueva_distancia < distancias.get(vecino,float('inf')):                     distancias[vecino] = nueva_distancia                     predecesores[vecino] =  origen         visitados.append(origen)         no_visitados={}         k in grafo:             if k not in visitados:                 no_visitados[k]=distancias.get(k,float('inf'))         x = min(no_visitados,key=no_visitados.get)         dijkstra(grafo,x,destino,visitados,distancias,predecesores) 

i want dijkstra function return me 2 things: cost (that's distancias[destino], , route between 2 nodes ruta. when try function return ruta , costo, i'll nonetype error ('nonetype' object not iterable ). why that, if doesn't work if str(ruta) ? thanks!

add return in last line:

    return dijkstra(grafo,x,destino,visitados,distancias,predecesores) 

since wrote recursive function, need return result way first call of function.


Comments

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -