Я попытался запустить код в режиме ожидания с помощью F5, и он работал нормально

Но я иду в vim, пишу тот же код и делаю :!python, и он дает эту ошибку

Я знаю, что такое отступ, но он не должен его давать. как мне исправить?

while True:
for i in range (90):
    print (str (i) + "is a number smaller than 90")
break

Теперь я запускаю его vim, и он дает это

 File "<stdin>", line 2

           ^
IndentationError: expected an indented block
for i in range (90):
    print (str (i) + "is a number smaller than 90")
break
0
Md prottoy 16 Мар 2021 в 09:01

1 ответ

Лучший ответ

Выполнение :!python % в Vim по сути эквивалентно выполнению $ python filename в вашей оболочке: интерпретатор получает файл и выполняет его содержимое. То, что вы получаете, не только совершенно нормально и ожидаемо, учитывая плохой отступ в вашем файле, но и согласованно:

# in Vim
:!python %
  File "<stdin>", line 2
    for i in range (90):
      ^
IndentationError: expected an indented block

# in your shell
$ python filename
  File "<stdin>", line 2
    for i in range (90):
      ^
IndentationError: expected an indented block

Во всяком случае, удивительным является сообщение о простое: ваш код неверен и не может быть проанализирован интерпретатором python как есть, если <F5> действительно игнорирует эти ошибки и выполняет ваш код, то это означает, что он делает что-то еще, а не просто передает ваш файл интерпретатору.

FWIW, вот что я получаю с вашим файлом в режиме ожидания после нажатия <F5>:

idle

Что согласуется с :!python % и $ python filename.

1
romainl 16 Мар 2021 в 08:59