2016-09-23 36 views
0

代碼上的方法是沒有意義的

def solve_the_input(port): 
    port = hex(int(port)) 
    split_result = port.split("0x") 
    split_port = split_result[1] 
    print 'input port is ',split_port 
    split_port.upper() 
    print 'input port is ',split_port 
    return split_port 

if __name__ == "__main__": 
    if len(sys.argv) == 1: 
     print "please input a port" 
    else: 
     port = solve_the_input(sys.argv[1]) 

輸入

python test.py 42328 

實際輸出

input port is a558 
input port is a558 

預計輸出

input port is a558 
input port is A558 

我不知道爲什麼預期上()方法是行不通的。

+2

蟒蛇的基本規則:字符串方法不會改變字符串 - 他們不能因爲字符串是不可變的(只讀) - 所以他們總是返回一個新的字符串對象。 – cdarke

回答

1

幾個百分點

  • split_port.upper()收益未分配回split_port
  • 無需拆就'0x'。您可以改用replace函數。會更簡單。

代碼替換功能:

import sys 
def solve_the_input(port): 
    port = hex(int(port)) 
    result = port.replace("0x",'') 
    print 'input port is ',result 
    result = result.upper() 
    print 'input port is ',result 
    return result 

if __name__ == "__main__": 
    if len(sys.argv) == 1: 
     print "please input a port" 
    else : 
     port = solve_the_input(sys.argv[1]) 

輸出:

C:\Users\dinesh_pundkar\Desktop>python c.py 1235 
input port is 4d3 
input port is 4D3 

C:\Users\dinesh_pundkar\Desktop> 
2

上方法返回字符串大寫。因此,使用

split_port = split_result[1].upper() 
0

上方法返回新的字符串,但你需要存儲的字符串。

split_port = split_result[1].upper() 
+0

ShabashP已經回答了! – Anurag

相關問題