Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 11, 2009 11:25:39

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

Приветствую!

Есть цикл

while 1: 
.....
bla bla bla
....
Нужно сделать так чтобы по нажатию клавиши (можно любой, но лучше какой-то определенной, например Enter) цикл прерывался и происходит дальнейшее выполнение программы.


Спасибо.



Офлайн

#2 Окт. 11, 2009 18:12:23

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

почитай в сторону процедуры continue

Офлайн

#3 Окт. 12, 2009 01:07:28

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

sypper-pit
почитай в сторону процедуры continue
вопрос в другом. как определить нажата клавиша или нет без прерывания цикла.

т.е. цикл идет, проходит проверка(если кнопка не нажата ) цикл продолжается
как только нажимается кнопка программа выполняется дальше.


т.е. должно быть что-то типа

while 1: 
print "bla"
if (что здесь писать не знаю):
print "кнопка нажата"
break



Офлайн

#4 Окт. 12, 2009 10:50:12

lamb
От:
Зарегистрирован: 2009-10-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

в консоли под Windows можно попробовать что-то типа такого:

import msvcrt

while not msvcrt.kbhit(): # не нажата ли клавиша?
pass
или
import msvcrt

while True:
if msvcrt.kbhit(): # Нажата ли клавиша?
key = ord(msvcrt.getch()) # Какая клавиша нажата?
if key == 13: # если Enter:
break



Офлайн

#5 Окт. 12, 2009 13:13:59

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

window не интересует.
будет скрипт под Linux



Офлайн

#6 Окт. 12, 2009 13:47:10

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

Читай про raw_input()



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано (Окт. 12, 2009 13:47:25)

Офлайн

#7 Окт. 12, 2009 13:50:50

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

raw_input() это понятно. но оно останавливает выполнение программы и ждет нажатия клавиши.
да и в данном случае лучше использовать sys.stdin.read()



Офлайн

#8 Окт. 12, 2009 13:51:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

Rodegast
Читай про raw_input()
не прокатит, ибо…
pochechyev
т.е. цикл идет, проходит проверка(если кнопка не нажата ) цикл продолжается
смотри в сторону signal



Офлайн

#9 Окт. 12, 2009 18:12:15

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

Я такую штуку проделывал. но понадобится перевести терминал в raw режим. И стандартными средствами увы никак.
Конкретно читать man termios
Если найду пример, отпишусь здесь.



Офлайн

#10 Окт. 13, 2009 05:44:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Прерывание цикла по нажатию клавиши

pochechyev
window не интересует.
будет скрипт под Linux
Бросьте этих глупостей. Интерактивщина в терминале не нужна.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version