2012-03-02 60 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 

列表本身是可迭代的,你不需要一个计数器来循环它。