파이썬 키보드 입력 받기 - paisseon kibodeu iblyeog badgi

Unit 8. 입력 값을 변수에 저장하기

본격적으로 코딩 도장에서 심사를 하려면 입력 값을 변수에 저장할 수 있어야 합니다. 코딩 도장에서는 사람이 손으로 입력하는 대신 자동으로 값을 입력해준다 하더라도 입력 부분은 반드시 처리해주어야 합니다.

윈도나 macOS처럼 GUI 화면이 나오는 프로그램은 마우스와 키보드를 사용하여 입력을 받습니다. 하지만 파이썬을 배울 때는 IDLE이나 콘솔(터미널, 명령 프롬프트)에서 글자만 입출력 하게 되죠. 이렇게 콘솔에서 입력하는 방식을 표준 입력(standard input, stdin), 출력하는 방식을 표준 출력(standard output, stdout)이라 합니다.

먼저 input 함수를 사용하여 표준 입력으로 사용자의 입력을 받아보겠습니다.

  • 변수 = input()
  • 변수 = input(문자열)

>>>에서 input()을 입력한 뒤 엔터 키를 누르면 다음 줄로 넘어갑니다. 그리고 Hello, world!를 입력한 뒤 엔터 키를 누르면 입력한 그대로 출력됩니다.

>>> input() Hello, world! (입력) 'Hello, world!'

input이 실행된 다음에는 아무 내용이 없어서 입력을 받는 상태인지 출력이 없는 상태인지 알 수가 없습니다. 이때는 input의 괄호 안에 문자열을 지정합니다.

>>> input('문자열을 입력하세요: ') 문자열을 입력하세요: Hello, world! (입력) 'Hello, world!'

'문자열을 입력하세요: '처럼 안내 문구가 먼저 나옵니다. 여기에 문자열을 입력한 뒤 엔터 키를 누르면 입력한 그대로 출력됩니다. 즉, 이 문자열은 스크립트 파일 사용자에게 입력받는 값의 용도를 미리 알려줄 때 사용합니다. 다른 말로는 프롬프트(prompt)라고도 부릅니다(파이썬 프롬프트 >>>와 같은 의미입니다).

이번에는 input을 스크립트 파일로 만들어보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력한 뒤 실행해보세요.

input_string.py

s = input('문자열을 입력하세요: ')     # 사용자의 입력을 변수에 저장   print(s)     # 변수의 내용을 출력

소스 코드를 실행하면 '문자열을 입력하세요: '만 출력됩니다. 이 상태에서 Hello, world!를 입력하고 엔터 키를 누르세요.

실행 결과

문자열을 입력하세요: Hello, world! (입력) Hello, world!

마찬가지로 입력한 내용이 그대로 출력됩니다. input은 표준 입력을 받는 함수이며 주로 입력 값을 변수에 저장해서 사용합니다.

참고 | 표준 입력, 표준 출력

콘솔(터미널, 명령 프롬프트)에서는 키보드 입력이 표준 입력이고, 콘솔에 글자를 보여주는 것이 표준 출력입니다. 표준 입력과 표준 출력의 형태는 정해져 있지 않고 설정하기에 따라 달라집니다. 즉, 리다이렉션(<, >)과 파이프(|)라는 것을 사용하면 파일의 내용을 표준 입력으로 보낼 수도 있고, 표준 출력을 파일로 저장할 수도 있습니다. 파이썬 코딩 도장에서는 입력 값을 사람이 직접 입력하지 않고 리다이렉션과 파이프를 통해 자동으로 표준 입력에 값을 입력시킵니다.

  1. Python에서keyboard 모듈을 사용하여 키 누름 감지
  2. Python에서pynput 모듈을 사용하여 키 누름 감지

키보드와 같은 입력 장치와 같은 하드웨어에 액세스해야하는 경우 Python에서 사용 가능한 모듈이있어 삶을 훨씬 쉽게 만들 수 있습니다. 이러한 모듈을 사용하면 시스템의 복잡성을 처리하지 않고도 원하는 작업을 쉽게 수행 할 수 있습니다.

