Python elif работает в IDLE, но не в коде Visual Studio - PullRequest
0 голосов
/ 01 марта 2020

Я Python новичок ie, в настоящее время работаю над моим первым проектом.

Кажется, что мои выражения elif работают в IDLE, но не VS C

Для демонстрации У меня очень простое утверждение if:

dud = 'You'
if dud == 'You':
    print('You got the dud!')
elif dud == 'Me':
    print('ohhhh, I made myself sad')
else:
    pass

Когда я отправляю этот код в IDLE, он не работает. Однако, когда я копирую и вставляю тот же самый код в VS C и запускаю в Python Terminal, я получаю следующие ошибки:

PS C:\Users\William> & C:/Users/William/AppData/Local/Programs/Python/Python38-32/python.exe
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dud = 'You'
>>> 
>>> if dud == 'you':
...     print('You got the dud!')
...
>>> elif dud == 'Me':
  File "<stdin>", line 1
    elif dud == 'Me':
    ^
SyntaxError: invalid syntax
>>>     print('ohhhh, I made myself sad')
  File "<stdin>", line 1
    print('ohhhh, I made myself sad')
    ^
IndentationError: unexpected indent
>>> else:
  File "<stdin>", line 1
    else:
    ^
SyntaxError: invalid syntax
>>>     pass
  File "<stdin>", line 1
    pass
    ^
IndentationError: unexpected indent
>>>

Естественно, я пробовал различные типы форматирования, но я не могу заставить его работать. Если я удаляю раздел elif, он работает нормально, поэтому я чувствую, что, должно быть, мне чего-то не хватает basi c.

Любая помощь будет принята с благодарностью!

edit: все более странное поведение ведет меня полагать, что это как-то проблема Visual Studio:

Выполнение кода в 'Python интерактивном окне "= Успешное выполнение Fre sh Запуск VS C и использование файла« Выполнить python » в терминале '= Успешно' Выполнить выбор / строка в терминале '= Ошибка, обнаруженная выше Выполнение' Выполнить python файл в терминале 'после того, как терминал уже запущен = ошибка, обнаруженная выше

edit: Люди правы указав, что это выглядит так, как будто VS C говорит, что добавлена ​​дополнительная строка, я не думаю, что это так: вот скриншот кода в VS C

Description

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Уведомление ...

 >>> elif

Вы запустили новый оператор и завершили оператор if

elif <conditional> сам по себе недопустимо, и поэтому каждая следующая строка интерпретируется самостоятельно.

Я предлагаю использовать I Python вместо обычного python REPL или использовать JupyterLab

0 голосов
/ 01 марта 2020

Исходя из фрагмента и снимка экрана терминала, то, что на самом деле работает VS C, эквивалентно следующему:

dud = 'You'

if dud == 'You':
    print('You got the dud!')

elif dud == 'Me':
    print('ohhhh, I made myself sad')
else:
    pass

Проблема заключается в том, что второй разрыв строки после print('You got the dud!'). Это заставляет Python думать, что оператор if все готово, поэтому, когда он видит elif и все, что следует, он выдает ошибку.

Хотя источник проблемы не ясен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...