python程序的建议';s表示循环,以计算103斐波那契元素
我不明白for语句是如何工作的。我理解一切,除了程序如何继续到第103个元素,并且理解它必须将最后两个数字相加才能得到下一个数字。我知道a等于b,b等于c 是因为在添加c之后,它改变了a和b的值,然后返回for语句吗?这就是我困惑的地方。这个程序接下来做什么python程序的建议';s表示循环,以计算103斐波那契元素,python,python-2.7,Python,Python 2.7,我不明白for语句是如何工作的。我理解一切,除了程序如何继续到第103个元素,并且理解它必须将最后两个数字相加才能得到下一个数字。我知道a等于b,b等于c 是因为在添加c之后,它改变了a和b的值,然后返回for语句吗?这就是我困惑的地方。这个程序接下来做什么 它是否返回for语句以检查这是哪个(term)/元素,以确保它小于102 另外,当我将范围指定为102时,它是执行一次操作,然后再执行102次(基本上是列出数字103次)还是执行102次) 基本上我想问的是,如果我需要找到第103个元素,为
它是否返回for语句以检查这是哪个(term)/元素,以确保它小于102 另外,当我将范围指定为102时,它是执行一次操作,然后再执行102次(基本上是列出数字103次)还是执行102次)
基本上我想问的是,如果我需要找到第103个元素,为什么我要指定range=102,而不是range=103for语句有无限的用法,因为在你的例子中,它只是在其中做了102次任何事情。因此,在您的特定情况下,
for
语句不
a = 0
b = 1
print a
print b
for i in range (102):
c = a + b
a = b
b = c
print c
print "The 103rd number is", c
完成后,程序将以打印“第103个数字是”c结束,您知道发生了什么。
range
是一个返回整数列表的函数。如果指定一个参数n
,则会得到从0到n-1
的所有整数
y中x的形式为的语句:
,其中y
是可编辑的,它迭代y
中的每个元素。对于每个这样的元素z
,它将变量x
绑定到z
,然后执行一次循环体
因此,范围(102)中i的行执行循环中的所有内容,对于0到101之间的每个整数执行一个循环。注意:您实际上并没有在循环中引用变量i
,因此您也可以在范围(102)
中为uuu编写
关于循环内的块,大致如下所示:
- 将
c
设置为a
和b
- 将
a
设置为b
- 将
b
设置为c
因此,每次迭代时,您都会找到下一个数字,将其存储在c
中,然后更新状态变量a
和b
a
和b
保留最后两个斐波那契数
如果您真的想要第103个斐波那契数,那么您的程序中有一个错误-您看到了吗?这一行将重复它下面缩进102次的任何内容
c = a + b
a = b
b = c
print c
c = a + b
a = b
b = c
print c
c = a + b
a = b
b = c
print c
# ... (99 more times)
让我们展开for循环,看看会发生什么:
for i in range(102):
您可以看到,经过4次迭代后,我们在c
中得到了第5个斐波那契数。经过102次迭代后,c
将保持103:d斐波那契数。这就是为什么您使用的是range(102)
,而不是range(103)
。如果希望斐波那契数列以0()开始,即0、1、1、3、5
,则需要使用range(101)
python for循环在序列上迭代,直到序列耗尽,或者for循环使用break
语句提前退出<代码>范围(5)
创建一个包含5个元素的列表:[0,1,2,3,4]
,当与for循环一起使用时,会导致它重复5次。因此,将对以下示例中的循环体求值5次:
a = 0
b = 1 # this is the first fibonacci number
# First iteration of for loop
c = a + b # c is now 1, the second fibonacci number
a = b # a is now 1
b = c # b is now 1
# Second iteration
c = a + b # c is now 2, the third fibonacci number
a = b # a is now 1
b = c # b is now 2
# Third iteration
c = a + b # c is now 3, the fourth fibonacci number
a = b # a is now 2
b = c # b is now 3
# Fourth iteration
c = a + b # c is now 5, the fifth fibonacci number
a = b # a is now 3
b = c # b is now 5
# Remaining 98 iteration omitted
我们刚刚计算了第五点10分
有关python for循环的更多信息:
F0=0,F1=1,F2=1,F3=2,F4=3
sum = 0
for i in range(5):
sum = sum + i
print sum
请注意,在第一个循环中,c=a+b=0+1=F0+F1=F2,因此打印的结果是F2而不是F1,因此F103在第102个循环中打印。Fibonacci的公式是:
for i in range (102):
c = a + b
a = b
b = c
print c
和范围(102)=[0,1,2,…,101]
所以
对于范围内的i(102):
表示循环运行102次
f(n) = f(n-1) + f(n-2); (n > 1, n is integer)
f(0) = 0
f(1) = 1
意思是b代表f(n-1),a代表f(n-2),所以c代表f(n)。
for循环运行102次以获取第103个元素,因为循环是从第2个元素开始的。检查:
c = a + b
a = b
b = c
然后回想一下
range(102)
创建了一个列表[1,2,3,
..101102]
当然它属于这里。在这里,人们可以询问有关编程的问题。我从答案中删除了“这是非常基本的Python,我不确定这个问题是否属于stackoverflow。”这是danben的回答。我只是不确定这是否属于“询问代码的问题必须证明对正在解决的问题的最低理解”的范畴。是否返回到for语句来检查这是哪个(术语)/元素,以确保它小于102。当我将范围指定为102时,它是否执行一次操作,然后再执行102次(基本上列出数字103次)或它执行102次)-我基本上想问的是,如果我需要找到第103个元素,为什么我指定范围=102,而不是范围=103Yes,for语句负责检查它是否运行了102次而不是103次。我不是来写一本书的,而是Python的创建者写的。哦,好吧,当我设置range=103时,它会打印包括零在内的范围内的前103个术语。非常感谢。是的,我相信是的,范围应该是103,因为第一个数字等于范围中的第0个数字,并且因为我需要它来打印前103个元素,如果我执行103,它将打印前102个术语和第0个术语来具体回答您的问题:不,程序不会检查是否有任何小于102的内容。它使用range(102)
对动态创建的列表中的每个元素进行迭代
for f in [1, 2, "foo"]:
print f