Просто соберите свой ввод за пределами цикла (перед тем, как войти в цикл). Вы действительно хотите, чтобы пользователь ввел 1000 номеров? ну, может быть, вы делаете. но просто включите цикл вверху, соберите 1000 чисел в начале и сохраните их в массиве.
затем в нижней половине измените цикл, чтобы он просто выполнял всю работу. тогда, если кто-то вводит что-то без клавиатуры, это больше не имеет значения.
как то так:
def getvars(top=1000):
vars = []
for i in range(0,top):
anum = int(raw_input('%d) Please enter another number: ' % i))
vars.append(anum)
return vars
def doMagic(numbers):
top = len(numbers)
for number in numbers:
# do magic number stuff
print 'this was my raw number %s' % number
if __name__ == "__main__":
numbers = getvars(top=10)
doMagic(numbers)
представлен другим способом и менее зависим от ОС
Есть еще один способ сделать это, который должен работать. У меня нет окна, удобного для тестирования, но я использовал этот прием и довольно недокументирован. Возможно, я выдаю секреты ... но это в основном так: обманом заставьте думать, что ваше приложение является заставкой, вызывая API, который включает функцию заставки в начале ваших магических вычислений. в конце ваших волшебных вычислений или когда вы снова готовы принять ввод, снова вызовите API и отключите функцию заставки.
Это бы сработало.
Есть и другой способ сделать это. Поскольку вы находитесь в Windows, это тоже будет работать. но это изрядное количество работы, но не слишком много. В окнах окно, находящееся на переднем плане (вверху Z-порядка), это окно получает «необработанный поток ввода». Необработанный поток ввода получает ввод от мыши и клавиатуры. Таким образом, чтобы захватить все входные данные, все, что вам нужно сделать, - это создать функцию, которая стоит в прозрачном или (непрозрачном) окне, которое находится в верхней части Z-последовательности. SetWindowPos сделает свое дело, охватит весь экран и, возможно, отобразит сообщение, такое как Эвен Гедульд
когда вы готовы запросить у пользователя дополнительные данные, вы используете showwindow (), чтобы скрыть окно, показать предыдущие результаты, получить ввод, а затем заново отобразить окно и снова захватить клавиши / мышь.
Конечно, все эти решения привязывают вас к конкретной ОС, если вы не реализуете какую-то попытку / исключая обработку и / или перенос низкоуровневых вызовов Windows SDK.