为什么循环没有停止使用'继续'?

时间:2017-06-24 13:54:59

标签: python python-3.x while-loop continue

所以我是编程新手,我正在编写一些练习代码(Python 3.6):

while True:
    print('Hello Steve, what is the password?')
    password = input()
    if password != '1234':
        continue
    print('Access granted')

我遇到的问题是,即使我输入了正确的密码,循环也会继续。你可以帮我弄清楚我做错了吗?

4 个答案:

答案 0 :(得分:8)

continue将在循环中跳过当前轮次的其余部分,然后循环将重新开始:

>>> i = 0
>>> while i < 5:
...     i += 1
...     if i == 3:
...         continue
...     print(i)
...
1
2
4
5
>>>

您正在寻找的是break关键字,它将完全退出循环:

>>> i = 0
>>> while i < 5:
...     i += 1
...     if i == 3:
...         break
...     print(i)
...
1
2
>>>

但是,请注意break将完全跳出循环,而print('Access granted') 之后 。所以你想要的是这样的:

while True:
    print('Hello Steve, what is the password?')
    password = input()
    if password == '1234':
        print('Access granted')
        break

或者使用while循环的条件,虽然这需要重复password = ...

password = input('Hello Steve, what is the password?\n')
while password != '1234':
    password = input('Hello Steve, what is the password?\n')
print('Access granted')

答案 1 :(得分:0)

更改break代替continue,应该有效。

答案 2 :(得分:0)

首先,你使用错误的逻辑运算符进行相等比较,这个:!=用于不等于;此==用于等于

其次,正如其他人已经说过的那样,您应该使用break代替continue

我会做这样的事情:

print('Hello Steve!')
while True:
    password = input('Type your password: ')
    if password == '1234':
        print('Access granted')
        break
    else:
        print('Wrong password, try again')

答案 3 :(得分:0)

尝试使用break语句,而不要继续。 您的代码应如下所示

   internal class SwaggerSchemaFilter : ISchemaFilter
        {
            public void Apply(OpenApiSchema schema, SchemaFilterContext context)
            {
                var keys = new System.Collections.Generic.List<string>();
                var prefix = "My.Namespace";
                foreach(var key in context.SchemaRepository.Schemas.Keys)
                {
                   if (key.StartsWith(prefix))
                    {
                        keys.Add(key);
                    }
                }
                foreach(var key in keys)
                {
                    context.SchemaRepository.Schemas.Remove(key);
                }
            }
        }