2017-06-17 4 views
0

この関数を使用してstdinから1文字を取得しようとしていて、入力した後にraw_inputがプロンプトを終了しません。私は私が好きなだけ多くの回数enterを押すことができ、次の行には移動しません。私が入力した後にRaw_Inputがプロンプトを終了しない

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 

また、私はUbuntuの16.04でのpython 2.7.12を使用していthis question.

からこのコードを取りました。

答えて

0

私はあなたのコード

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' 
>>> 

実行した場合、それはまさに私が何を期待しません。あなたは別の結果を得ますか(もしそうならば)、何か他のことを期待していますか?あなたが「私がエンターを押した後にプロンプ​​トを終了しない」という意味が明確ではありません。プロンプトに対してEnterキーだけを押したときに関数が戻ると思われる場合は、この行

if len(u_Input) == 1: 

を変更する必要があります。あなたがちょうどenterを押すと、len(u_Input)はゼロになります。

+0

...エラーが見つかりました。私は、プログラムがwhileループから抜け出し、必要なときにステップバックしないような値を入力していました。しかし、助けてくれてありがとう! – Kris

関連する問題