枚举for循环,Python



我正在参加一个python初学者课程,我已经被不清楚的说明所困扰。我需要程序打印出来的是:

How many Fibonacci numbers do you want? 7
1. 1
2. 1
3. 2
4. 3
5. 5
6. 8
7. 13

…但是这门课还没有讲到枚举,我还不能让它工作。我得到的是:

pre_previous_fib = 0
previous_fib = 1
num = int(input("How many Fibonacci numbers do you want? ", ))
for n in range(1, num + 1):
if (n == 1):
new_fib = n
else:
new_fib = pre_previous_fib + previous_fib
pre_previous_fib = previous_fib
previous_fib = new_fib
print(new_fib)

我尝试使用另一个for循环来枚举,但我最终得到一个错误代码,因为new_fib是不可迭代的。

使用您的n,它已经枚举了迭代

for n in range(1, num + 1):
if n == 1:
new_fib = n
else:
new_fib = pre_previous_fib + previous_fib
pre_previous_fib = previous_fib
previous_fib = new_fib
print(f"{n}. {new_fib}")

如果枚举一个列表,使用enumerate

values = 'jfujd'
for i, x in enumerate(values):
print(i, x)
0 j
1 f
2 u
3 j
4 d

正如另一个答案已经告诉您的,您的循环变量已经有效地枚举了您的迭代。但是如果你真的想要,你可以:

num = int(input("How many Fibonacci numbers do you want? "))
prev = 0
for n, _ in enumerate(range(num), 1):
if n == 1:
this = 1
else:
this, prev = this+prev, this
print(f"{n}. {this}")

演示:https://ideone.com/UUZ7ix

您并没有真正枚举"for循环",您枚举了一个可迭代对象,并将其输出传递给两个参数的for

最新更新