2015-11-05 33 views
1

我已在我的代碼中包含驗證,以確保只能輸入一個數字。但是,如果輸入負數,負數不會被程序接受爲有效輸入。我該如何解決這個問題?該代碼是:驗證數據類型檢查是否與預期相反?

while QuestionNo != 11: 

num1 = randint(0,10) 
num2 = randint(0,10) 
opp = choice(Operators) 
Answer = (input(str(num1) + '' + (opp) + '' + str(num2) + '=')) 

while Answer.isdigit() == False: 
    print ('Please enter a number and nothing else.') 
    Answer = (input(str(num1) + '' + (opp) + '' + str(num2) + '=')) 

感謝, 約翰·史密斯

+0

的[我如何檢查字符串是否是一個數字(浮動)在可能的複製Python?](http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float-in-python) –

回答

1

isdigit方法返回true只有在字符串中的所有字符是數字。在負數的情況下,它們以不是數字的破折號( - )開始。

此外,您正在爲您的Answer變量添加一些運算符和一個等號;這也不是數字。

我想測試常規方式,如果一個字符串是Python的有效數字,使用int內置:

try: 
    int(some_string) 
    is_valid_number = True 

except ValueError: 
    is_valid_number = False 
+0

[有趣的文章](http: //pythoncentral.io/how-to-check-if-a-string-is-a-number-in-python-including-unicode/)(非常相似的答案),表明非英文腳本中的數字也被處理。涼! –

+0

謝謝,它工作!抱歉@Jeff Bridgman如果這是一篇類似的文章(哎呀!)> _ < –

相關問題