2015-11-03 49 views
2

我正在做一個字符串執行IP reversing的代碼。在字符串中執行IP反轉

我已經做了代碼相同,如下所示:

def reverse(ip): 
     if len(ip) <= 1: 
       return ip 
     return reverse(ip[1:]) + ip[0] 

ip = '10.1.2.3' 
print reverse(ip) 

輸出我的代碼:現在它給結果如下:

3.2.1.01 

預期輸出:而不是我需要的結果應顯示如下:

3.2.1.10 

請有人幫我一樣。

+2

按點分割,反轉列表並加入。 –

+1

如上所述,'return'。'。join(ip​​.split('。')[:: - 1])' – Jkdc

+1

或者只是'return re.sub(r「^(\ d +)\。(\ d +) \。(\ d +)\。(\ d +)$「,r」\ 4. \ 3. \ 2. \ 1「,ip)'。 –

回答

4

你可以試試這個:

def reverse(ip): 
     if len(ip) <= 1: 
       return ip 
     l = ip.split('.') 
     return '.'.join(l[::-1]) 

ip = '10.1.2.3' 
print reverse(ip) 

輸出:

3.2.1.10 
+1

哦,太棒了,我總是忘記了切片的反向!做得很好。 – Erik

+0

@Erik:謝謝...... –

1

你被python的堅持認爲字符串是字符數組越來越絆倒。如何將它們轉換爲數字然後倒轉它們?

>>> numbers = [int(v) for v in ip.split('.')] 
>>> numbers.reverse() 
>>> ip_reversed = '.'.join([str(v) for v in numbers]) 
>>> ip_reversed 
'3.2.1.10' 
1

你可以嘗試這樣的,

>>> '.'.join(ip.split('.')[::-1]) 
'3.2.1.10' 

在功能:

def reverse(ip): 
    if len(ip) <= 1: 
     return ip 
    return '.'.join(ip.split('.')[::-1])