2014-03-02 25 views
-1

我想將「funct」的結果表示爲字符串,但沒有任何我嘗試過的。將數字轉換爲python中的字符串

def funct(y): 
    rad = [2+y] 
    return rad 
z = 1; 
a = funct(z); 
print a 
print str(a) 
b = str(a); 
print b 
c = repr(a); 
print c 

這裏是我的輸出:

[3] 
[3] 
[3] 
[3] 

我缺少什麼?謝謝!

編輯:我的意思是我試圖把它打印成沒有括號的字符串。忘了包括那個。

+0

你想要什麼結果? '3'? '[ 「3」]'? – Ryan

+0

你的第一個'print'隱含地調用'str',第二個和第三個'print'完全一樣。第四個'print'使用'repr',恰好相當於'str'的​​整數列表。 如果您只想'funct'返回'2 + 4',使用'rad =(2 + y)'或者只是'rad = 2 + y',因爲'[2 + y]'創建一個帶有一個元件。 –

+0

'str(a)'是一個字符串,有什麼問題? –

回答

2

您可能不希望rad成爲一個列表。

嘗試使用()代替[]

rad = (2+y) 

你的功能會工作像這樣:

def funct(y): 
    rad = (2 + y) 
    return rad 
z = 1; 
a = funct(z); 
print a 
#=> "3" 
+0

這是完美的。謝謝! – user3371658

0

根據您的問題的標題,你不想改變funct本身您不希望將funct的輸出轉換爲字符串。如果要將的數字轉換爲的字符串您需要更改列表輸出內的值funct。問題是,你打開列表本身的再版成字符串,但列表中不投值:

>>> repr([5]) 
'[5]' 
>>> repr(["5"]) 
"['5']" 

你真正想要在列表中投值:

>>> repr(list(map(str, [5]))) # say `funct(3)` for example 
"['5']" 
>>> repr(list(str(i) for i in [5])) 
"['5']" 

現在,如果您真的只想將funct的輸出轉換爲字符串,那麼您已經這樣做了。 Python的列表的字符串表示形式只是不打印報價,因爲它正在打印它。

>>> repr([5]); print([5]) 
'[5]' 
[5]