Выполнение нескольких строк в Python - PullRequest
1 голос
/ 19 мая 2010

Когда Python впервые установлен, настройка по умолчанию выполняет ввод кода пользователя построчно. Но иногда мне нужно писать программы, которые выполняют несколько строк одновременно. Есть ли в Python параметр, в котором я могу изменить выполнение кода на один блок одновременно? Спасибо

>>> if (n/2) * 2 == n:;
        print 'Even';
        else: print 'Odd'

SyntaxError: неверный синтаксис

Когда я попытался запустить приведенный выше код, я получил неверную синтаксическую ошибку на ELSE

Ответы [ 4 ]

9 голосов
/ 19 мая 2010

Ваш отступ неверен. Попробуйте это:

>>> if (n/2) * 2 == n:
...     print 'Even'
... else: print 'Odd'

Также вы можете написать это в четыре строки:

>>> if (n/2) * 2 == n:
...     print 'Even'
... else:
...     print 'Odd'

Или даже только одна строка:

>>> print 'Even' if (n/2) * 2 == n else 'Odd'
1 голос
/ 19 мая 2010

Один шаг к решению - удалить точку с запятой после if:

if True:; print 'true'; print 'not ok'; # syntax error!

if True: print 'true'; print 'ok'; # ok

Вы не можете иметь else в одной строке, потому что это было бы неоднозначно:

if True: print 't'; if True: print 'tt; else: ... # <- which if is that else for??

В документах также четко указано, что вам нужно DEDENT, прежде чем оператор else может начаться.

0 голосов
/ 19 мая 2010
print n % 2 == 0 and 'Even' or 'Odd'

: -)

0 голосов
/ 19 мая 2010

Начиная с Python 2.5 вы можете сделать одну строку, если

print ('Even' if n % 2 == 0 else 'Odd')

Еще ответить на ваш вопрос вы можете либо:
1. введите код правильно без синтаксических ошибок, и ваши блоки будут выполняться как блоки независимо от того, занимают ли они несколько строк или нет, даже в интерактивной оболочке. См учебники в погружение в питон
2. напишите код в сценарии и выполните этот сценарий, используя либо командную строку, либо какую-либо IDE ( idle , eclipse и т. Д.)

Одна из идей, лежащих в основе python, состоит в том, чтобы отдавать предпочтение нескольким строкам и стремиться к единообразному форматированию исходного кода, так что то, что вы пытаетесь сделать, не является pythonic, вам не следует стремиться втиснуть несколько утверждений в одну строку, если у вас нет веской причины .

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