Вложенные циклы for Python
Доброго времени суток!
for i in range(0,4):
for l in range(0,5):
print(i, l)
У меня получается результат
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
и т.д
а надо чтобы было
0 0 1
0 1 2
0 2 3
0 3 4
0 4 5
1 0 6
1 1 7
1 2 8
1 3 9
...
3 4 20
плз. подскажите
Ответы (2 шт):
Вам достаточно применить только один цикл:
for i in range(1, 21):
print((i - 1) // 5, (i - 1) % 5, i)
Вывод:
0 0 1 0 1 2 0 2 3 0 3 4 0 4 5 1 0 6 1 1 7 1 2 8 1 3 9 1 4 10 2 0 11 2 1 12 2 2 13 2 3 14 2 4 15 3 0 16 3 1 17 3 2 18 3 3 19 3 4 20
Объяснение:
В последнем столбце вы хотели числа от 1 до 20, потому последний параметр функции
print()тот же самый, как переменная цикла (т.е. простоi).В первом и втором столбце вы хотите начинать с нуля, потому выражения в первом и втором столбце начинаются из
(i - 1).Теперь, в первом столбце вы хотите 5 нулей, затем 5 единиц и т.д. Эти числа получим из последовательности 0, 1, 2, ..., 18, 19 как целочисленное деление (
//) числом 5 (т.е. отброся остаток).Но и во втором столбце будет именно этот остаток (оператор
%- деление по модулю, т.е. остаток от деления).
Примечание:
Функция range(1, 21) генерирует числа от 1 (включительно) до 21 (невключительно), т.е. числа 1, 2, 3, ...,19, 20 как вы, вероятно, хотели в последнем столбце.
Значит, как второй параметр нужно задать число на 1 больше, чем последнее желательное.
Возможно также применить стандартную функцию divmod(), которая одновременно возвращает как результат целочисленного деления, так и остаток — в виде пары
(частное, остаток):
for i in range(1, 21):
j, k = divmod(i, 5)
print (j, k, i)