2017-11-04 6 views
1

これを実現する正しい方法がわかりません。Python:浮動小数点数の後ろにスペースを入れて返す必要があります

入力がfloat("- 4")の場合は、空白または空白に関係なく、-4.0を返します。だからこれは" - 4"のような他のインプットでも動作する必要があります。しかし、私はこの機能の他の結果を妥協させたくないので、"4 -""5 5"のような入力も複合化してはいけません。

私は、何かが自分のプログラムの正しい入力であるかどうかを調べるための関数を書いています。

def isNum(num): 

    try: 
     float(expr) 
    except ValueError: 
     return False 
    return True 

これは私に不満な点です。

+0

を空白を空白( 'string.replace( ""、 ""))で置き換えることで空白を削除することができます。申し訳ありませんが、 "4 - "または "5 5"の出力は何ですか? – offeltoffel

+0

'-'と数字の間の空白を削除したいだけですか?あなたはおそらくそのための正規表現を書くことができます。 – jonrsharpe

+1

入力が "4 - "または "5 5"の場合、float()は通常の変換エラーを返すだけです。マイナスの後に数字が続く場合に限り、空白に関係なく、入力を単一の数値に複合したいと思っていますか? – Destroxia

答えて

2

単に右に-と任意の数字の間に空白を取り除く:

import re 
def parse_float(inp): 
    return float(re.sub(r'-\s*(\d)', r'-\1', inp)) 

例:

>>> parse_float(" - 4 ") 
-4.0 
>>> parse_float(" 5 ") 
5.0 

そして、それは無効な浮動小数点数のためValueErrorで失敗します:

>>> parse_float(" 4 - ") 
... 
ValueError: invalid literal for float(): 4 - 
>>> parse_float(" 5 5 ") 
... 
ValueError: invalid literal for float(): 5 5 
関連する問題