Выйдите из цикла пока пользователь нажимает клавишу ВВОД - PullRequest
9 голосов
/ 31 августа 2011

Я новичок в питоне, и меня попросили выполнить некоторые упражнения, используя циклы while и for.Меня попросили сделать программный цикл до тех пор, пока пользователь не нажмет кнопку выхода только по команде <Return>Пока у меня есть:

User = raw_input('Enter <Carriage return> only to exit: ')
running = 1
while running == 1:
    Run my program
if User == # Not sure what to put here
    Break
else
    running == 1

Я пытался: (как указано в упражнении)

if User == <Carriage return>

, а также

if User == <Return>

, но это только приводит кневерный синтаксис.Пожалуйста, не могли бы вы посоветовать мне, как сделать это самым простым способом?Спасибо

Ответы [ 14 ]

15 голосов
/ 25 июля 2013

Я столкнулся с этой страницей, пока (без каламбура) искал что-то еще.Вот что я использую:

while True:
    i = input("Enter text (or Enter to quit): ")
    if not i:
        break
    print("Your input:", i)
print("While loop has exited")
13 голосов
/ 20 марта 2014

Точная вещь, которую вы хотите;)

https://stackoverflow.com/a/22391379/3394391

import sys, select, os

i = 0
while True:
    os.system('cls' if os.name == 'nt' else 'clear')
    print "I'm doing stuff. Press Enter to stop me!"
    print i
    if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        line = raw_input()
        break
    i += 1
5 голосов
/ 30 января 2012

На самом деле, я полагаю, вы ищете код, который запускает цикл до нажатия клавиши на клавиатуре. Конечно, программа не должна все время ждать ввода пользователя.

  1. Если вы используете raw_input() в Python 2.7 или input() в Python 3.0, программа ожидает, пока пользователь нажмет клавишу.
  2. Если вы не хотите, чтобы программа ждала, пока пользователь нажмет клавишу, но все же хотите запустить код, то вам нужно сделать немного более сложную вещь, где вам нужно использовать функцию kbhit() в * 1009. *msvcrt модуль.

На самом деле, в ActiveState есть рецепт, где они решают эту проблему. Пожалуйста, перейдите по этой ссылке

Я думаю, что следующие ссылки также помогут вам лучше понять.

  1. кроссплатформенное прослушивание Python для нажатия клавиш

  2. Как получить одно нажатие клавиши одновременно

  3. Полезные подпрограммы из среды выполнения MS VC ++

Надеюсь, это поможет вам выполнить свою работу.

2 голосов
/ 31 августа 2011

Используйте оператор печати, чтобы увидеть, что raw_input возвращает, когда вы нажмете enter.Затем измените свой тест, чтобы сравнить с этим.

0 голосов
/ 28 ноября 2017

Это работает для Python 3.5 с использованием параллельной потоковой обработки.Вы можете легко приспособить это, чтобы быть чувствительным только к определенному нажатию клавиши.

import time
import threading


# set global variable flag
flag = 1

def normal():
    global flag
    while flag==1:
        print('normal stuff')
        time.sleep(2)
        if flag==False:
            print('The while loop is now closing')

def get_input():
    global flag
    keystrk=input('Press a key \n')
    # thread doesn't continue until key is pressed
    print('You pressed: ', keystrk)
    flag=False
    print('flag is now:', flag)

n=threading.Thread(target=normal)
i=threading.Thread(target=get_input)
n.start()
i.start()
0 голосов
/ 09 ноября 2017

У меня работает следующее:

i = '0'
while len(i) != 0:
    i = list(map(int, input(),split()))
0 голосов
/ 27 ноября 2016

Вы почти у цели.Самый простой способ сделать это - найти пустую переменную, которую вы получаете, нажимая ввод при запросе ввода.Мой код ниже 3,5

running = 1
while running == 1:

    user = input(str('Enter <Carriage return> only to exit: '))

    if user == '':
        running = 0
    else:
        print('You had one job...')
0 голосов
/ 01 мая 2016

Вот лучший и самый простой ответ.Используйте попытку, кроме звонков.

x = randint(1,9)
guess = -1

print "Guess the number below 10:"
while guess != x:
    try:
        guess = int(raw_input("Guess: "))

        if guess < x:
            print "Guess higher."
        elif guess > x:
            print "Guess lower."
        else:
            print "Correct."
    except:
        print "You did not put any number."
0 голосов
/ 31 июля 2015
user_input=input("ENTER SOME POSITIVE INTEGER : ")
if((not user_input) or (int(user_input)<=0)):    
   print("ENTER SOME POSITIVE INTEGER GREATER THAN ZERO") #print some info
   import sys        #import
   sys.exit(0)       #exit program 
'''
#(not user_input) checks if user has pressed enter key without entering  
# number.
#(int(user_input)<=0) checks if user has entered any number less than or 
#equal to zero.
'''
0 голосов
/ 06 марта 2015

было бы очень простое решение, и я вижу, вы сказали, что вы хотел бы увидеть самое простое решение возможно. Запрос пользователю продолжить после остановки цикла и т. Д.

raw_input("Press<enter> to continue")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...