Ну, відштовхуючись від вашого прикладу, можна спробувати такі способи:
1)
s = raw_input()
numbers = map(int, s.split())
2)
numbers = [int(x) for x in input().split()]
Принаймні, щоб хоч не було отого розпаковування, коли у вас дійсно невідома наперед кількість чисел. А так то можна ще кілька способів придумати, навіть просто введення "по одному".
Якщо ж без імпорту модулів, ну є різні алгоритми, можна погуглити. Можна спробувати якось так:
1) вважаємо, що у вас є N чисел, для прикладу, візьмемо N=5, їхні значення - ABCDE;
2) отже потрібно, імітувати цикли виду:
a : від 0 до A,
b : від 0 до B...
....
e : від 0 до E
Підемо як вкладені цикли з кінця, тобто змінюемо "e", коли е стане E, то ми повинні збільшити d на 1, а е = 0. І пішло далі.
Очевидно, що тут краще скористатися одним загальним циклом while, і перевіряти умову чи продовжувати цикл. А цикл зупинити тоді, коли у нас abcde стане ABCDE.