在使用list append和For循环时,是否应该在python中预先声明变量?

在使用list append和For循环时,是否应该在python中预先声明变量?,python,Python,在收到下面代码中的错误后,我最终添加了 new_list = [] summation = 0 在第二行之后。但我不明白我为什么要这么做。我认为在python早期不必声明变量 a = int(input()) b = int(input()) while a <= b: if a % 3 == 0: new_list.append(a) a += 1 for number in new_list:

在收到下面代码中的错误后,我最终添加了

    new_list = [] 
    summation = 0
在第二行之后。但我不明白我为什么要这么做。我认为在python早期不必声明变量

    a = int(input())
    b = int(input())
    while a <= b:
    if a % 3 == 0:
        new_list.append(a)
        a += 1
    for number in new_list:
        summation += int(number)
    print(summation / len(new_list))
a=int(输入())
b=int(输入())

一般来说,Python不需要声明变量(除了少数情况)。在本例中,您不是在声明变量,而是在初始化它。让我们假设变量是盒子。在python中,您不必说,请制作一个框并将其命名为x。问题是当您遇到
summation+=int(number)
时。这告诉python,请取出名为summation的框中的任何内容,向其中添加
int(number)
,然后将其放回框中。但是你还没有把任何东西放进盒子里。所以python说对不起,盒子里现在什么都没有,所以我不能拿出任何东西。对于
new\u list.append(a)
,它要求python将
a
附加到框中的任何内容。因此python在框中查找如何向其追加内容,但找不到任何内容,因此显示了一个错误


您可能会问,为什么python不直接将0放入框中?python不知道你想要的是一个int,也许你想要一个分数,一个复数,或者你自己编的,可以加到一个数字上的东西。列表也是如此,python不知道您想要的是列表,而不是集合、字典、元组、计数器、队列或其他集合。因此,它不是猜测,也可能是错误的(由于加法的工作方式略有不同,这会导致各种奇怪的错误),而是给出一个错误。

这取决于您对变量所做的操作。如果给变量赋值,它将在循环中初始化变量本身。但是,如果您想像使用
.append()
那样修改变量,必须首先声明它,因为它必须被声明为要修改。

new\u list。如果尚未定义
new\u list
,则append
不会指向任何内容。类似地,
summation+=…
summation=summation+…
的简写,因此它需要事先存在
summation
。在访问变量之前必须存在变量,是的。请从中重复和。堆栈溢出不是为了替换现有的教程和文档。Python中没有变量声明。几乎在任何语言中,变量都必须在第一次引用之前定义。实际上,
new\u list.append(a)
要求python将
a
添加到框中描述的列表中。任何东西都不能从盒子里拿出来或放回去。如果框尚未初始化,当python被要求向框中描述的列表添加
a
时,它会说“什么列表?框中没有这样的描述”。@Steve Yea,从技术上讲,它不会将其存储回框中。它将框中的内容加载到堆栈上,加载append方法,加载
a
中的任何内容,调用它加载的append方法,然后忽略结果。我会尽量把我的答案修改得更清楚一点。谢谢你的评论!酷。我很喜欢你的回答。我只是提出了一个改进的建议。我希望它不会被认为比这更重要。你做的改变太棒了@史蒂夫:我对回答问题而不仅仅是阅读这些问题还相当陌生,所以我总是乐于接受建设性的批评。我肯定地认为我能根据你的建议有所改进。