Python:For Loop Looping太多或太少

时间:2018-01-30 09:25:25

标签: python for-loop

尽管有休息,我的节目似乎在这里循环了几次:

for sequence in qwerty:
    for char in range(0,passlen):
        if password [char : char + 2] in sequence:
           score -= 5
           print(score,"subtracting 5")

通常输出:

38 subtracting 5
33 subtracting 5
28 subtracting 5
23 subtracting 5
18 subtracting 5
13 subtracting 5
8 subtracting 5
3 subtracting 5
-2 subtracting 5
-7 subtracting 5

或者根本没有。

它应该只循环等于密码中3个字母QWERTY序列的数量。

我该怎么做才能调解这个?

2 个答案:

答案 0 :(得分:0)

break只会打破最里面的循环(即for char in range(0,passlen):),因此您将返回外循环并继续前进。

您可以改为使用标志:

flag = False
for sequence in qwerty:
          if flag: # False until the inner loop breaks
               break
          for char in range(0,passlen):
            if password [char : char + 2] in sequence:
               score -= 5
               print(score,"subtracting 5")
               flag = True
               break

答案 1 :(得分:0)

外部for循环在这个程序中似乎是多余的。您引用的持续循环是“for qwerty中的序列:”,您应该1)删除外部for循环或2)为外部循环添加break语句