2016-07-26 66 views
-1

我最近做了切換到Python 3和常規的東西,通常與Python 2的工作不能與Python 3的工作。我已經能夠解決其餘的問題,但我掙扎着與這個。我無法檢查什麼是「類型」。如何使其他工作python3

raw = input("Please give me a number, string\ 
or decimal: ") 
if type(raw) == int: 
    print("You entered a number") 
elif type(raw) == float: 
    print("You entered a decimal") 
elif type(raw) == str: 
    print("You entered a string") 
else: 
    print("error please try again") 

`

+0

它應該是你輸入的字符串:)是嗎? –

回答

5

在python3.x,input總是返回str類型的對象。相當於python2.x將是eval(input('...'))。正如在任何時間使用eval,確保您絕對信任的輸入不會做惡意的事情,你的程序或計算機......

一個更好的方法是使用類似ast.literal_eval(這將安全評估你的文字),或者做檢查自己...

def is_int_str(s): 
    """Checks if a string (s) represents a python integer.""" 
    try: 
     int(s) 
    except ValueError: 
     return False 
    return True 

而且是微不足道的,然後寫類似float版本...

+0

字符串庫中的isdigit/isnumeric方法應該可能在此處使用。 – story645

+0

@ story645 - Nah ... EAFP :-)。只是'嘗試'將字符串轉換爲適當的類型,看看它是否工作... – mgilson

+0

meh,我喜歡這個字符串庫...但真的,只是任何不是eval可能是好的。 – story645