Первый путь
Ваш способ будет работать, но вы должны помнить, что нужно сбрасывать счетчики циклов на каждой итерации.
a = 0
b = 0
c = 0
while a <= 5:
while b <=3:
while c <= 8:
print a , b , c
c += 1
b += 1
c = 0 # reset
a += 1
b = 0 # reset
c = 0 # reset
Второй способ (Pythonic)
Первый способ включает много бухгалтерии. В Python более простой способ задать цикл для диапазона чисел - использовать цикл for
над итератором xrange
*:
for a in xrange(5+1): # Note xrange(n) produces 0,1,2...(n-1) and does not include n.
for b in xrange (3+1):
for c in xrange (8+1):
print a,b,c
- Примечание: в Python 3
xrange
теперь называется range
. (Или, точнее, Python 3 range
заменяет Python 2.x range
и xrange
.)
Третий способ (лучший)
Второй способ может быть упрощен применением itertools.product()
, которое принимает несколько итераций (списков) и возвращает каждую возможную комбинацию каждого элемента из каждого списка.
import itertools
for a,b,c in itertools.product(xrange(5+1),xrange(3+1),xrange(8+1)):
print a,b,c
Чтобы узнать об этих приемах и прочем, прочитайте "Код, подобный Pythonista: Idiomatic Python" Дэна Гуджера .