web-dev-qa-db-ja.com

ユーザーがEnterキーを押してループを終了する

私はpython初心者で、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>

しかし、これは無効な構文をもたらすだけです。最も簡単な方法でこれを行う方法について教えてください。ありがとう

9
Candace

他の何かを探している間に(しゃれはしませんが)私はこのページに出くわしました。これが私が使うものです:

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

あなたが望む正確なもの;)

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

実際、キーボードからキーが押されるまでループを実行するコードを探していると思います。もちろん、プログラムはユーザーが入力するのを常に待つべきではありません。

  1. python 2.7またはraw_input() in python 3.0でinput()を使用すると、プログラムはユーザーがキーを押す。
  2. ユーザーがキーを押すのをプログラムに待たせたくないが、それでもコードを実行したい場合は、kbhit()関数を使用する必要があるもう少し複雑なことを行う必要があります- msvcrt モジュール。

実際、ActiveStateには、この問題に対処したレシピがあります。これに従ってください link

以下のリンクは、理解を深めるのにも役立ちます。

  1. キー押下をリッスンするPythonクロスプラットフォーム

  2. 一度に1つのキーを押す方法

  3. MS VC++ランタイムからの便利なルーチン

これがあなたの仕事を成し遂げるのに役立つことを願っています。

5
Surya

印刷ステートメントを使用して、raw_inputは、enterを押すと戻ります。次に、テストを変更して、それと比較します。

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

あなたはもうすぐそこです。これを行う最も簡単な方法は、空の変数を検索することです。これは、入力要求でEnterキーを押したときに取得されるものです。以下の私のコードは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

これは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
gtcoder

非常に簡単な解決策があり、可能な限り最も簡単な解決策を見たいとおっしゃっていたと思います。ループの停止後、ユーザーに続行を求めるプロンプトなど。

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

これが最良かつ最も簡単な答えです。 tryおよびexcept呼び出しを使用します。

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

Enterキーを押すだけで変数Userがどのようになるかを調べる必要があります。完全な答えはお伝えしませんが、ヒント:通訳を解雇して試してみます。それほど難しくありません;)printのsepはデフォルトで '\ n'であることに注意してください(それは多すぎました:o)

0
naeg