当用户插入“nee”&时,如何让我的while语句停止?退出程序。当用户插入nee时,它继续运行程序并询问(“Wilt u dit program gebruiken?ja / nee:”)3次。在它问了我3次后,程序突然停止了。
我希望程序在用户插入ja时运行,并在用户插入nee时停止。
import time
import sys
print ("Check of uw wachtwoord veilig genoeg is in dit programma.")
time.sleep(1)
print ("Uw wachtwoord moet tussen minimaal 6 en maximaal 12 karakters
bestaan")
print ("U kunt gebruik maken van hoofdletters,getallen en symbolen
(@,#,$,%)")
klein = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
groot = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
nummers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
symbolen= [' ', '!', '#', '$', '%', '&', '"', '(', ')', '*', '+', ',', '-',
'.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'{', '|', '}', '~',"'"]
def ok(passwd,l):
return any(k in passwd for k in l) # checkt of een letter in de lijst
in het wachtwoord zit.
while input("Wilt u dit programma gebruiken? ja/nee: ") == "ja" or input("Wilt u dit programma gebruiken? ja/nee: ") == "JA" or input("Wilt u dit programma gebruiken? ja/nee: ") == "Ja":
ww = input("Voer uw wachtwoord in: ")
if len(ww) < 6:
print ("uw wachtwoord is te kort, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
elif len(ww) > 12:
print ("uw wachtwoord is te lang, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
elif len(ww) >= 6 and len(ww)<= 12:
sww = set(ww) # set is een onorganiseerde verzameling dat betekent dat het niet op order is bijv. SaUj%2F3 = Oonorganiseerd
if all(ok(sww,l) for l in [klein,groot,nummers,symbolen]):
print ("uw wachtwoord is Zeer sterk")
elif all(ok(sww,l) for l in [klein,groot,nummers]):
print ("uw wachtwoord is Sterk")
elif all(ok(sww,l) for l in [klein,groot,symbolen]):
print ("uw wachtwoord is Sterk")
elif all(ok(sww,l) for l in [groot,nummers,symbolen]):
print ("uw wachtwoord is Sterk")
elif all(ok(sww,l) for l in [nummers,symbolen,klein]):
print ("uw wachtwoord is Sterk")
elif all(ok(sww,l) for l in [nummers,symbolen]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [groot,nummers]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [groot,symbolen]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [klein,groot]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [klein,nummers]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [klein,symbolen]):
print ("uw wachtwoord is Medium")
elif all(ok(sww,l) for l in [klein]):
print ("uw wachtwoord is Zwak")
elif all(ok(sww,l) for l in [symbolen]):
print ("uw wachtwoord is Zwak")
elif all(ok(sww,l) for l in [nummers]):
print ("uw wachtwoord is Zwak")
elif all(ok(sww,l) for l in [groot]):
print ("uw wachtwoord is Zwak")
答案 0 :(得分:0)
这是因为你要求它三次。当第一个条件(== "ja"
)出错时,它会继续下一个条件(== "JA"
)。在您的情况下,它会再次询问您的输入。尝试使用a while true
loop:
while True:
inp = raw_input("Wilt u dit programma gebruiken? ja/nee: ")
if inp == "nee":
break
答案 1 :(得分:0)
我会这样做,检查.lower()
以捕获“ja”,“Ja”和“JA”:
此外,使用getpass.getpass()
代替input()
作为实际密码可以防止“屏幕上的本地回显”......所以在使用时,没有人可以看到你的肩膀。
import time
import sys
import getpass
KLEIN = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
GROOT = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
NUMMERS = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
SYMBOLEN = [' ', '!', '#', '$', '%', '&', '"', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', '{', '|', '}', '~',"'"]
def printinstruction():
print("Check of uw wachtwoord veilig genoeg is in dit programma.")
time.sleep(1)
print("Uw wachtwoord moet tussen minimaal 6 en maximaal 12 karakters bestaan")
print("U kunt gebruik maken van hoofdletters,getallen en SYMBOLEN (@,#,$,%)")
def ok(passwd, l):
return any(k in passwd for k in l) # checkt of een letter in de lijst in het wachtwoord zit.
def checkww(ww):
if len(ww) < 6:
print ("uw wachtwoord is te kort, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
elif len(ww) > 12:
print ("uw wachtwoord is te lang, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
elif len(ww) >= 6 and len(ww) <= 12:
sww = set(ww) # set is een onorganiseerde verzameling dat betekent dat het niet op order is bijv. SaUj%2F3 = Oonorganiseerd
if all(ok(sww, l) for l in [KLEIN, GROOT, NUMMERS, SYMBOLEN]):
print("uw wachtwoord is Zeer sterk")
elif all(ok(sww, l) for l in [KLEIN, GROOT, NUMMERS]):
print("uw wachtwoord is Sterk")
elif all(ok(sww, l) for l in [KLEIN, GROOT, SYMBOLEN]):
print("uw wachtwoord is Sterk")
elif all(ok(sww, l) for l in [GROOT, NUMMERS, SYMBOLEN]):
print("uw wachtwoord is Sterk")
elif all(ok(sww, l) for l in [NUMMERS, SYMBOLEN, KLEIN]):
print("uw wachtwoord is Sterk")
elif all(ok(sww, l) for l in [NUMMERS, SYMBOLEN]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [GROOT, NUMMERS]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [GROOT, SYMBOLEN]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [KLEIN ,GROOT]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [KLEIN, NUMMERS]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [KLEIN, SYMBOLEN]):
print("uw wachtwoord is Medium")
elif all(ok(sww, l) for l in [KLEIN]):
print("uw wachtwoord is Zwak")
elif all(ok(sww, l) for l in [SYMBOLEN]):
print("uw wachtwoord is Zwak")
elif all(ok(sww, l) for l in [NUMMERS]):
print("uw wachtwoord is Zwak")
elif all(ok(sww, l) for l in [GROOT]):
print("uw wachtwoord is Zwak")
def main():
printinstruction()
while True:
gebruik = input("Wilt u dit programma gebruiken? ja/nee: ")
if gebruik.lower() == 'ja':
ww = getpass.getpass("Voer uw wachtwoord in: ")
checkww(ww)
if gebruik.lower() == 'nee':
break
if __name__ == '__main__':
main()
checkww()
函数非常大且重复,可以通过引入全局RESPONSE字典并计算“因子”来确定正确的响应来缩短。
在代码的顶部(与其他全局变量相同),您可以输入字典:
RESPONSE = {1: "uw wachtwoord is Zwak", 2: "uw wachtwoord is Medium", 3: "uw wachtwoord is Sterk", 4: "uw wachtwoord is Zeer sterk"}
然后将checkww()替换为:
def checkww(ww):
factor = 0
if len(ww) < 6:
print ("uw wachtwoord is te kort, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
return
elif len(ww) > 12:
print ("uw wachtwoord is te lang, uw wachtwoord moet uit minimaal 6 en maximaal 12 karakters bestaan!")
return
sww = set(ww)
if all(ok(sww, l) for l in [KLEIN]): factor += 1
if all(ok(sww, l) for l in [GROOT]): factor += 1
if all(ok(sww, l) for l in [NUMMERS]): factor += 1
if all(ok(sww, l) for l in [SYMBOLEN]): factor += 1
print(RESPONSE.get(factor, "Ooops - something went wrong"))
HTH,Edwin。