Почему 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["
^
Он ожидает заключительную квадратную скобку, но встречает конец строки.