增強程式可用性 關於程式的使用者錯誤輸入的處理

2021-09-29 08:51:58 字數 2399 閱讀 8932

num = int(input('請輸入乙個三位數:'))

a = num // 100 #百位

b = num // 10 % 10 #十位

c = num % 10 #個位

if(num == pow(a,3) + pow(b,3) + pow(c,3)):

print("%d是水仙花數" %num)

else:

print("%d不是水仙花數" %num)

下面給出兩組輸出樣例:

請輸入乙個三位數:123

123不是水仙花數

請輸入乙個三位數:153

153是水仙花數

當我以為這道題就這麼講完了的時候,老師突然提出了乙個新的問題:當使用者輸入的不是乙個三位數的話該怎麼處理呢?確實,如果想要編寫出乙個可用性較強的程式,我們必須要建立乙個更友好的使用者介面。這樣的介面會使互動式的資料輸入更輕鬆,並且減輕了使用者錯誤輸入的影響。

老師又叫了乙個同學上去修改這個程式。這個同學修改後的程式如下:

num = int(input('請輸入乙個三位數:'))

if not(num in range(100,1000)):

print('輸入錯誤!')

else:

a = num // 100 #百位

b = num // 10 % 10 #十位

c = num % 10 #個位

if(num == pow(a,3) + pow(b,3) + pow(c,3)):

print("%d是水仙花數" %num)

else:

print("%d不是水仙花數" %num)

下面給出一組輸入錯誤的輸出樣例:

請輸入乙個三位數:1234

輸入錯誤!

這樣修改程式之後確實達到了老師的要求——提示使用者輸入錯誤。課堂上關於這一問題的討論也就到此為止。然而,不可否認的是,修改過後的程式雖然加強了容錯性,但它仍舊是個可用性不強的程式。這體現在兩個方面:第一,程式只可以進行一次水仙花數的判斷,使用者想要再一次進行判斷的話需要重新run module;第二,假使使用者不慎輸入錯誤,沒有輸入乙個三位數,那麼程式也會就此結束,不會給使用者重新輸入的機會。針對這兩點問題,我們又該如何改進呢?

對於上面所說的第乙個問題,我們可以給程式加上乙個while true:的無限迴圈。想要終止這個程式的話,我們只需要按ctrl+c鍵。當然,更好的做法是在程式的最後加上乙個if判斷語句:如果使用者輸入「y」的話,程式會繼續下一次的執行;如果使用者輸入「n」的話,程式結束執行。

第二個問題又該如何解決呢?我在第一時間想到的是while迴圈,如果使用者輸入錯誤的話,程式執行while迴圈,並給使用者重新輸入的機會。不過,由於剛開始有些大腦短路,我並沒有將這一想法用**來實現,實在是有點蠢……

最終用python 3.6實現如下:

while true:

num = int(input('請輸入乙個三位數:'))

while(num not in range(100,1000)):

num = int(input('輸入錯誤,請重新輸入:'))

a = num // 100 #百位

b = num // 10 % 10 #十位

c = num % 10 #個位

if(num == pow(a,3) + pow(b,3) + pow(c,3)):

print("%d是水仙花數" %num)

else:

print("%d不是水仙花數" %num)

j = input('您是否想要繼續?(y/n)')

while(j != 'y' and j != 'n'):

j = input('輸入錯誤,請重新輸入:')

if(j == 'y'):

continue

else:

print('再見!')

break

下面給出一組詳細的輸出樣例:

請輸入乙個三位數:1234

輸入錯誤,請重新輸入:123

123不是水仙花數

您是否想要繼續?(y/n)y

請輸入乙個三位數:153

153是水仙花數

您是否想要繼續?(y/n)y

請輸入乙個三位數:100

100不是水仙花數

您是否想要繼續?(y/n)m

輸入錯誤,請重新輸入:n

再見!

顯然,這樣改進之後,我們用**成功地實現了「建立更為友好的使用者介面」的想法。

以使用者為中心的設計 可用性測試

可用性測試 是指,讓一群有代表性的使用者嘗試對產品進行典型造作,同時觀察員和開發人員在一旁觀察,聆聽,做記錄。每個產品設計者都希望自己的產品可用性非常的棒,非常的適合使用者使用習慣,減少使用者 學習成本,並且具備更多人性化的功能。這也是每個 網際網路公司所追求的,那麼為了能在上線前,先評估產品的使用...

以使用者為中心的設計 可用性測試

可用性測試是指,讓一群有代表性的使用者嘗試對產品進行典型造作,同時觀察員和開發人員在一旁觀察,聆聽,做記錄。每個產品設計者都希望自己的產品可用性非常的棒,非常的適合使用者使用習慣,減少使用者學習成本,並且具備更多人性化的功能。這也是每個網際網路公司所追求的,那麼為了能在上線前,先評估產品的使用情況,...

C 新特性之一 對語言可用性的增強 上篇)

nullptr的出現是為了替代null,在傳統c 中會將null 0視為同一種東西,這取決於編譯器如何定義null,有些編譯器會將null定義為 void 0 有些則會直接定義為0。c 不允許將void 隱式轉換為其它型別,但若null被定義為 void 0 那麼當編譯char ch null時,n...