Новичок в Python, я не знаю, почему он выдает SyntaxError: недопустимый синтаксис

#python #syntax-error

#python #синтаксическая ошибка

Вопрос:

как следует из названия, я получаю ошибку sytax при

 temp_string = lines[1][equals_pos 2:] from datetime import date
  

и я не уверен, как это исправить или что не так.

 def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos 2:] from datetime import date
from apscheduler.scheduler import Scheduler
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0   32.0
        return temp_f
  

Комментарии:

1. from datetime import date должно быть в верхней части модуля. По крайней мере, не встроенный

2. оператор import должен быть отдельной строкой, а также должен находиться в верхней части вашего файла

3. Кто-то перетащил две верхние строки кода куда-то вниз (или ошибка копирования-вставки). Неуместны два оператора импорта

4. оба from .... import ... оператора находятся не в том месте, они должны быть в верхней части вашего файла, по одному оператору в каждой строке. Возможно, вы скопировали / вставили непреднамеренно. При подобной ошибке вы должны очень внимательно прочитать каждую строку и попытаться понять, почему Python жалуется — он всегда прав.

5. Чтобы повторить то, что говорят другие пользователи, вот соответствующий раздел в официальных рекомендациях по стилю python. Стоит добавить в закладки и сослаться на рекомендации PEP8

Ответ №1:

Оператор import должен быть в отдельной строке

 from datetime import date
from apscheduler.scheduler import Scheduler
def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos 2:]
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0   32.0
        return temp_f