我的嵌套while循环用于计算元素有什么问题

时间:2018-03-04 05:20:43

标签: python python-3.x

我只想弄清楚F中每个元素在N中出现的频率并将其打印出来。我使用嵌套的for循环,它的工作原理。但是当我使用嵌套的while循环时,它没有按预期工作。我检查了我的代码,但找不到原因。

F = [4,7,2]
N = [2,3,4,2,5,6,3,2,6,7,3,4]

嵌套for循环版本,按预期工作:

four_count = 0
seven_count = 0
two_count = 0

for n in N:
    for f in F:
        if n == f and f == 4:
            four_count += 1
        elif n == f and f == 7:
            seven_count += 1
        elif n == f and f == 2:
            two_count += 1

print(str(F[0]) + " occurs in N " + str(four_count) + " times")
print(str(F[1]) + " occurs in N " + str(seven_count) + " times")
print(str(F[2]) + " occurs in N " + str(two_count) + " times")

这是正确的输出:

4 occurs in N 2 times
7 occurs in N 1 times
2 occurs in N 3 times

嵌套while循环版本,错误输出:

four_count = 0
seven_count = 0
two_count = 0

N_Count = 0
F_Count = 0

while N_Count < len(N):
    while F_Count < len(F):
        if N[N_Count] == F[F_Count] and F[F_Count] == 4:
            four_count += 1
        elif N[N_Count] == F[F_Count] and F[F_Count] == 7:
            seven_count += 1
        elif N[N_Count] == F[F_Count] and F[F_Count] == 2:
            two_count += 1
        F_Count += 1
    N_Count += 1

print(str(F[0]) + " occurs in N " + str(four_count) + " times")
print(str(F[1]) + " occurs in N " + str(seven_count) + " times")
print(str(F[2]) + " occurs in N " + str(two_count) + " times")

嵌套while循环的错误输出:

4 occurs in N 0 times
7 occurs in N 0 times
2 occurs in N 1 times

1 个答案:

答案 0 :(得分:3)

您必须在F_Count = 0之后重置while N_Count < len(N):,否则列表F只会循环一次。所以它会是:

...
while N_Count < len(N):
    F_Count = 0
    while F_Count < len(F):
...

但除非你正在学习循环,否则这不是做你想做的最好的方法。使用count的东西会更好,例如:

counts = [N.count(f) for f in F]

或类似的