2016-09-29 3 views
0

ユーザーが "nee"を挿入したときにwhileステートメントが終了するようにするには、&がプログラムを終了します。ユーザーがそれを挿入した瞬間に、プログラムの実行を続け、3回「(プログラムをインストールするかどうかを確認してください。 3回尋ねられた後、プログラムは突然停止します。Whileステートメントja/nee

ユーザーが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

あなたはそれを3回要求しているからです。最初の条件(== "ja")が間違っている場合、次の条件(== "JA")に進みます。あなたのケースでは、あなたの入力をもう一度尋ねるでしょう。 a while true loopでそれをやってみてください。

while True: 
    inp = raw_input("Wilt u dit programma gebruiken? ja/nee: ") 
    if inp == "nee": 
     break 
+0

'raw_input()'がpython 3.xで動作しないと思う –

0

私はそれをこのようにするだろう、 "JA"、 "ジャ"、および "JA" キャプチャする.lower()のチェック: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 = {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、エドウィン。

関連する問題