2017-06-17 6 views
0

J'essaie de prendre un caractère du stdin en utilisant cette fonction et raw_input ne terminera pas l'invite après que j'appuie sur Entrée. Je peux appuyer sur Entrée autant de fois que je le souhaite et ne passera pas à la ligne suivante.Raw_Input ne se termine pas l'invite après que j'appuie sur Entrée

def userInput(): 
    print "What would you like to do?" 
    while True: 
      u_Input = raw_input(':') 
      if len(u_Input) == 1: 
        break 
      print 'Please enter only one character' 
    return u_Input 

J'ai aussi pris ce code de this question.

J'utilise python 2.7.12 sur Ubuntu 16.04.

Répondre

0

Si je lance votre code

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> def userInput(): 
...  print "What would you like to do?" 
...  while True: 
...    u_Input = raw_input(':') 
...    if len(u_Input) == 1: 
...      break 
...    print 'Please enter only one character' 
...  return u_Input 
... 
>>> userInput() 
What would you like to do? 
:53 
Please enter only one character 
:57 
Please enter only one character 
:a 
'a' 
>>> 

il fait exactement ce que je pense. Avez-vous des résultats différents (si oui, quoi?) Ou vous attendez-vous à autre chose (et encore, si oui, quoi?). Ce n'est pas très clair ce que vous voulez dire par "ne mettra pas fin à l'invite après avoir frappé". Si vous attendez de votre fonction de revenir lorsque vous appuyez sur la touche Entrée uniquement en réponse à l'invite, puis cette ligne

if len(u_Input) == 1: 

doit changer. Si vous appuyez simplement sur Entrée, len(u_Input) sera égal à zéro.

+0

... a trouvé l'erreur. Je saisissais une valeur qui faisait sortir le programme d'une boucle et ne revenait pas quand il le fallait. Merci pour l'aide en tout cas! – Kris