2016-07-26 8 views
-1

私は最近、Python 3への切り替えを行いました。通常、Python 2で動作する通常のものはPython 3では動作しません。残りは修正できましたが、これです。何が「タイプ」なのか確認できません。 python3.xでもし他の人が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

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

関連する問題