为什么未定义day_num?

时间:2018-09-09 22:38:34

标签: python

for day_num in range(1,8):
        sales=float(input("Enter the sales for Day {}".format(day_num)))
        bakery_temp_info.append(sales)
    bakery_sale.append(list(bakery_temp_info))
    del bakery_temp_info[:]

这是我的老师给我的示例代码的一部分。谁能解释一下变量“ day_num”在先前未定义的情况下如何用于此循环。我已经尝试在循环中将其打印出来,并且每次循环运行时它都会增加1。任何帮助表示感谢,谢谢。

2 个答案:

答案 0 :(得分:2)

不必声明Python变量;第一次分配给您,它就会创建。

几乎所有将名称赋值的东西都算作赋值,而不仅仅是实际的=语句。其中包括:

  • name = …
  • while (name := …) > 0:
  • for name in …:
  • import name
  • with … as name:
  • def func(name):

…等等。

每一个都为当前范围内的name分配一个值(最后一个除外,后者仅在函数体的范围内分配一个值)。 name是否在该语句之前是变量都没有关系;现在是一个。


如果不清楚在哪里进行任何分配,则您的for循环等效于此while循环:

_range18iter = iter(range(1, 8))
try:
    while True:
        day_num = next(_range18iter)
        # body of the for loop
except StopIteration:
    pass
def _range18iter

现在很明显,只要iterable不为空,就将day_num分配给它。

答案 1 :(得分:0)

您正在循环中声明day_num。基本上,循环是告诉解释器您要迭代某些内容并希望为每个迭代命名,在这种情况下为day_num

在这种情况下,您提供的可迭代范围是1-8,但是您可以轻松地将其传递给列表。在这种情况下,您将作为示例调用列表day_num的每个元素。

每次循环时,它都会更新day_num中存储的值。