for循环中的Python项目计数

Python item count in a for loop

本问题已经有最佳答案,请猛点这里访问。

今天早些时候我在python中尝试了循环和列表,我有点沉迷于这一点,可能非常简单…以下是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
animals = ["hamster","cat","monkey","giraffe","dog"]

print("There are",len(animals),"animals in the list")
print("The animals are:",animals)

s1 = str(input("Input a new animal:"))
s2 = str(input("Input a new animal:"))
s3 = str(input("Input a new animal:"))

animals.append(s1)
animals.append(s2)
animals.append(s3)

print("The list now looks like this:",animals)

animals.sort()
print("This is the list in alphabetical order:")
for item in animals:
    count = count + 1

    print("Animal number",count,"in the list is",item)

count变量不起作用,因为任何原因,我试图搜索这个问题,但找不到任何内容。它说它没有定义,但是如果我放一个正常的数字或一个字符串,它工作得很好。(我现在也生病了,所以我不能正确地思考,所以这可能很简单,我只是没有抓住它)我要做一个新的for循环吗?因为当我这样做的时候:

1
2
3
for item in animal:
    for i in range(1,8):
        print("Animal number",i,"in the list is",item)

它只是把列表中的每一项都吐出来,数字是1-7,这是…更好,但不是我想要的。


您需要先定义计数,例如:

1
count = 0

另一个更好的方法就是:

1
2
for count, item in enumerate(animals):
    print("Animal number", count + 1,"in the list is", item)

您需要在循环之前初始化count。否则,python不知道count是什么,所以它无法评估count + 1

你应该这样做

1
2
3
4
5
...
count = 0
for item in animals:
    count = count + 1
    ...


您试图增加一个从未设置的值:

1
2
for item in animals:
    count = count + 1

python抱怨count,因为第一次在count + 1中使用它时,count从未被设置!

循环前设置为0

1
2
3
4
count = 0
for item in animals:
    count = count + 1
    print("Animal number",count,"in the list is",item)

现在第一次执行count + 1表达式时,count存在,count可以用0 + 1结果更新。

作为一种更为pythonic的替代方法,您可以使用enumerate()函数在循环本身中包含一个计数器:

1
2
for count, item in enumerate(animals):
    print("Animal number",count,"in the list is",item)

明白枚举是什么意思吗?