解释为什么答案是10,1

时间:2019-07-10 20:10:29

标签: python

初学者练习循环

这是我的代码:

for i in [9,0]:
    print (i+1)

我没有得到预期的结果,因此请确认我的逻辑是否正确。

所以输出10,1是因为在“ i”中所有内容都被循环到9?

注意:请立即保持简单。

3 个答案:

答案 0 :(得分:0)

您的语法在循环中略有错误。循环只显示1和10的原因是关键字“ in”只是告诉循环对列表中的每个元素进行迭代,在这种情况下为0和9。如果希望列表为0到9之间的数字,这是正确的:

first=0 #first value to loop from, default=0 (optional)
last=10 #value for loop to terminate on (will never run on i=10, last iteration is i=9)
difference=1 #Change in values over iterations. If set to 1, difference will be 1, default =1, optional

for i in range(first,last,difference):
    print(i+1)
#output: 1 2 3 4 5 6 7 8 9 10

这是您想要的吗?

答案 1 :(得分:0)

[9,0]是一个包含两个元素90的列表。当您使用for variable in list:时,它将在列表的元素上循环,将变量设置为列表的每个元素。因此,您的循环等效于:

i = 9
print(i+1) # prints 10
i = 0
print(i+1) # prints 1

如果您要打印从10开始的递减数字,则应使用range()函数。

for i in range(9, 0, -1):
    print(i+1)

答案 2 :(得分:0)

是的。

在许多编程语言(包括C和Java)中,for循环具有以下格式:

for(initial condition; termination condition; iteration) {...}

,即从给定的initial condition开始,循环继续进行,每个循环进行iteration,直到termination condition不再成立。这在功能上等效于while循环:

initial condition
while(termination condition) {
    ...
    iteration
}

Python不会以这种方式执行循环。在python中,所有for循环实际上都是 for-each 循环(Java有以下循环:for(int i : {1, 2, 3, 4}) {...},但C没有)。您定义一个变量和一个可迭代的变量,并且循环对于可迭代的每个元素仅运行一次。例如,当您这样做

for i in [9, 0]:
    print(i+1)

在第一次迭代i = 9(可迭代[9, 0]的第一个元素。在第二次迭代i = 0(可迭代[9, 0]的第二个元素)。这就是为什么您将10 1打印到控制台的原因-它在第一次迭代时打印9+1,在第二次迭代时打印0+1

这意味着,如果要遍历一定范围的数字,则实际上必须在要开始的位置和要结束的位置之间制作一个数字列表(或其他可迭代的数字)。 Python提供了一个内置函数来执行此操作:range()。您可以通过以下三种方式之一使用它:

for i in range(end):
    # iterates with i=0, then with i=1, i=2, ..., i=end-1

for i in range(start, end):
    # iterates with i=start, then with i=start+1, i=start+2, ..., i=end-1

for i in range(start, end, step):
    # iterates with i=start, then with i=start+step, i=start+step*2, ...

在所有情况下,start是范围的第一个元素,并且范围在到达end之前就停止了。因此,下面的Java表达式:

for(int i = 10; i > 0; i--):
    System.out.println(i)

在python中将大致等同于此:

for i in range(10, 0, -1):
    print(i)