2017-05-12 6 views
0

私はPythonのnoobです。私のコードに何が問題なのか分かりません。私はそれを実行するたびに、「これはあなたのパスワードです:」と表示され、その後は生成されたパスワードを印刷することになっています。パスワードジェネレータが動作しない

import random 

strength = ['Weak', 'Medium', 'Strong'] 

charbank = ('1234567890qwertyuiopASDFGHJKLZXCVBNM') 

chosenchars = ('') 

choice = ('') 

def inputfunction(): 
    while True: 
     userchoice = input("Would you like your password to be: \n Weak \n Medium? \n Strong?\n") 
     if userchoice in strength: 
      choice = ''.join(userchoice) 
      break 
     print ('oops, that\'s not one of the options. Enter again...') 
    return choice 

def strengththing(): 
    if choice == ("Weak"): 
     Weak() 
    if choice == ("Medium"): 
     Medium() 
    if choice == ("Strong"): 
     Strong() 

def Weak(): 
    passlen = 5 
    chosenchars.join(random.sample(charbank, passlen)) 

def Medium(): 
    passlen = 10 
    chosenchars.join(random.sample(charbank, passlen)) 

def Strong(): 
    passlen = 15 
    chosenchars.join(random.sample(charbank, passlen)) 



inputfunction() 
strengththing() 

print ('this is your password: %s' %chosenchars) 

助けがあれば助かります。私はどこが間違っていたのか分かりません。ありがとうございました!

+0

が、私はこのプログラミング言語に精通していないんだけど、少なくとも与えるという問題がある場合、私はあなたがそれぞれの方法でパスワードを印刷してみてください、と見ることをお勧め:あり

あなたが行きますあなたは問題がどこにあるのかをより詳しく知ることができます – Steven

+0

そして、あなたはノブではありません! – Steven

+0

@スティーブン・ハハは励ましの言葉に感謝しますが、何が間違っているのかまだ分かりません。そこに他のヘルプ? –

答えて

0

あなたはWhileループの後にreturnステートメントで 'choice'の値を変更しませんでした。

私はいくつかの変更を行いました。

#!/usr/bin/env python3 
import random 

strength = ['Weak', 'Medium', 'Strong'] 
charbank = ('1234567890qwertyuiopASDFGHJKLZXCVBNM') 
chosenchars = ('') 
choice = ('') 

def inputfunction(): 
    while True: 
     userchoice = input("Would you like your password to be: \n Weak \n Medium? \n Strong?\n") 
     if userchoice in strength: 
      choice = ''.join(userchoice) 
      break 
     else: 
      print ('oops, that\'s not one of the options. Enter again...') 
    return choice 

def strengththing(): 
    if choice == 'Weak': 
     return RandomPass(5) 
    if choice == 'Medium': 
     return RandomPass(10) 
    if choice == 'Strong': 
     return RandomPass(15) 

def RandomPass(passlen): 
    myVar = ''.join(random.sample(charbank, passlen)) 
    return myVar 

choice = inputfunction() 
chosenchars = strengththing() 

print ('this is your password: %s' %chosenchars) 
+0

申し訳ありません、ありがとうございます!これはうまくいった。私はしかし、質問があります。どのようにして、inputfunction()とstrengththing()の下の選択肢と選択肢を再割り当てする必要がありますか? inputfunction()がchoiceを返すので、なぜ関数を呼び出すことができませんでしたか? –

+0

@R_C私が理解したところでは、Pythonのプログラマーではなく、Javeの人で、グローバル変数の選択肢を設定するはずの入力関数から選択肢を返していました。私が無視する理由のために、この割り当ては機能しませんでした。だから私はあなたの2つの関数から局所変数を返すことになった。 – Vini

関連する問題