亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無需按 Enter 即可在 Python 中獲取單個字符作為輸入(類似于 C++ 中的 getch)

無需按 Enter 即可在 Python 中獲取單個字符作為輸入(類似于 C++ 中的 getch)

慕的地8271018 2023-02-07 10:48:44
首先,我是 Python 的新手,剛剛開始學習它。然而,我知道很多關于 C++ 的東西,我只是想在 Python 中實現其中的一些。我已經對其進行了大量搜索,但找不到適合我要求的任何解決方案。請看下面的代碼,import osclass _Getch:    """Gets a single character from standard input.  Does not echo to thescreen."""    def __init__(self):    try:        self.impl = _GetchWindows()    except:        print("Error!")    def __call__(self): return self.impl()class _GetchWindows:    def __init__(self):        import msvcrt    def __call__(self):        import msvcrt        return msvcrt.getch()def mainfun():    check = fh = True    while check:        fh = True        arr = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]        print ("Welcome to Tic Tac Toe Game!!!\n\n")        print("Enter 1 to Start Game")        print("Enter 2 to Exit Game")        a = _Getch()        if a == "1":            while fh:                os.system("cls")                drawboard()                playermove()                fh = checkresult()        elif a == "2":            break       如您所見,我在這里嘗試做的是要求用戶按 1 和 2 中的一個數字,然后將該數字存儲在“a”中,然后將其用于我的要求?,F在,我首先嘗試使用它,    input('').split(" ")[0]但這沒有用。它要求我在輸入 1 或 2 后始終按 Enter 鍵。所以,那是行不通的。然后我找到了這個類的Getch,并實現了它。長話短說,它讓我進入了一個永無止境的循環,現在我的結果是這樣的,Welcome to Tic Tac Toe Game!!!Enter 1 to Start GameEnter 2 to Exit GamePress Enter to Continue....Welcome to Tic Tac Toe Game!!!Enter 1 to Start GameEnter 2 to Exit GamePress Enter to Continue....Welcome to Tic Tac Toe Game!!!Enter 1 to Start GameEnter 2 to Exit GamePress Enter to Continue....這是一個永無止境的循環......即使我按下任何鍵,如“1”或“2”,它仍然不會停止并繼續執行此操作并且不輸入任何功能。我想要的是類似這樣的功能,它應該在 PYCHARM 控制臺上工作(我正在練習,我不想在終端上練習。我習慣使用我正在使用的 IDE 的控制臺)它暫停并等待用戶輸入任何輸入(就像輸入一樣)它接受用戶輸入的第一個密鑰并將其存儲到變量中。就像在這種情況下,如果用戶按下“1”,那么它應該將該字符存儲在“a”中,然后繼續前進。您不必按“ENTER”繼續。如果用戶按下任何其他按鈕,如“a”或“b”或類似的任何東西,它不會做任何事情并繼續要求輸入,直到輸入所需的數字“1”或“2”(我認為可以很容易地在這個 while 循環中處理)換句話說,我只想在 Python 中替代 C++ 的 getch() 命令。我已經嘗試了很多方法來找到它,但我找不到。請向我推薦一個問題,該問題提供了這個確切問題的解決方案或在此處提供解決方案。謝謝。
查看完整描述

2 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

看起來此功能不在標準 python 庫中,但您可以重新創建它。


首先,安裝模塊“鍵盤”


 $ pip3 install keyboard

然后你可以使用 keyboard.is_pressed() 來查看是否按下了任何一個字符。


import keyboard  # using module keyboard

import string # use this to get the alphabet


print("Input a character")


def getch():

    alphabet = list(string.ascii_lowercase)

    while True:

        for letter in alphabet: # detect when a letter is pressed

            if keyboard.is_pressed(letter):

                return letter

        for num in range(10): # detect numbers 0-9

            if keyboard.is_pressed(str(num)):

                return str(num)


answer = getch()


print("you choose " + answer)

編輯:對于 unix,您需要使用 sudo 運行腳本。此代碼在 Windows 上應該可以正常工作。


查看完整回答
反對 回復 2023-02-07
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

對于 EDIT-2:使用以下代碼刷新屏幕:

sys.stdout.flush()


查看完整回答
反對 回復 2023-02-07
  • 2 回答
  • 0 關注
  • 377 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號