이 기사에서는 Python의 모듈을 사용하여 키 누르기를 감지하는 방법을 배웁니다. Python에서 키 누르기를 감지하는 데 사용되는 모듈이 많이 있으며 그 중에서 가장 인기 있고 널리 사용되는 두 모듈은keyboard및pynput입니다.

Python에서keyboard 모듈을 사용하여 키 누름 감지

keyboard 모듈을 사용하면 키보드를 완전히 제어 할 수 있으며 선택할 수있는 사전 정의 된 다양한 방법이 제공됩니다. 이러한 방법을 사용하면 키보드 작업을 훨씬 쉽게하고 키보드에서 사용자의 물리적 키 누르기를 감지 할 수 있습니다.

keyboard모듈을 설치하려면 명령 프롬프트 또는 터미널에서 아래 명령을 실행하십시오.

pip3 install keyboard

먼저keyboard모듈을 프로그램으로 가져와야합니다. 여기에서는 Python read_key(), is_pressed()및on_press_key()에서 키 누르기를 감지하는 세 가지 방법을 사용합니다.

import keyboard while True: if keyboard.read_key() == "p": print("You pressed p") break while True: if keyboard.is_pressed("q"): print("You pressed q") break keyboard.on_press_key("r", lambda _:print("You pressed r"))

출력:

You pressed p You pressed q You pressed r

read_key()는 사용자가 키보드에서 눌렀 던 키를 읽고 원하는 키 (이 경우p) 인 경우You pressed p메시지를 인쇄합니다. read_key()함수는 문자를 반환합니다.

is_pressed()는 문자를 입력으로 취하고 사용자가 누른 키와 일치하면True및False를 반환합니다.

on_press_key()는 두 개의 매개 변수를 입력으로 취합니다. 첫 번째는 문자이고 두 번째는 함수입니다. 사용자가on_press_key()함수의 첫 번째 매개 변수로 지정된 키와 일치하는 키를 누르면 두 번째 매개 변수로 전달한 함수 만 실행됩니다.

Python에서pynput 모듈을 사용하여 키 누름 감지

pynput 모듈은 주로 마우스와 키보드와 같은 입력 장치를 감지하고 제어하는 데 사용됩니다. 그러나이 자습서에서는 키보드에서 키 누르기를 감지하는 데이 모듈을 사용하는 방법 만 볼 수 있습니다. 이 모듈을 사용하기 전에 먼저 아래 명령을 사용하여 설치해야합니다.

pip3 install pynput

이 모듈을 키 누름 감지에 사용하려면 먼저pynput모듈에서keyboard를 가져와야합니다.

from pynput import keyboard def on_press(key): try: print('Alphanumeric key pressed: {0} '.format( key.char)) except AttributeError: print('special key pressed: {0}'.format( key)) def on_release(key): print('Key released: {0}'.format( key)) if key == keyboard.Key.esc: # Stop listener return False # Collect events until released with keyboard.Listener( on_press=on_press, on_release=on_release) as listener: listener.join()

출력:

Alphanumeric key pressed: a Key released: 'a' Alphanumeric key pressed: b Key released: 'b' special key pressed: Key.ctrl_l Key released: Key.ctrl_l

위의 출력은 사용자가 어떤 키를 눌렀는지에 따라 달라질 수 있습니다.

키 누르기를 감지하기 위해on_press및on_release의 두 가지 기능을 정의합니다. on_press기능은 사용자가 키보드의 버튼을 누를 때 실행되며 사용자가 해당 버튼을 놓 자마자on_release기능이 실행됩니다.

두 기능 모두 사용자가 눌렀다 놓은 키만 콘솔 창에 인쇄합니다. 요구 사항에 따라이 두 기능의 구현을 변경할 수 있습니다.

그런 다음 마지막에 키보드 이벤트를 수신하는 리스너가 있으며 그에 따라on_press및on_release기능을 실행합니다.

Toplist

최신 우편물

태그