2016-05-26 5 views
1

文字列が数字か否定であるかどうかを調べる何かを書こうとしています。数値(正または負)の場合は、int()を通過します。残念ながら、isdigit()は、 " - "が含まれている場合、数値として認識しません。文字列が負の数でint()を渡す前にチェックする方法を教えてください。

これは私がこれまで持っているものです:私は考えることができる

def contestTest(): 
# Neutral point for struggle/tug of war/contest 
x = 0 

while -5 < x < 5: 
    print "Type desired amount of damage." 
    print x 
    choice = raw_input("> ") 

    if choice.isdigit(): 
     y = int(choice) 
     x += y 
    else: 
     print "Invalid input." 

if -5 >= x: 
    print "x is low. Loss." 
    print x 
elif 5 <= x: 
    print "x is high. Win." 
    print x 
else: 
    print "Something went wrong." 
    print x 

唯一の解決策は、私はそれが立派に見えるように別の関数に離れリスかもしれない文のいくつかの独立した、複雑なシリーズです。私はどんな助けにも感謝しています!

答えて

4

あなたは簡単にそうように、最初の左から文字を削除することができます

print x 
while True: 
    choice = raw_input("> ") 
    try: 
     y = int(choice) 
     break 
    except ValueError: 
     print "Invalid input." 
x += y 
1

代わりのかどうかをチェックする:それはおそらく良いだろうしかし

choice.lstrip('-+').isdigit() 

が無効代わりに、入力からの例外を処理しますあなたは変換を試みるだけの数字に入力を変換し、失敗したら何かをすることができます:

choice = raw_input("> ") 

try: 
    y = int(choice) 
    x += y 
except ValueError: 
    print "Invalid input." 
1

これはfloat(str)を使って解決できます。 floatは数値でない場合はValueErrorを返します。あなたは整数のみを扱っている場合は、あなたが

try: 
    x = float(raw_input) 
except ValueError: 
    print ("What you entered is not a number") 

intfloatを置き換える気軽に試すことができます代わりに

if choise.isdigit(): 
    #operation 
else: 
    #operation 

を行うのでint(str)

を使用することができ、それならば教えてください作品!私はそれを自分でテストしていない。

EDIT:私はちょうど同様にPythonのドキュメントでこれを見ました(2.7.11)here

関連する問題