2017-02-14 27 views
-1
x=0 
y=0 

while 1==1: 

    while y!=5: 
     y=y+1 
     print(str(x) + str(y)) 


    else: 
     x=x+1 
     #NOW GO TO WHILE 1==1 AND DO THAT AGAIN 

Этот код должен напечатать 01; 02; 03; 04; 05, а затем он должен печатать 11; 12; 13; 14; 15. Но на самом деле он делает только первые пять отпечатков, потому что я не знаю, как вернуться к началу после else:.Как вернуться в начало цикла с еще

EDIT: Мне очень жаль, я попытался сделать код более понятным, и вместо этого я сделал несколько ошибок, что действительно не проблема.

+4

Что вы имеете в виду? Он всегда держит петлю. Он всегда возвращается к 'while 1 == 1'. Единственное, что 'y' увеличивается до тех пор, пока оно не станет равным' 5', поэтому больше не будет выполняться печать внутри цикла. –

+0

... 'продолжать'? И не забудьте сбросить 'y = 0'. –

+0

Второй цикл while не будет введен после y = 5. Проблема заключается не в переходе от 'else' к началу, а в том, что ваша логика не имеет смысла. Также вы используете 'else' без' if' перед рукой, что не сработает. –

ответ

2

Вот рабочий код с аналогичной структурой, чем ваша:

x = 0 
y = 0 

while x != 2: 
    while y != 5: 
     y = y + 1 
     print(str(x) + str(y)) 
    else: 
     y = 0 
     x = x + 1 

Но, пожалуйста, не делайте этого. Вместо этого:

for x in range(2): 
    for y in range(5): 
     print '%d%d' % (x,y+1) 
+1

И если вы используете Python 2, 'xrange' будет лучшей идеей, чем' range'. –

+0

@FredLarson: Я не могу угодить всем. Вчера кто-то жаловался, потому что я использовал 'xrange';) Кроме того, учитывая код в OP, я думаю, что правильные результаты и читаемость приходят до исполнения IMHO. –

+2

Я вообще не собирался критиковать ваш ответ. Просто добавим немного. Вероятно, это действительно не имеет никакого значения в коде, это тривиально. –

0

Я бы сказал, что лучший подход - сделать вложенный цикл.

0
from itertools import count 

for x in count(): 
    [print('{}{}'.format(x, y)) for y in range(1, 6)] 

и это Pythonic (надеюсь, что это не ваше домашнее задание).

0

Просто удалите else: и используйте отформатированную печать, чтобы избежать печати суммы.

Лучше версия вашего кода:

x = 0 
while 1 == 1: 
    y = 1 
    while y <= 5: 
     print '%d%d' % (x,y) 
     y = y+1 
    x = x+1 
+0

Спасибо за уловку, бу, что это действительно не проблема, я был просто глуп и делал несколько ошибок при попытке переписать исходный код, чтобы упростить его. – CandyKing

0

Прежде всех кодовых выходов:

1 
2 
3 
4 
5 

, а затем останавливается. То, что вы просите это:

01 
02 
03 
04 
05 
11 
12 
13 
[...] 

Чтобы получить этот вывод, что нужно бесконечный цикл, который непрерывно инкрементирует x, чтобы сделать это начать с этой частью коды:

x = -1 
while True: 
    x += 1 

Вы тогда нуждающимся петля, которая будет увеличиваться у от 1 до 5 и напечатать конкатенации х и у:

for y in range(5): 
    print(str(x) + str(y+1)) 

гнездо для цикла в то время цикла и вуаля!

x = -1 
while True: 
    x += 1 
    for y in range(5): 
     print(str(x) + str(y+1))