[Tutor] [Fwd: Re: trouble with "if"]

Brian van den Broek broek at cc.umanitoba.ca
Wed May 30 17:21:48 CEST 2007

Adam Urbas said unto the world upon 05/30/2007 11:01 AM:
> I can't exactly show you the error message anymore, because the program is
> now screwed up in so many ways that I can't even get it to do the things it
> used to.
> It says things like ERROR: Inconsistent indentation detected!
> 1) Your indentation is outright incorrect (easy to fix), OR
> 2) Your indentation mixes tabs and spaces.  Then it tells me to untabify
> everything, which i did and it still gives this message.  I've started
> completely over with the exact same indentation and that one works.
> Oh my gosh this gmail is a fricken crack head... none of this stuff was 
> here
> last night.  I have no idea what was going on then, but everything you guys
> said is right here.  The plain text is right next to the Check spelling, 
> the
> reply to all is right above send and save now and in the corner near the
> little arrow.  Well, it's working now.
> Ok, so if i have a section of code that is:
> answer=(2+3):
> print "answer", answer
> so for the code above I would put: (I think I would have to have the two
> numbers and the addition thing in there wouldn't I; I saw something like
> this on Alan's tutorial last night.)
> def answer(2,3):
>    answer=(2+3)
>    print "answer",answer
> That is obviously not right.:
> There's an error in your program:
> invalid syntax
> when it says that it highlights the 2: def answer(2+3):
> Ok I think I understand these now.  Thanks for the advice.  I have this 
> now:
> def answer():
>    print("answer")
> answer()
> It works too, yay!
> Thanks,
> Au


Glad you are sorting out the gmail---in the long run, plain text will 
make this all much easier than what you had before :-)

Your answer function definition above is saying something like this: 
make answer the name of a function that takes no parameters, and, when 
called, have it execute a print.


 > def answer(2,3):
 >    answer=(2+3)
 >    print "answer",answer

doesn't work, as you are trying to set the values of the two 
parameters to 2 and 3 in the function definition itself. That's not 
how parameters work. The definition of a function sets the parameters 
up as named `slots' that function calls will give values to. (There 
are, as Andre pointed out, more details, but let those aside for now 
and focus on the simplest cases.)


def answer():
     print "answer",answer

would work, but it isn't much different than the code that did work.

Try this:

def answer(my_first_parameter, my_second_parameter):
     value = my_first_parameter + my_second_parameter
     print "Answer:\t", value

(I wouldn't use the cumbersome names `my_first_parameter', etc. in 
real code, but perhaps they help keeping track of what is going on in 
early stages.)

That says, in effect, let answer be a function which takes two 
positional parameters, adds them, and prints the result in an 
informative way.

 >>> answer(40, 2)
Answer: 42
 >>> answer("A string", " and another string")
Answer: A string and another string

These work because the function definition ensures that the first 
parameter (40, in the first case above) will, as far as the function 
is concerned, be called my_first_parameter. (Likewise for 2 and 

Does that help?

Brian vdB

More information about the Tutor mailing list