2012-03-02 54 views
0

我自學Python,遇到一個奇怪的問題。我想要做的是將一個列表傳遞給一個函數,並讓該函數返回一個列表,其中元素是圍繞它的數字的總和,但我認爲會產生一些奇怪的結果,所以我做了一個調試版本的該代碼仍然表現出如下行爲:Python截斷整數數組中的數字

當我創建一個整數數組並將其傳遞給一個函數,然後使用for循環打印該列表的各個值時,第一個在每個int都被截斷。

例如,以下輸入和輸出:

Please enter a number: 101 
Please enter a number: 202 
Please enter a number: 303 
Please enter a number: . 
1 
2 
3 

這發生無論輸入,如果它的10,101,或13453 - 相同的行爲發生。

我知道我可能錯過了一些簡單的東西,但爲了我的利益,沒有任何數量的谷歌搜索可以爲我解決這個問題。下面附上的是我用來執行此操作的代碼。值得注意的是:在任何時候在for循環之外打印整個列表時,它將返回完整和正確的列表(即['101','202','303'])

謝謝!

temp = list() 

def sum(list): 
    print list 
    for i in range(1, len(list)+1): 
     print i 
    return temp 

L = list() 
while True: 
    input = raw_input("Please enter a number: "); 
    if input.strip() == ".": 
     break 
    L.append(input); 

print L 

L2 = sum(L) 
print L2 
+0

您的縮進錯誤,可能是複製/粘貼錯誤。 – 2012-03-02 20:16:56

+2

您不應該使用'list'和'input'作爲變量名稱,因爲它們會隱藏相應的內置函數。 – 2012-03-02 20:19:20

+0

您是否知道您附加到'L'的值是字符串,而不是整數? – 2012-03-02 20:33:11

回答

5

循環

for i in range(1, len(my_list)+1): 
    print i 

迭代的數字從1到len(my_list),未在列表上的項目。對於後者,使用

for x in my_list: 
    print x 

(我已經改名爲listmy_list以節省您的另一頭痛。)

+0

謝謝!現在我需要知道的是:在描述的my_list方法中使用for x有一種簡單的方法可以用類似於Java的方法將數字求和。例如,使用i + 1/i/i-1,將列表中的所有鄰居一起添加到列表中,使得如果L1 = [1,2,3],則L2 = [3,6,5] [1 + 2 ,1 + 2 + 3,2 + 3]這裏通常我會做number = i-1 + i + i + 1(用適當的錯誤檢查c) – Suki 2012-03-03 00:30:01

+0

@Suki:你不是要求澄清,你是問一個全新的問題。請使用頁面頂部的「提問問題」按鈕,讓其他人可以看到新問題。 – 2012-03-03 00:36:06

2

正在打印的櫃檯,沒有列表項。這是你想要的:

for i in list: 
    print i 

列表本身是可迭代的,你不需要一個計數器來循環它。