2013-03-03 2 views
2

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

while n<1000:if n%3==0 or n%5==0:rn+=n 

Но это выдает сообщение об ошибке: Invalid Syntax в if заявлении

+1

Почему бы вам не попробовать * * это? Это бесконечный цикл, но он будет работать до Python. –

+0

@MartijnPieters У меня это не работает – user2128561

+2

«это не работает» не является описанием проблемы. * Что * не работает? Что вы ожидали, что произошло вместо этого? Какую ошибку вы получили? –

ответ

9

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

Однако не поддержка сложных утверждений.

Итак:

if expression: print "something" 

работает, но

while expression: if expression: print "something" 

делает не потому как while и в if заявления соединение.

Для вашего конкретного Например, вы можете заменить if expression: assignment часть с conditional expression, поэтому, используя выражение вместо сложного суждения:

while expression: target = true_expression if test_expression else false_expression 

в целом, или while n<1000: rn += n if not (n % 3 and n % 5) else 0 конкретно.

С точки зрения стиля вы, как правило, хотите оставить эту линию на своем собственном.

+0

Немного связанный , есть ли какой-либо оператор, эквивалентный выражению '?:' C в Python? ЕСЛИ он есть, он должен выполнять эту работу. – asheeshr

+2

@AshRj есть, см. Мой ответ. – l4mpi

+0

@AshRj: Да, условное выражение 'true_expression, если выражение else false_expression'. –

4

В вашем примере вы пытаетесь свернуть два уровня блоков/отступов в одну строку, что запрещено. Вы можете сделать это только с помощью простых утверждений, а не петлями, если заявления, определения функций и т.д. Тем не менее, для примера есть обходной путь с трехзначным оператором:

while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0 

, который гласит «добавить п к гп, если условие выполнено, иначе добавьте 0 '.

1

Это Возможное сделать что-то подобное:

rn = 100 
for n in range(10): rn += n if (n%3==0 or n%5==0) else 0 
Смежные вопросы