我只想弄清楚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
答案 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]
或类似的