2016-05-01 2 views
0

В Python я пытаюсь сделать приращение переменной в значении, пока оно меньше другого числа. Я знаю, что можно сделать петлю for в форме (print(x) for x in range(1, 5)). Мой вопрос: есть ли аналогичный способ сделать цикл while в этой форме, такой как x += 1 while x < y?Python single line while loop

+0

то, что вы описываете, является выражением генератора, которое работает только для – njzk2

+0

Ок. Это хорошо знать. – Ranger

+0

Мое первое впечатление заключалось в том, что вы спрашиваете о [post-test loops] (https://en.wikipedia.org/wiki/Do_while_loop). – pasztorpisti

ответ

1
x = 0 
y = 10 
while x < y: 
    x +=1 

>>> x 
10 

Ну вы можете сделать это в одной строке, так как Python допускает, что:

x = 0 
while x < y: x +=1 

Это не читаемое, и он не соответствует PEP 8, но это выполнимо.

+0

Это работает, но я хотел сделать это в одной строке. Однако, если это невозможно, я соглашусь с этим. – Ranger

+0

О да, я никогда об этом не думал ... ну, я должен подождать десять минут, чтобы согласиться. :( – Ranger

0

Вы можете разделить каждое утверждение с запятой, как так ...

x = 0; y = 5 while(x < y): print(x); x=x+1

1

Вы могли бы сделать что-то вроде этого

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

То, что вы видите, это conditional expression но приходит по цене некоторой пониженной читаемости