it-swarm-ru.tech

Странная ошибка о неверном синтаксисе

Я получаю недопустимую синтаксическую ошибку в моем скрипте Python для этого оператора

44 f = open(filename, 'r')
45 return

 return
    ^
SyntaxError: invalid syntax

Я не уверен, что именно здесь не так? Я новичок в Python и поэтому буду очень признателен, если кто-то может помочь.

Я использую версию 2.3.4

10
Sumod

Получить «неверный синтаксис» в простом операторе возврата практически невозможно. Если вы используете его вне функции, вы получите 'return' outside function, если у вас неправильный отступ, вы получите IndentationError и т.д.

Единственный способ, которым я могу получить SyntaxError: invalid syntax в операторе return, это если на самом деле он вообще не говорит return, но если он содержит не-ascii символы, такие как retürn. Вот и дают эту ошибку. Теперь, как вы можете получить эту ошибку, не видя ее? Опять же, единственная идея, которую я могу придумать, заключается в том, что у вас фактически есть отступ, но этот отступ не является пробелами или табуляцией. Например, вы можете как-нибудь вставить неразрывный пробел в ваш код.

Да, это может случиться Да, со мной такое случалось. Да, вы получаете SyntaxError: invalid syntax.

8
Lennart Regebro

У меня такая же проблема. Вот мой код:

def gccontent(genomefile):
    nbases = 0
    totalbases = 0
    GC = 0
    for line in genomefile.xreadlines():
        nbases += count(seq, 'N')
        totalbases += len(line)
        GC += count(line, 'G' or 'C')
    gcpercent = (float(GC)/(totalbases - nbases)*100
    return gcpercent

'return' был неверным синтаксисом

Я просто не смог закрыть скобку для следующего кода:

gcpercent = (float(GC)/(totalbases - nbases)*100

Надеюсь это поможет.

26
Jonathan

По возвращении я получил «Неверный синтаксис», когда забыл закрыть скобку в своем коде.

Elif year1==year2 and month1 != month2:
    total_days = (30-day1)+(day2)+((month2-(month1+1))*30   
    return (total_days)    

Неверный синтаксис при возврате.

((month2-(month1+1))*30  <---- there should be another bracket

((month2-(month1+1)))*30

Теперь мой код работает. 

Они должны улучшить Python, чтобы он сообщал вам, если вы забыли закрыть скобки, вместо того, чтобы иметь «неверный» синтаксис при возврате. 

9
Thuy

я только что посмотрел, потому что у меня возникла та же проблема (недопустимая синтаксическая ошибка в выражении плана возврата), и я чрезвычайно новичок в python (первый месяц), поэтому я понятия не имею, что я делаю большую часть времени.

ну, я нашел свою ошибку, я забыл завершающие скобки в предыдущей строке. попробуйте проверить конец предыдущей строки на предмет забытых скобок или цитаты?

3
emmet

Обычно это синтаксическая ошибка в скобках. Проверьте вокруг ошибки.

2
Jared
>>> 45 return
  File "<stdin>", line 1
    45 return
            ^
SyntaxError: invalid syntax
>>> 

Это может объяснить это. Это не объясняет 44 f = open(filename, 'r'), но я подозреваю, что кто-то скопировал и вставил 45 строк кода, где отступ был потерян и включены номера строк.

1
S.Lott

Я столкнулся с подобной проблемой, пытаясь вернуть простое назначение переменной в блоке if.

    Elif len(available_spots)==0:
    return score=0 

Это дало бы мне синтаксическую ошибку. Я исправил это, просто добавив заявление перед возвратом

 Elif len(available_spots)==0:
    score=0
    return score
0
JFT