2016-03-29 7 views
1

タブのようなスペースではなく、インデント用のタブを使用してコードを正しくチェックしたことをダブルチェックしました。私は次のようにタブに関する私の設定は、最大OS X上で原子コードエディタを使用しています:IndentationError:Pythonでインデントされたブロックがあることが予想されます(ハードタブを使用)

  • ソフトタブは
  • タブのサイズが4
  • タブの種類がハードに設定されているに設定されている未チェックです
  • ここで

は私のコードです:

#Password Cracker test program 
#Program written by Zach Hofmeister, ported to Python 
#READ THE README BEFORE USING ANY OF MY CODE!!! 

#Below variable saves the password entered by the user. Only compared to a complete password to simulate brute-force cracking. 
userPassword = raw_input("Enter a 4 digit password for the computer to guess. Only Upper/Lower case letters and numbers.") + "" 

#The following variable contains an array of all the possible characters that can be present. 
possibleCharacters = ['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','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','1','2','3','4','5','6','7','8','9','0'] 

#The default computer guess. 
computerGuess = 'AAAA' 

#Establishes that the computer has not correctly guessed the password, will be changed when password is discovered. 
correctGuess = False 

#The following variable keeps track of how many guesses it takes for the computer to crack the password. 
totalGuesses = 0 

#The following variable keeps track of what character is currently being tested. 
i = [0,0,0,0,0,0,0,0,0,0] 

#Function that compares the current guess to the user input. Notice that the password isn't guessed letter by letter, the whole 4 character guess is generated. 
def checkPassword(passwordGuess): 
    if (passwordGuess == userPassword): 
     print "Your password is " + computerGuess + "." 
     print "Took " + totalGuesses + " tries to guess your password." 
    else: 
     #print "Guessing again." 

#Function that creates the current guess and compares it to the actual password. 
def charGuess(charNumberDigit): 
    computerGuess = computerGuess[0:charNumberDigit - 1] + possibleCharacters[i[charNumberDigit - 1]] + computerGuess[charNumberDigit:end] 
    checkPassword(computerGuess) 
    if (charNumberDigit != 4): 
     i[charNumberDigit] = 0 
    i[charNumberDigit - 1] += 1 
    totalGuesses += 1 

#The loop that tells the computer to try a guess 
while (computerGuess != userPassword): 
    while (i[3] <= 61 && computerGuess != userPassword): 
     charGuess(4) 
     while (i[2] <= 61 && i[3] == 61 && computerGuess != userPassword): 
      charGuess(3) 
      while (i[1] <= 61 && i[2] == 61 && computerGuess != userPassword): 
       charGuess(2) 
       while (i[0] <= 61 && i[1] === 61 && computerGuess != userPassword): 
        charGuess(1) 

ところで、私はこの問題の他の記事を読んでいると、彼らは私のプロが解決しませんでした私が知っている限りでは、タブとスペースを混ぜて使うのではなく、タブを正しく使っています。

+1

問題があなたのelseブロックです。次の行をコメントアウトしたので、 'charGuess'の下の関数はelseブロックの一部であると考えます。何も起こらないようにするには、elseブロックの下に 'pass'を書くことができます。 – pushkin

答えて

2

Pythonでは、コードブロックには常に何かが存在する必要があります。 checkPassword関数のelseブロックをコメントアウトしました。

def checkPassword(passwordGuess): 
    if (passwordGuess == userPassword): 
     print "Your password is " + computerGuess + "." 
     print "Took " + totalGuesses + " tries to guess your password." 
    else: 
     #print "Guessing again." 

あなたが何かをしたくない場合は、passステートメントを使用することができます。

else: 
    pass 
関連する問題