Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python程序的建议';s表示循环,以计算103斐波那契元素_Python_Python 2.7 - Fatal编程技术网

python程序的建议';s表示循环,以计算103斐波那契元素

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语句是如何工作的。我理解一切,除了程序如何继续到第103个元素,并且理解它必须将最后两个数字相加才能得到下一个数字。我知道a等于b,b等于c

是因为在添加c之后,它改变了a和b的值,然后返回for语句吗?这就是我困惑的地方。这个程序接下来做什么


它是否返回for语句以检查这是哪个(term)/元素,以确保它小于102

另外,当我将范围指定为102时,它是执行一次操作,然后再执行102次(基本上是列出数字103次)还是执行102次)


基本上我想问的是,如果我需要找到第103个元素,为什么我要指定range=102,而不是range=103

for语句有无限的用法,因为在你的例子中,它只是在其中做了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