2016-09-27 2 views
-1

Я новичок в python и имею назначение «Использовать два вложенных цикла для цикла. Подсчитайте во внешнем для цикла от 0 до 9, а затем на каждом шаге отсчитайте до нуля».Подсчет Python во вложенных forloops

Ответ должен быть таким:

i= 0 
k= 0 
i= 1 
k= 1 
k= 0 
i= 2 
k= 2 
k= 1 
k= 0 
i= 3 
k= 3 
k= 2 
k= 1 
k= 0 
i= 4 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 5 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 6 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 7 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 8 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 9 
k= 9 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 

Таким образом, каждый раз, когда я подсчитывает, к отсчитывает начиная с предыдущего значения I. Я считаю, что понимаю общую концепцию вложенных forloops, но я не уверен, что моя проблема заключается в определении диапазона для k или при печати i и/или k. Вот что у меня есть:

for i in range(0,10): 
for k in range(i+1): 
    print 'i=',i,'' 
    print 'k=',k,'' 

Но это не дает мне то, что мне нужно. Кажется, что k поднимается, когда я запускаю его, вероятно, из-за (i + 1), но это самый близкий ответ, который я получил до сих пор, и у меня было много проблем. Я не ищу ответа, но если кто-то может указать мне в правильном направлении, это будет очень полезно. Благодаря!

+0

Проверить документ для 'range' –

ответ

0

Вам просто понадобится ваш второй цикл для перехода назад, а не вперед. Сейчас он идет от 0 до i.

Синтаксис для этого:

for k in range(i, -1, -1): 

Это начинается на K I, до тех пор, пока к не -1, -1 применяя к ней в каждой итерации.

Так что ваша полная программа будет:

for i in range(0,10): 
    print 'i=',i,'' 
    for k in range(i, -1, -1): 
     print 'k=',k,'' 

Выход:

i= 0 
k= 0 
i= 1 
k= 1 
k= 0 
i= 2 
k= 2 
k= 1 
k= 0 
i= 3 
k= 3 
k= 2 
k= 1 
k= 0 
i= 4 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 5 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 6 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 7 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 8 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
i= 9 
k= 9 
k= 8 
k= 7 
k= 6 
k= 5 
k= 4 
k= 3 
k= 2 
k= 1 
k= 0 
+0

Спасибо за ваш ответ. Это имеет больше смысла и, безусловно, ближе к тому, что мне нужно, но это все еще не совсем то же самое. В моем сообщении k отсчитывает все до нуля каждый раз, когда я подсчитываю, поэтому в строке есть несколько k, а не каждая другая строка, равная k. Означает ли это, что диапазон для k по-прежнему является проблемой или мне не хватает чего-то еще, что мне нужно включить? Благодаря! – an223

+0

@ an223 Мой ответ предназначен для включения в вашу программу и замены второго цикла. Я обновил ответ, чтобы показать вам полную программу, которая делает то, что вы хотите. – gowrath

+0

@ an223 Проверьте сейчас. – gowrath

Смежные вопросы