2017-01-07 10 views
0

私はプロジェクトのためにpythonを使ってパスワード推測をしようとしています。しかし、私は立ち往生してしまった。現在私が使用しているコードがあります。グローバルなPythonの問題?

apple1 
apple2 
apple3 
apple4 
apple5 
apple6 
apple7 
apple8 
apple9 
apple10 
ate1 
ate2 

など:私は、コードを実行すると

dictfile = open('c:/PC/wordsEn.txt', 'r') 
DictionaryWords = dictfile.readlines() 


Password = 'zygote10' 

Intadd = 0 

def Number_Finder(): 
    for x in DictionaryWords: 
     global Intadd 
     print(x .replace("\n", str(Intadd))) 
     if x .replace("\n", str(Intadd)) == Password: 
      print("Congrats, you found the password!") 
      break 
     else: 
      while Intadd < 10: 
       Intadd += 1 
       print(x.replace("\n", " ") + str(Intadd)) 


def Password_Tester(): 
    for x in DictionaryWords: 
     if x .replace("\n", "") == Password: 
      print('Found it!', x, 'is the password!') 
      break 
    else: 
     Number_Finder() 


Password_Tester() 

は、私はこのような何かを見たいと思っています。 (基本的には、コードが単語を実行し、その数が10に達するまで毎回番号を変更してから、単語を変更してからプロセスを繰り返す)。

しかし、私は、コードを実行したとき、私はこれを参照してください。

apple1 
apple2 
apple3 
apple4 
apple5 
apple6 
apple7 
apple8 
apple9 
apple10 
ate10 
aviation10 

(リンゴの後、単語は1から10まで行くのプロセスを繰り返していない、と言葉だけで数によって変化します10 after it)

私はこの問題がグローバルコマンドにあると思います。私はPythonをかなり新しくしているので、明らかな解決策があれば申し訳ありません。みんなありがとう!

+2

ですから、 'Intadd'再び0に設定されていますか?関数が終了したときに0に戻ることを期待しましたか?それはグローバルがどのように機能するかではありません。 –

+0

'wordsEn.txt'の内容は何ですか?グローバル変数リストに含まれる少数の文字列で動作するこのコードの簡略版を書くと役に立ちます。 – Tagc

答えて

0

あなたは、一般的にはとてもローカル変数とをglobalを使用するべきではありませんforループ:

def Number_Finder(): 
    for x in DictionaryWords: 
     for n in range(10): 
      x2 = x.strip()+str(n) 
      print(x2) 
      if x2 == Password: 
       print("Congrats, you found the password!") 
       return 
関連する問題