Почему Python выдаёт ошибку из-за квадратных скобок в выражении f-строки?

Описание ошибки:

SyntaxError: f-string: unmatched '['
def route_info(dictio):
    distance = dictio["speed"]*dictio["time"]
    try: 
       print(f"Distance to your destination is {dictio["distance"]} m")
       if isinstance(dictio["distance"], float):
           print(f"Distance to your destination is {(round(dictio["distance"], 0))} m {(round(dictio["distance"], 2)-(round(dictio["distance"], 0)))*100} cm ")
       if dictio["distance"] >= 10000:
           print((f"Distance to your destination is {dictio["distance"]//1000} km {(dictio["distance"]/1000-dictio["distance"]//1000)*1000}"))
    except KeyError: 
        try: 
            print(f"Distance to your destination is {dictio["speed"]*dictio["time"]} m")
            if isinstance(dictio["distance"], float):
               print(f"Distance to your destination is {(round(distance, 0))} m {(round(distance, 2)-(round(distance, 0)))*100} cm ")
            if dictio["distance"] >= 10000:
               print((f"Distance to your destination is {distance//1000} km {(distance/1000-distance//1000)*1000}"))
        except KeyError:
            print("No info about distance")
route_info({'distance': 100}) 
route_info({'distance': 100**2})   
route_info({'distance': 13**2})
route_info({'distance': 13**3}) 
route_info({'distance': 39.35}) 
route_info({'distance': 71.7777777}) 
route_info({'speed': 60, 'time': 6})
route_info({'speed': 36, 'time': 6}) 
route_info({'speed': 36, 'time': 7.2}) 
route_info({'speed': 6.6, 'time': 6.}) 
route_info({'speed': 2**(1/2), 'time': (2**(1/2))**3})  
route_info({'speed': 6}) 
route_info({'time': 6})  
route_info({}) 

Ответы (1 шт):

Автор решения: MarianD

Ошибка состоит в том, что вы использовали пару кавычек (") внутри другой — внешней — пары кавычек:

   print(f"Distance to your destination is {dictio["distance"]} m")
          ↑                                        ↑        ↑    ↑
          |                                        +--------+    |
          +-------------------------------------------------------

Замените одну пару кавычек на апострофы, например так:

   print(f"Distance to your destination is {dictio['distance']} m")
                                                   ↑        ↑

Обьяснение:

Интерпретатор Питона считает, что ваша f-строка завершилась после второго нахождения кавычек, так:

         f"Distance to your destination is {dictio["
                                                  ^

Он ожидает заключительную квадратную скобку, но встречает конец строки.

→ Ссылка