所以我是编程新手,我正在编写一些练习代码(Python 3.6):
while True:
print('Hello Steve, what is the password?')
password = input()
if password != '1234':
continue
print('Access granted')
我遇到的问题是,即使我输入了正确的密码,循环也会继续。你可以帮我弄清楚我做错了吗?
答案 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);
}
}
}