Как я могу запретить пользователю использовать свою клавиатуру до тех пор, пока программе не потребуется ввод в Python?

Я новичок в python, и я создавал игру с вопросом / ответом, в которой программа просила игрока ответить, и игрок может дать ей ввод. Однако есть проблема, которая позволяет игроку спамить случайный ключ в любой точке программы, испортив ее саму.

Например: в самом начале программы игрок может нажать любую клавишу на клавиатуре, и программа считает это ответом на первый вопрос, при этом вопрос никогда не появляется. Мой вопрос: есть ли способ заблокировать клавиатуру до тех пор, пока игроку не понадобится ее использовать?

Вот мой код:

import time

print("Hello, what is your name?")
time.sleep(1)
print("Don't be shy, I promise I won't bite....")
time.sleep(1)
print("or hack your device")
time.sleep(1)
name = raw_input ("type in your name: ")
time.sleep(2)
print("So, your name is"), name
time.sleep(2)
print("So"), name 
time.sleep(1)
print("tell me about yourself")
time.sleep(1)
print("What is your favorite color")
time.sleep(1)
color = raw_input ("Type in your favorite color: ")
time.sleep(2)
print("Is"), color 
time.sleep(1)
print("your favorite color?")
time.sleep(1)
yes = raw_input ("YAY or NEIN: ")
time.sleep(2)
print("Very well, from what I know your name is"), name + (" Your favorite color is"), color
time.sleep(2)
print("Have a good day"), name
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
36
1

Ответы 1

Одна вещь, которую вы можете сделать, - это перенаправить стандартный ввод от вашей программы - это не мешает пользователю печатать на своей клавиатуре, но делает не позволяет вашей программе обращать на это внимание. Работает это так:

import sys
import os

stdin_backup = sys.stdin         # preserve the usual standard input in a variable
devnull = open(os.devnull, 'w')  # open /dev/null, which is where we pipe input we don't care about to

sys.stdin = devnull              # redirect standard input to devnull
print(...)                       # do a bunch of printing
sys.stdin = stdin_backup         # set standard input to pay attention to the console again
name = raw_input("type in your name: ")  # get input from user
sys.stdin = devnull              # start ignoring standard input again
...

По сути, вы захотите выключить stdin всякий раз, когда вы не хотите, чтобы пользовательский ввод влиял на программу, а затем снова включите его, когда пользовательский ввод необходим.

Другие вопросы по теме