web-dev-qa-db-fra.com

Quitter en boucle en appuyant sur la touche ENTREE.

Je suis un débutant en python et on m'a demandé d'effectuer des exercices en utilisant les boucles while et for. On m'a demandé de faire une boucle de programme jusqu'à ce que exit soit demandé par l'utilisateur, en appuyant sur <Return> uniquement. Jusqu'à présent j'ai:

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

J'ai essayé: (comme indiqué dans l'exercice)

if User == <Carriage return>

et aussi

if User == <Return>

mais cela n'aboutit qu'à une syntaxe invalide. Pourriez-vous me conseiller sur la façon de procéder de la manière la plus simple possible. Merci

8
Candace

Je suis tombé sur cette page alors que je cherchais autre chose. Voici ce que j'utilise:

while True:
    i = input("Enter text (or Enter to quit): ")
    if not i:
        break
    print("Your input:", i)
print("While loop has exited")
15
ptay

La chose exacte que tu veux;)

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
13
user3394391

En fait, je suppose que vous recherchez un code qui exécute une boucle jusqu’à ce que vous appuyiez sur une touche du clavier. Bien entendu, le programme ne devrait pas attendre que l'utilisateur le saisisse tout le temps.

  1. Si vous utilisez raw_input() en python 2.7 ou input() en python 3.0, le programme attend que l'utilisateur appuie sur une touche.
  2. Si vous ne voulez pas que le programme attende que l'utilisateur appuie sur une touche mais que vous vouliez tout de même exécuter le code, vous devez alors effectuer une opération un peu plus complexe en utilisant la fonction kbhit() dans msvcrt module.

En fait, il existe une recette dans ActiveState où ils ont abordé ce problème. S'il vous plaît suivez ce link

Je pense que les liens suivants vous aideraient également à mieux comprendre.

  1. Python cross plate-forme écoute pour les pressions de touches

  2. Comment obtenir une seule touche à la fois

  3. Routines utiles du runtime MS VC++

J'espère que cela vous aide à faire votre travail.

5
Surya

Utilisez une instruction print pour voir ce que raw_input renvoie lorsque vous appuyez sur enter. Puis changez votre test pour le comparer.

2
Tom Zych
if repr(User) == repr(''):
    break
0
hymloth

Vous êtes presque là. Pour ce faire, le moyen le plus simple consiste à rechercher une variable vide, qui correspond à ce que vous obtenez lorsque vous appuyez sur Entrée lors d’une demande d’entrée. Mon code ci-dessous est 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
DaNNuN

Cela fonctionne pour python 3.5 utilisant un threading parallèle. Vous pouvez facilement adapter cela pour qu'il ne soit sensible qu'à une frappe spécifique.

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
gtcoder

une solution très simple serait, et je vois que vous avez dit que vous voudriez voir la solution la plus simple possible. Un message invitant l’utilisateur à continuer après avoir interrompu une boucle, etc.

raw_input("Press<enter> to continue")
0
crackedshiva

Voici la meilleure et la plus simple des réponses. Utilisez essayez et sauf les appels.

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
Oybek
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
MIGHTY BOMBER

Vous devez savoir à quoi ressemblerait la variable User lorsque vous appuyez simplement sur Entrée. Je ne vous donnerai pas la réponse complète mais un conseil: renvoyez un interprète et essayez-le. Ce n'est pas si difficile;) Notez que le sep de print est '\ n' par défaut (était-ce trop: o)

0
naeg