python?命令行界面的用戶交互及優(yōu)化
背景
說一千,道一萬,程序是為用戶服務的,所以在程序運行過程,與用戶交互以獲取用戶的信息輸入和決策確認,是無法避免的編程需要考慮和解決的需求。
一個簡單的demo
如下的程序中,程序需要生成一個新的 id_rsa.pub 文件,但是不巧,程序的工作目錄下已經存在了一個 id_rsa.pub 文件。我們需要告知用戶并獲得用戶的決策指示,以便可以做出用戶希望的行為。
下面的代碼使用 input 向用戶發(fā)起交互:
# -*- coding:UTF-8 -*- # region 引入必要依賴 from DebugInfo.DebugInfo import * # endregion if __name__ == "__main__": 畫板: 打印模板 = 打印模板(False) 畫板.執(zhí)行位置(__file__) 交互端: 交互接口類 = 交互接口類() 畫板.消息('程序已經開始運行...') 畫板.消息('生成新的 id_rsa.pub 文檔...') 用戶選擇 = input('此操作將會刪除原有文本,請問是否繼續(xù)(y:繼續(xù); n:返回): ') if 用戶選擇: if 用戶選擇 in 'yY': 畫板.消息(綠字('您選擇了繼續(xù),感謝信任...')) elif 用戶選擇 in 'nN': 畫板.消息(紅字('您選擇了返回,您是一個謹慎的人')) else: 畫板.提示錯誤('您輸入了非期望的指示') else: 畫板.提示錯誤('您沒有輸入任何值')
??上面的代碼中,我們提示用戶輸入決策,并對用戶輸入的決策進行判斷和反饋:
- 當用戶輸入 y or Y 時,程序反饋用戶,感謝信息
- 當用戶輸入 n or N 時,程序反饋用戶,并中斷覆蓋文檔的損傷
- 當用戶沒有輸入時,程序反饋用戶沒有輸入任何信息
- 當用戶輸入的值不在 y Y n N 范圍內時,提醒用戶輸入了非預期的值
優(yōu)化交互
命令行是一個主要以文本方程呈現(xiàn)信息的界面,這種界面下信息密度高,用戶操作的誤操作率也比較高,也就是說,我們需要容許用戶錯誤和非法的輸入,并提供補救的機會。
以下代碼進行了優(yōu)化,為用戶提供了補救的機會:
# -*- coding:UTF-8 -*- # region 引入必要依賴 from DebugInfo.DebugInfo import * # endregion if __name__ == "__main__": 畫板: 打印模板 = 打印模板(False) 畫板.執(zhí)行位置(__file__) 交互端: 交互接口類 = 交互接口類() 畫板.消息('程序已經開始運行...') 畫板.消息('生成新的 id_rsa.pub 文檔...') 確認覆蓋: bool = False while True: 用戶選擇 = input('此操作將會刪除原有文本,請問是否繼續(xù)(y:繼續(xù); n:返回): ') if 用戶選擇: if 用戶選擇 in 'yY': 畫板.消息(綠字('您選擇了繼續(xù),感謝信任...')) 確認覆蓋 = True break elif 用戶選擇 in 'nN': 畫板.消息(紅字('您選擇了返回,您是一個謹慎的人')) 確認覆蓋 = False break else: 畫板.提示錯誤('您輸入了非期望的指示') else: 畫板.提示錯誤('您沒有輸入任何值') if 確認覆蓋: pass else: pass
??以上代碼中,我們將用戶輸入的input邏輯和判斷邏輯放入一個 while 循環(huán)中,并在用戶輸入非法時,循環(huán)提示用戶輸入,直到用戶輸入了預期的信息。
效果如下:
通過使用 while True 循環(huán),我們?yōu)橛脩籼峁┝搜a救的機會,提高了交互的使用體驗和健壯性。
邏輯封裝
以上所設計的用戶交互邏輯,在 DebugInfo 模塊中已經進行了封裝,可以通過 交互接口類 使用封裝好的功能。
如下是使用 DebugInfo.交互接口類 實現(xiàn)的用戶交互邏輯的代碼:
# -*- coding:UTF-8 -*- # region 引入必要依賴 from DebugInfo.DebugInfo import * # endregion if __name__ == "__main__": 畫板: 打印模板 = 打印模板(False) 畫板.執(zhí)行位置(__file__) 交互端: 交互接口類 = 交互接口類() 畫板.消息('程序已經開始運行...') 畫板.消息('生成新的 id_rsa.pub 文檔...') # 要求用戶確認是否繼續(xù) 用戶選擇 = 交互端.發(fā)起文本交互(輸入提示='此操作將會刪除原有文本,請問是否繼續(xù)(y:繼續(xù); n:返回)',限定范圍='yYnN',畫板=畫板.副本) if 用戶選擇 in 'yY': 畫板.消息(綠字('您選擇了繼續(xù),感謝信任...')) elif 用戶選擇 in 'nN': 畫板.消息(紅字('您選擇了返回,您是一個謹慎的人'))
??以上代碼中,我們通過使用 用戶選擇 = 交互端.發(fā)起文本交互(輸入提示='此操作將會刪除原有文本,請問是否繼續(xù)(y:繼續(xù); n:返回)',限定范圍='yYnN',畫板=畫板.副本) 發(fā)起與用戶的交互,并指定了用戶輸入反饋的范圍是 ‘yYnN’,然后我們只需要等待用戶交互完成后確認用戶的決策就好了,下面是運行的效果:
??上面的運行效果中,我們發(fā)現(xiàn)當用戶輸入非預期的值時,程序還善意的提醒了用戶需要輸入的字符范圍,避免了用戶手足無措的尷尬。
小結
以上就是今天分享的 DebugInfo 模塊提供的 交互接口類 的用戶交互功能了,更多關于python 命令行界面用戶交互的資料請關注腳本之家其它相關文章!
相關文章
深入理解?Python?中的?pip?虛擬環(huán)境(最佳實踐)
本文深入講解了Python中pip虛擬環(huán)境的概念及其重要性,并詳細介紹了如何創(chuàng)建、激活和管理虛擬環(huán)境,以及如何使用requirements.txt文件記錄和管理項目依賴,文章指出,使用虛擬環(huán)境可以有效避免依賴沖突,為每個項目提供一個干凈的開發(fā)環(huán)境,使得項目更易于維護和部署2024-10-10如何實現(xiàn)在遠程linux服務器上運行python代碼
這篇文章主要介紹了如何實現(xiàn)在遠程linux服務器上運行python代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12