2013-11-20 104 views
1

我有一個Python腳本將十進制數轉換成二進制數,這顯然使用他們的輸入。如何檢查輸入是否是Python中的數字?

我想有腳本驗證輸入的是數字,而不是別的,這將阻止腳本。

我試過了一個if/else語句,但我真的不知道該怎麼去做。我嘗試過if decimal.isint():if decimal.isalpha():,但他們只是在輸入字符串時拋出錯誤。

print("Welcome to the Decimal to Binary converter!") 
while True: 
    print("Type a decimal number you wish to convert:") 
    decimal = int(input()) 
    if decimal.isint(): 
     binary = bin(decimal)[2:] 
     print(binary) 
    else: 
     print("Please enter a number.") 

沒有if/else語句,代碼工作得很好並完成其工作。

回答

6

如果int()調用成功,decimal已經是的一個數字。你只能在一個字符串調用.isdigit()(正確的名稱):

decimal = input() 
if decimal.isdigit(): 
    decimal = int(decimal) 

另一種方法是使用異常處理;如果ValueError被拋出,輸入是不是數字:

while True: 
    print("Type a decimal number you wish to convert:") 
    try: 
     decimal = int(input()) 
    except ValueError: 
     print("Please enter a number.") 
     continue 

    binary = bin(decimal)[2:] 

而不是使用bin()功能,除去起始0b,你也可以使用format() function,使用'b'格式,格式化一個整數作爲二進制字符串,沒有領先的文字:

>>> format(10, 'b') 
'1010' 

format()功能可以很容易地添加前導零:

>>> format(10, '08b') 
'00001010' 
+0

在Python 2.x中,你不會需要調用'isdigit',事實上,這將引發錯誤 – elssar

+2

@elssar:這顯然不是的Python 2.在Python 2,你會使用的raw_input'()'在這種情況下。 –

+0

好的,但我認爲應該值得一提的是,在答案中。在我急匆匆的時候,我忘了提及那一點:/ – elssar

相關問題