在程式中常常要請使用者輸入資料, 但是往往資料輸入的不是我們要的格式, 要如何防止呢?
舉例來說:
我們需要使用者輸入一個自然數(0,1,2,3......也就是正整數), 以便判斷是否為質數?
若使用者輸入
- 負數 -5
- 有小數 2.5
- 有英文字母 5A
- 或其他非數字的文字
都會造成我們程式後續處理運算時會出現錯誤!!!
因此我們需要在使用者輸入資料時, 做判斷以便請使用者重新輸入或程式中止!!!
演算法
1.請使用者輸入自然數
2.判斷輸入的是否為數字?
不是, 顯示 "輸入錯誤", 回到步驟 1
是, 繼續下一步
3.後續處理運算片段
Python程式
#程式開始
input_error = True #設定輸入錯誤的旗標為True
while input_error:
text = input('Please input the positive integer number: ')
if text.isdigit():
input_error = False #輸入正確時,設旗標為False
else:
print('input error!!') #輸入錯誤時,顯示'輸入錯誤'
#程式繼續下一階段
print('OK!!')
說明
- 在判斷的演法算中, 習慣會設一個布林值的邏輯變數, 稱為旗標(flag),
就像賽車時看到舉旗時就知道是剩最後一圈!!上面的Python程式, 我使用 input_error做為旗標. - 這裡用到一個Python的字串方法 .isdigit() 用來判斷輸入的資料是否為全部為數字?
因為負數的負號, 小數的小數點, 都不是數字!! 所以全部會無法使得 .isdigit()為True