I am trying to calculate the distance of a path when the distances are given like this:
AB = 8, AC = 4, AD = 8, AE = 11, BC = 5, BD = 6 , BE = 3, etc
So if the path followed is ABE, the total distance will be 8 + 3 =11.
I tried the following code:
'dictionaries with paths and distances
distances = {"AB" : 8, "AC" : 4, "AD" : 8, "AE" : 11, "BC" : 5, "BD" : 6 , "BE" : 3}
'calculation path ABE
path = "AB-BE"
distance = 0
for character in path:
for key, value in distances.items():
if key == path:
distance = distance + value
print (distance)
but my distance remains 0.
What am I doing wrong?
>Solution :
When you do for character in path:
you iterate the string path
char by char. That means that in the first iteration, the value of character is A
and not AB
. Additionally, since the keys of distances
are 2-grans none of them will be equal to path. That is key == path
will never be True
.
I suggest splitting path and then iterating them over:
path_splits = path.split("-")
distance = 0
for path_split in path_splits:
distance +=distances[path_split]
print (distance)
If path_split
does not exist in distances
an error will occur but that a good sign to check either the path
or the distances