2010-01-08 161 views
0

我試圖將列表項目輸入到字符串中。然後,我想將該字符串存儲爲一個變量,並將其打印出來放入另一個函數中。到目前爲止,我已經得到的代碼是:將列表變量存儲爲字符串並將其存儲爲變量

def b(): 

    ID = [0, 1, 2] 
    ID2 = 'ID={0}.{1}.{2}'.format(*ID) 
    return ID2 

if __name__ == '__main__': ID2 = b() 


def c(ID2): 
    print ID2 

if __name__ == '__main__': myObject = c(ID2) 

我得到的輸出是:

[0, 1, 2] 

任何幫助,將不勝感激。謝謝

我正在返回列表以及ID2。這是造成這個問題的原因。爲此事道歉。

該代碼現在正在工作。由於

+0

hm,無法複製 – SilentGhost 2010-01-08 12:37:01

+0

是您正在使用的實際代碼? – SilentGhost 2010-01-08 12:38:39

+0

@ SilentGhost我正在使用類似的代碼。只有列表生成未聲明。 – chrissygormley 2010-01-08 12:41:53

回答

1
def b(): 
    ID = [0, 1, 2] 
    ID2 = ('ID=%d.%d.%d' % tuple(ID)) 
    return ID2 

if __name__ == '__main__': ID2 = b() 

def c(ID2): 
    print ID2 

if __name__ == '__main__': myObject = c(ID2) 

作品對我來說,沒有python3得心應手所以與.format()不能嘗試 - 語法。

然而myObject = c(ID2)沒有意義,函數c()不一樣,如果你想改變任何回報

+0

當列表長度超過100時如何?你會寫%d百次嗎? – aatifh 2010-01-08 12:46:11

+1

'.format'格式可以在python2.6中使用 – SilentGhost 2010-01-08 12:49:31

+0

如果列表長度超過3,我想我會做一個''ID =%s「%」。「。join([」%d「% x列表中的x]] – Kimvais 2010-01-08 13:43:02

3

如何:

>>> ''.join([str(x) for x in [1, 2, 3]]) 
'123' 
+0

這個*解決方案*解決了什麼問題? – SilentGhost 2010-01-08 12:50:03

+0

我真的不確定他到底想要什麼。我希望他希望得到這樣的結果「ID = 0,ID = 1,ID = 2」 – aatifh 2010-01-08 12:54:34

+0

問題是OP沒有字符串格式問題。他的問題是,他甚至在執行格式化之前從'b'返回,並且沒有發佈此代碼。 – SilentGhost 2010-01-08 13:06:26

2

[0,1,2]爲「0.1.2」(就像在你前面的問題版本字符串) ,你可以這樣做。

>>> '.'.join(map(str,[0, 1, 2])) 
'0.1.2' 
2
  1. 你可能不應該有適合你的函數的參數名稱是全局變量名。這是合法的,但非常非常混亂。和一個調試噩夢。

  2. 你可能不應該使用ALLUPPERCASE VARIABLE NAMES。這是奇怪的,讓你的代碼難以閱讀有經驗的Python程序員。

  3. 您應該沒有多個if __name__ == "__main__"部分。這是非常非常混亂和調試的噩夢。

我懷疑這些「外觀」問題正在很難弄清楚你的程序出了什麼問題。

def b(): 
    id = [0, 1, 2] 
    aString = 'ID={0}.{1}.{2}'.format(*id) 
    return aString 

def c(id2): 
    print id2 

if __name__ == '__main__': 
    someString = b() 
    myObject = c(someString) 

您可能會發現這樣更容易調試。

我的輸出。

ID=0.1.2 

BTW。您的功能c總是返回None。所以myObject = c(someString)沒有多大意義。