2016-10-02 6 views
0

私はこのサイトを見て、これを行う方法を考えましたが、まだ固執しています。数字を反転させ、記号を考慮に入れた機能

reverse_digits(8765)は5678を返しますので、私の関数は、数字を逆にすることになっている。これは簡単で行われます。

def reverse_digits(num): 
    return int(str(num)[::-1]) 

しかし、私のコードが必要に1)の試験では陰性であり、それを維持している場合負である(-8765は-5678を返す)、2)numが実際にintかどうかを調べるべきだと思う。 「 - 」

は、これまでのところ私はせずにそれは数字のために働く

def reverse_digits(num): 
    num = str(num)[::-1] 
    if num == '-': 
     minus = 1 
     num = num[:-1] 
    else: 
     minus = 0  
    int(num) 
    if minus == 1: 
     num = num*-1 
    else: 
     num = num 
    return num 

を持っていますが、戻り「」それがあるとき「 - 」。

私はもともとそれが

if (num != int): 
    print("wrong type") 
    sys.exit() 
else: 
    (the rest of my above code) 

のようなループOD先頭にint型ですが、それは私のために働かないかどうかを確認するためにテストを置くしようとしていました。 continue/breakを使うことができるように、すべてのコードをwhileループに入れる必要がありますか? ありがとう!

+0

、それが負の数のために 'ValueError'を送出を発生させます。 – Daniel

+0

文字列 'str(num)'に変換する前に 'num <0:sign = -1 else sign = 1'を実行できます。あなたは1行 'num = int(num)* sign'を行うことができます。 'int(num)'行は何もしません。 'num = int(num)'でなければなりません。変数型をテストするには、 'isinstance(num、int)' – furas

答えて

2

isdigit()文字列メソッドを使用してください。

def reverse_digit(num): 
     num_str = str(num)[::-1].strip('-') 
     if not num_str.isdigit(): 
      <do what u want> 
     if num < 0: 
     return -int(num_str) 
     else: 
     return int(num_str) 
4

ちょうど逆に文字列に-を入れていない。と言うでしょう

def reverse_digits(num): 
    return (-1 if num<0 else 1) * int(str(abs(num))[::-1]) 
関連する問題