2015-10-13 59 views
0

我要創建一小塊功課的計算器和我詢問的數字輸入和將要使用的符號:如何測試某些東西是不是整數?

number1=int(input("\nWhat is your first number?")) 

number2=int(input("\nWhat is your second number?")) 

symbol=input("\nWhat is the symbol you will use?") 

我想知道是否有什麼辦法可以使int(input())再次被詢問是否輸入了除整數之外的任何內容。

如果我錯過了一些明顯的東西,我對Python atm不太好,所以很抱歉。 此外,如果此線程重複,也很抱歉。

+1

使用'isinstance(your_variable,int)' – Akavall

+0

我可以在這裏建議'str.isdigit()'嗎? https://docs.python.org/2/library/stdtypes.html#str.isdigit –

回答

0

要知道一個變量類型做type(var)

所以,基本上你需要做什麼:

if type(variable)==int: 
    do_something 
1

Python中的經典方法是這樣的:

def get_integer_or_retry(mesg) 
    while True: 
     val = input(mesg) # or raw_input for python 2 
     try: 
      val = int(val) 
      return val 
     except ValueError: #trying to cast string as int failed 
      pass # or you could let the user know their input was invalid 

注意的是,如果用戶輸入1.0(或其他一些小數說也是一個整數),這仍然會拋出ValueError(感謝Robᵩ);如果你需要處理碰巧是整數花車,你可以做val = int(float(val)),但也將接受(默默向下取整)浮點數...

0

嘗試isinstance方法(https://docs.python.org/3/library/functions.html#isinstance

>>> isinstance(5, int) 
True 
>>> isinstance("a", int) 
False 

你的情況寫一個條件一樣,

if isinstance(number1, int): 
    #do something 

的isinstance()內置函數被推薦用於測試類型 的對象,因爲它需要的子類考慮在內。

0

我打算假設Python 2.7爲這個答案。

我建議先獲取輸入爲字符串,然後使用raw_input和 然後嘗試將其轉換爲整數。如果轉換失敗,Python會引發異常,您可以捕獲並提示 用戶再次嘗試。

下面是一個例子:

while True: 
    try: 
     s1 = raw_input('Enter integer: ') 
     n1 = int(s1) 
     # if we get here, conversion succeeded 
     break 
    except ValueError: 
     print('"%s" is not an integer' % s1) 

print('integer doubled is %d' % (2*n1)) 

,這裏是一個樣本的執行,與輸入:

$ python 33107568.py 
Enter integer: foo 
"foo" is not an integer 
Enter integer: 1.1 
"1.1" is not an integer 
Enter integer: 0x23123 
"0x23123" is not an integer 
Enter integer: 123 
integer doubled is 246 

在Python 3中,你需要使用input,而不是raw_input;在 Python 2中,input將用戶輸入評估爲Python表達式 ,這很少是所期望的。

相關問題