提示用戶退出程序,你的做法是青銅還是王者?
大家在寫Python腳本時,經(jīng)常會遇到用戶交互的場景,然而其中不可或缺的一步就是告訴用戶,輸入某某鍵退出...那么,今天就來盤點下,有哪些實現(xiàn)退出場景的方式吧。
青銅級別
- # 青銅
- import sys
- user_input = input("輸入q,退出程序")
- if user_input == 'q':
- sys.exit()
使用input來判斷用戶輸入的方式,應(yīng)該是最low的了吧?不僅需要輸入,還需要用戶敲擊回車,才能夠完成參數(shù)獲取...適合Python入門一周的小選手。
白銀級別
- # 白銀
- import msvcrt
- user_input = msvcrt.getche()
- if user_input.decode() == 'q':
- exit()
msvcrt模塊允許您訪問Microsoft Visual C / C ++運行時庫(MSVCRT)中的許多函數(shù),可以動態(tài)監(jiān)聽單個char字符,然后返回byte字節(jié)。所以當(dāng)你的退出不是單個字符,而是字符串時,還需要進一步封裝...
王者級別
- # 王者
- import msvcrt
- quit_command = 'quit'
- listening_str = ''
- while True:
- user_input = msvcrt.getche()
- if isinstance(user_input, bytes):
- user_input = user_input.decode()
- if user_input == '\b':
- listening_str = listening_str[:-1]
- elif user_input in ['\n', '\r']:
- listening_str = ''
- else:
- listening_str += user_input
- print('listening_str now is: %s' % listening_str)
- if listening_str == quit_command:
- exit()
我們通過一個while循環(huán)實時監(jiān)控用戶的輸入,當(dāng)用戶回車時,清空字符串緩存。并且支持了用戶的刪除退格操作操作。相比于前兩者僅支持單次判定更提升了功能。來看看下圖的測試示例:

讓我們通過上圖看下效果,簡單執(zhí)行幾個場景的用例測試,均滿足要求。有涉及到的用戶退出監(jiān)聽的朋友們,快去感受下吧...
Tips:所有的用戶監(jiān)聽操作,都不能直接在Pycharm下使用,會存在沖突,因為軟件本身就是監(jiān)聽用戶的一種哦...