On 05/10/2014 11:16 PM, Glen Chan wrote:
Hello, I am a student trying to figure out Python. I am getting errors that I 
don't know how to fix. What do you do after you get the error message and 
something is highlighted? Does that have to be deleted? Anyway, here is what I 
mean...


def main():
     print
     #initialize variables
     playerOne = 'No Name'
     playerTwo = 'No Name'

     #call to inputNames
     playerOne, playerTwo = inputNames(playerOne, playerTwo)
     #while loop to run program again
     while endProgram == 'no':
         #initialize variables
      winnersName = 'NO NAME'
      p1number = 0
      p2number = 0
         #call to rollDice
      winnerName = rollDice(p1number, p2number, playerOne, playerTwo, 
winnerName)

         #call to displayInfo
      winnerName
         endProgram = raw_input('Do you want to end program? (Enter yes or no): 
')


When posting a question, you should always specify the Python version and OS, though it probably doesn't matter here.

As others have said, please paste the exact error message. This is a text mailing list, so any highlighting you may have tried to include is lost on most of us. Please post in a text message, not html, as many things can go wrong in the re-interpretation, especially in any source code.

I pasted your code into a text editor, saved the file, and ran it a terminal window in Python 2.7 under Linux,

davea@think2:~/temppython$ python glen.py
  File "glen.py", line 25
endProgram = raw_input('Do you want to end program? (Enter yes or no): ')
    ^
IndentationError: unexpected indent
davea@think2:~/temppython$

As you can see the callstack shows the line that has a problem, and shows s a specific error message. The problem is that you indented a line improperly. You only add to the indentation within a function, an if/else statement statement block, class, with clause, etc. Ordinary statemdents have to line up with the ones before, not counting comments.

If you line up the endProgram line with the previous winnername line, this particular error will go away. But you have others.

I notice you mix spaces and tabs for indentation, which is dangerously confusing. You should stick to one or the other, and I prefer spaces. I configured my text editor (emacs) to turn any tabs into 4 spaces, so that I won't get into trouble.

in some places you only indent by one space. That's hard to read and you
can wind up with problems from that. Better to stick with 4, though some people seem to prefer 2.

Next problem is:

davea@think2:~/temppython$ python glen.py
  File "glen.py", line 44
    elif p1number > p2number:
                            ^
IndentationError: unindent does not match any outer indentation level

This error is because the elif clause does not line up with the if clause.

But a bigger problem in that portion of code is that you're apparently starting a new function, but never define it. No def line follows the comment: #this function displays the winner

If you add that def xxx(): line, and indent the if, then the elif will line up as expected.

After fixing that, the next error is:

Traceback (most recent call last):
  File "glen.py", line 51, in <module>
    main()
  File "glen.py", line 15, in main
    while endProgram == 'no':
UnboundLocalError: local variable 'endProgram' referenced before assignment


That comes because you have a while statement that refers to the variable endProgram, which has not been yet bound to a value. You need
    endProgram = "no"
before that if statement.

In each of these cases, the error message tells you pretty closely what's wrong, and where. You will need to learn to read the error messages, the tracebacks.

Your next problem is one of program logic, and I leave it to you.

--
DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to