【发布时间】:2012-03-02 20:13:44
【问题描述】:
我正在自学 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
【问题讨论】:
-
您的缩进错误,可能是复制/粘贴错误。
-
你不应该使用
list和input作为变量名,因为它们会影响它们对应的内置函数。 -
您知道要附加到
L的值是字符串,而不是整数吗? -
@JoelCornett 不,我不知道...是否有指导您可以指出我会澄清这一点。我认为 Python 根据需要强制转换变量...类似于 Ruby
-
@Suki:Python 确实动态类型变量,但在这种情况下,您接受字符串输入。所以变量被输入为字符串。当您对该变量进行操作时,python 将对它执行字符串操作。您可以使用
userInput = int(raw_input("Please enter a number: "))。这会将传递给userInput的值转换为整数。阅读 [python.org](www.python.org) 上的 python 文档。