Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Kent Johnson
On 8/16/08, Lie Ryan <[EMAIL PROTECTED]> wrote:
> never use input(), use raw_input() instead. input() parses the string it
> receives first, and may (read: WILL in the hands of certain persons)
> allow user to input certain strings that get parsed into dangerous
> codes. Use int(raw_input()) instead to convert the result of raw_input
> (i.e. string) into a number (i.e. integer).

Probably float(raw_input()) would be better in this program.

Kent
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Lie Ryan
On Sat, 2008-08-16 at 16:07 +, Matti/Tritlo wrote:
> I too am a Beginner at python, and i have been playing around with it
> for about a week. While playing around, i decided to make a calculator
> program (A Very simple one) to calculate area and also to convert
> farenheit to celcius and vice versa. So, here is the code:

Shall I give some comments on your code?

> def options():
> print "Options:"
> print " 'p' to print options"
> print " 's' for area of square"
> print " 't' for area of triangle"
> print " 'c' for area of square" 
> print " 'ce' to convert from celsius to farenheit"
> print " 'fa' to convert from fahrenheit to celcius"
> print " 'q' to quit the program"
> print "Welcome to this calculator."
> user = raw_input("So, What is your name? ")
> print "Oh, Welcome ", user,",I´ll be your calculator to day."
> print "Please select one of these options, and lets calculate!"
> print options()
> def positive():
> print "Must be a positive number"
> 
> def square_area(width, height):
> return width * height
> 
> def triangle_area(width, height):
> return width * height / 2
> 
> def circle_area (radius):
> return radius * 3.141562953589793
> 
> def c_to_f(c_temp):
> return 9.0 / 5.0 * c_temp + 32
>  
> def f_to_c(f_temp):
> return (f_temp - 32.0) * 5.0 / 9.0
> 
> def choice():
> choice = "p"
> while choice != "q":
> choice = raw_input("Option: ")
> if choice == "p":
> print options()
> elif choice == "s":
> print "So, you have chosen to calculate the area of a
> Square."
> w = input("Please enter Width: ")

never use input(), use raw_input() instead. input() parses the string it
receives first, and may (read: WILL in the hands of certain persons)
allow user to input certain strings that get parsed into dangerous
codes. Use int(raw_input()) instead to convert the result of raw_input
(i.e. string) into a number (i.e. integer). Since we're using int() to
convert the string into number now, if you typed non-numbers, you'd get
an Exception/Error, so you should add a try: block that would -- in case
of errors -- reask the user again.


try:
   int('string')
except ValueError:
   print 'You passed a string that cannot be turned into integer'


> while w <= 0:
> positive()
> w = input("Please enter Width: ")
> h = input("Please enter Height: ")
> while h <= 0:
> positive()
> h = input("Please enter Height: ")
> print "The Square´s area is: ", square_area(w,h)
> elif choice == "t":
> print "So, you have chosen to calculate the area of a
> Triangle."
> w = input("Please enter Width: ")
> while w <= 0:
> positive()
> w = input("Please enter Width: ")
> h = input("Please enter Height: ")
> while h <= 0:
> positive()
> h = input("Please enter Height: ")
> print "The Triangle´s area is: ", triangle_area(w,h)

Don't you think that all those codes seems very similar and redundant
and tiring to type? Then make it into a function, pass arguments to make
the behavior of the function differs and cut short a lot of lines.

def getanumber(prompt):
h = int(raw_input(prompt))
while h <= 0:
positive()
h = int(raw_input(prompt))
return h

...
elif choice == 't':
print "So, you have chosen to calculate the area of a Triangle."
w = getanumber("Please enter Width: ")
h = getanumber("Please enter Height: ")
print "The Triangle´s area is: ", triangle_area(w,h)
elif choice
...

Ok, now we're left with that, which is still redundant since the pattern
of print, get input values, and print output values is still repeated.
Personally I'd go even further to make them functions too, but I'll let
you pass with that (why? because: since not all menu options require the
same number of argument it'd require using a clever trick involving
list/dictionary and for-loop iteration, for now I think it might be out
of bounds). 

PS: If you're really interested in how your program can still even be
made more concise and less redundant, see way below for a raw,
uncommented, !untested! code.

> 
> elif choice == "c":
> print "So, you have chosen to calculate the area of a
> Circle."
> r = input("Please enter radius: ")
> while r <= 0:
> positive ()
> r = input("Please enter radius: ")
> print "The Circle´s area is: ", circle_area (r)
> elif choice == "ce":
> print "So, you´re wondering how Celcius relates to
> Farenheit."
> c = input("Please enter Celcius degree´s:

Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Kent Johnson
On Sat, Aug 16, 2008 at 12:07 PM, Matti/Tritlo <[EMAIL PROTECTED]> wrote:

Some quick notes:

> print options()

No need for the 'print' here, options() already prints. The extra
print will print the return value of options(), which is None.

> def triangle_area(width, height):
> return width * height / 2

This will give an incorrect result if width and height are both odd
integers. Use 2.0 instead of 2 to force float division.

Kent
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Matti/Tritlo
I too am a Beginner at python, and i have been playing around with it for
about a week. While playing around, i decided to make a calculator program
(A Very simple one) to calculate area and also to convert farenheit to
celcius and vice versa. So, here is the code:


def options():
print "Options:"
print " 'p' to print options"
print " 's' for area of square"
print " 't' for area of triangle"
print " 'c' for area of square"
print " 'ce' to convert from celsius to farenheit"
print " 'fa' to convert from fahrenheit to celcius"
print " 'q' to quit the program"
print "Welcome to this calculator."
user = raw_input("So, What is your name? ")
print "Oh, Welcome ", user,",I´ll be your calculator to day."
print "Please select one of these options, and lets calculate!"
print options()
def positive():
print "Must be a positive number"

def square_area(width, height):
return width * height

def triangle_area(width, height):
return width * height / 2

def circle_area (radius):
return radius * 3.141562953589793

def c_to_f(c_temp):
return 9.0 / 5.0 * c_temp + 32

def f_to_c(f_temp):
return (f_temp - 32.0) * 5.0 / 9.0

def choice():
choice = "p"
while choice != "q":
choice = raw_input("Option: ")
if choice == "p":
print options()
elif choice == "s":
print "So, you have chosen to calculate the area of a
Square."
w = input("Please enter Width: ")
while w <= 0:
positive()
w = input("Please enter Width: ")
h = input("Please enter Height: ")
while h <= 0:
positive()
h = input("Please enter Height: ")
print "The Square´s area is: ", square_area(w,h)
elif choice == "t":
print "So, you have chosen to calculate the area of a
Triangle."
w = input("Please enter Width: ")
while w <= 0:
positive()
w = input("Please enter Width: ")
h = input("Please enter Height: ")
while h <= 0:
positive()
h = input("Please enter Height: ")
print "The Triangle´s area is: ", triangle_area(w,h)
elif choice == "c":
print "So, you have chosen to calculate the area of a
Circle."
r = input("Please enter radius: ")
while r <= 0:
positive ()
r = input("Please enter radius: ")
print "The Circle´s area is: ", circle_area (r)
elif choice == "ce":
print "So, you´re wondering how Celcius relates to
Farenheit."
c = input("Please enter Celcius degree´s: ")
print c, "Degree´s Celcius are", c_to_f(c), "Degree´s
Farenheit."
elif choice == "fa":
print "So, you´re wondering how Farenheit relates to
Celcius."
f = input("Please enter Farenheit degree´s: ")
print f,"Degree´s Farenheit are", f_to_c(f), "Degree´s
Celcius."

else:
print "That option does not exsist"
choice = raw_input("Option: ")
choice()
print "Leaving eh, Well, Goodbye!"
time.sleep(5)

There you can see the Farenheit - Celcius part, and also the simple menu
system.

Hope this Helps!
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Lie Ryan
On Sat, 2008-08-16 at 07:40 +0200, [EMAIL PROTECTED] wrote:
> Message: 1
> Date: Fri, 15 Aug 2008 22:22:00 -0700
> From: "Joseph Bae" <[EMAIL PROTECTED]>
> Subject: Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is
> not defined
> To: "Alan Gauld" <[EMAIL PROTECTED]>
> Cc: tutor@python.org
> Message-ID:
> <[EMAIL PROTECTED]>
> Content-Type: text/plain; charset="iso-8859-1"
> 
> Thanks for the help!
> 
> I have managed to get a good temperature converter program working! I
> am
> working on beefing it up a bit with some exception handling and an
> "and-or
> trick". The error handling works okay but I am having problems using
> and-or.
> Here's my updated code:
> 

You can fix some of these:

> def main():
> true = 1
> while true:

You can use True (note the capital (T)rue) for the boolean value of
True.

> try:
> temp = int(raw_input("Enter A Number : "))
> break
> except ValueError:
> print "Invalid Input"

Following the concept: Don't Make Me Repeat Myself, you could factor out
the input function:

def take_input(prompt, 
   validator = int, 
   errormessage = 'Invalid Input', 
   exceptions = (ValueError, )):
'''
prompt - String to be printed before raw_input
validator - Function to be called after raw_input
errormessage - String to be printed if any exceptions in 
   exceptions is raised
exceptions - List/Tuple containing list of exceptions to caught
'''

while True:
print prompt, 
try:
return validator(raw_input())
except exceptions:
print errormessage

> while true:
> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? :
> ")
> if not convertTo == "F" and not convertTo == "C":

If a boolean expression so simple looks complex, there is usually a
simpler version. Try learning boolean logic a little bit, specifically
boolean simplification for formal ways to simplify a boolean expression
(although many text about boolean logic subject is from electronic, the
basic rules are the same in programming and math).

> print "Invalid Input"
> *else:
> convertTo == "C" and convertToCelsius(temp) or
> convertToFahrenheit(temp)

Never use and-or trick except if you're writing for Python Obfuscation
Code Contest, they have huge pitfalls[1], the and-or trick was useful
before python got "inline if" (although Guido choose a frankly rather
unusual syntax):

true_value if expression else false_value

so your and-or trick should be:
convertToCelcius(temp) if convertTo == 'C' else
convertToFahrenheit(temp)

[1] in and-or hackery a problem arises for codes like this:
>>> b = 0
>>> c = 3
>>> True and b or c
3
>>> False and b or c
3

I'll leave it to you for brain exercise on why that thing happened

> break


> *
> def convertToCelsius(t):
> tC = (9.0/5.0) * (t - 32)
> print "%d Fahrenheit = %d Celsius" % (t, tC)

It's a bad idea for reusability to make convertToCelcius and
convertToFahrenheit print the result themselves, the function would be
more useful if it return the converted value and let the main program
print them. This way, the function could be used for other things as
well (for example, in a more complex temperature converter, rather than
typing out all to all converters, it's a much better idea to convert to
a common unit (say Kelvin, the SI standard for temperature), then
convert it again to the target unit. This is impossible to be done if
convertToCelcius prints the result themself.

i.e.:
def convertToCelcius(t):
return #Do some formula
t = 10
print '%s %s = %s %s' + (t, 'Fahrenheit', convertToCelcius(t),
'Celcius')

> def convertToFahrenheit(t):
> tF = (9.0/5.0) * (t + 32)
> print "%d Celsius = %d Fahrenheit" % (t, tF)
> 
> if __name__=="__main__":

it's not a must, you should see PEP 8 (it's the style guideline):
http://www.python.org/dev/peps/pep-0008/

> main()
> 
> Sample Output (as of right now):
> 
> Enter A Number : 50
> Convert to (F)ahrenheit or (C)elsius? C
> 50 Fahrenheit = 32 Celsius
> 32 Celsius = 147 Fahrenheit <-- shouldn't show up and 147 is too
> high ...
> 
> This only happens when I tell it to convert to C, if I say F it works
> normally. I've debugged it with pdb.set_trace() many times but can't
> figure
> out what's wrong. Help is much appreciated =)
> 
> Thanks,
> 
> Joe

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-16 Thread Kent Johnson
On Sat, Aug 16, 2008 at 1:22 AM, Joseph Bae <[EMAIL PROTECTED]> wrote:

> convertTo == "C" and convertToCelsius(temp) or
> convertToFahrenheit(temp)

This idiom has a pitfall. Consider
  A and B or C

If B can evaluate to a false value, such as None or 0, the expression
will not do what you intend. This idiom is only safe when you are sure
that B will never evaluate to false.

In Python 2.5 there is a better way to write it:

  B if A else C

This is a safer way to write your program.

Kent
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-15 Thread Steve Willoughby

Joseph Bae wrote:

Thanks for the help!

I have managed to get a good temperature converter program working! I am
working on beefing it up a bit with some exception handling and an "and-or
trick". The error handling works okay but I am having problems using and-or.
Here's my updated code:

def main():
true = 1
while true:
try:
temp = int(raw_input("Enter A Number : "))
break
except ValueError:
print "Invalid Input"
while true:
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
if not convertTo == "F" and not convertTo == "C":


this might be easier to read as:
  if convertTo != "F" and convertTo != "C":

or even:
  if convertTo not in ("F", "C"):


print "Invalid Input"
*else:
convertTo == "C" and convertToCelsius(temp) or
convertToFahrenheit(temp)


I'd caution you against using and/or like this as a control flow 
pattern.  It can be very confusing compared to this:


  if convertTo == "C":
  convertToCelsius(temp)
  else:
  convertToFahrenheit(temp)

Note that the and/or pattern hides the bug you're facing.  What you're 
really doing with the and/or pattern is this:


  if convertTo == "C":
  if not convertToCelsuis(temp):
  convertToFahrenheit(temp)
  else:
  convertToFahrenheit(temp)

So what you had will call convertToCelsuis(temp) AND if that didn't 
return a true value, will ALSO call convertToFahrenheit(temp).


Since convertToCelsius() doesn't return a value at all, that's exactly 
what happened.



break
*
def convertToCelsius(t):
tC = (9.0/5.0) * (t - 32)
print "%d Fahrenheit = %d Celsius" % (t, tC)

def convertToFahrenheit(t):
tF = (9.0/5.0) * (t + 32)
print "%d Celsius = %d Fahrenheit" % (t, tF)


That's not the correct calculation.

C = (F - 32) / 1.8

F = (C * 1.8) + 32



if __name__=="__main__":
main()

Sample Output (as of right now):

Enter A Number : 50
Convert to (F)ahrenheit or (C)elsius? C
50 Fahrenheit = 32 Celsius
32 Celsius = 147 Fahrenheit <-- shouldn't show up and 147 is too high ...

This only happens when I tell it to convert to C, if I say F it works
normally. I've debugged it with pdb.set_trace() many times but can't figure
out what's wrong. Help is much appreciated =)

Thanks,

Joe

On Thu, Aug 14, 2008 at 10:50 PM, Alan Gauld <[EMAIL PROTECTED]>wrote:


"Joseph Bae" <[EMAIL PROTECTED]> wrote

 temp = input("Enter A Number : ")

convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")

if convertTo == "F":
  convertedTemp = convertToFahrenheit(temp)
  print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
else:
  convertedTemp = convertToCelsius(temp)
  print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)

def convertToFahrenheit(t):
  tF = (9.0/5.0) * (t + 32)
  return tF

def convertToCelsius(t):
  tC = (9.0/5.0) * (t - 32)
  return tC

convertedTemp = convertToFahrenheit(temp)
NameError: name 'convertToFahrenheit' is not defined

This is most likely a very simple error, but can someone please clarify
for
me why it's behaving this way?


Others have explained that you need to execute the function
definitions before Python sees the name. You can do this in
two ways depending on taste.
1) As suggested move your main code below the function definitions.
2) move your main code into a function - traditionally called main()
  then call main as the last line of your code.

The second method has two advantages:
1) It maintains the top-down design style if thats your preferred style
2) It makes it much easier to make the file into a reusable module.

It has two minor disadvantages:

1) The extra function call (main() ) slows things down by a tiny amount
2) the extra indentation level of being inside a function reduces the page
  width slightly

HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor






___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-15 Thread Joseph Bae
Sorry! I copied the sample output from my command prompt incorrectly.

Correct sample output:

Enter A Number : 50
Convert to (F)ahrenheit or (C)elsius? C
50 Fahrenheit = 32 Celsius
*50 *(not 32) Celsius = 147 Fahrenheit

Joe

On Fri, Aug 15, 2008 at 10:22 PM, Joseph Bae <[EMAIL PROTECTED]> wrote:

> Thanks for the help!
>
> I have managed to get a good temperature converter program working! I am
> working on beefing it up a bit with some exception handling and an "and-or
> trick". The error handling works okay but I am having problems using and-or.
> Here's my updated code:
>
> def main():
> true = 1
> while true:
> try:
> temp = int(raw_input("Enter A Number : "))
> break
> except ValueError:
> print "Invalid Input"
> while true:
> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
> if not convertTo == "F" and not convertTo == "C":
> print "Invalid Input"
> *else:
> convertTo == "C" and convertToCelsius(temp) or
> convertToFahrenheit(temp)
> break
> *
> def convertToCelsius(t):
> tC = (9.0/5.0) * (t - 32)
> print "%d Fahrenheit = %d Celsius" % (t, tC)
>
> def convertToFahrenheit(t):
> tF = (9.0/5.0) * (t + 32)
> print "%d Celsius = %d Fahrenheit" % (t, tF)
>
> if __name__=="__main__":
> main()
>
> Sample Output (as of right now):
>
> Enter A Number : 50
> Convert to (F)ahrenheit or (C)elsius? C
> 50 Fahrenheit = 32 Celsius
> 32 Celsius = 147 Fahrenheit <-- shouldn't show up and 147 is too high ...
>
> This only happens when I tell it to convert to C, if I say F it works
> normally. I've debugged it with pdb.set_trace() many times but can't figure
> out what's wrong. Help is much appreciated =)
>
> Thanks,
>
> Joe
>
>
> On Thu, Aug 14, 2008 at 10:50 PM, Alan Gauld <[EMAIL PROTECTED]>wrote:
>
>> "Joseph Bae" <[EMAIL PROTECTED]> wrote
>>
>>  temp = input("Enter A Number : ")
>>> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
>>>
>>> if convertTo == "F":
>>>   convertedTemp = convertToFahrenheit(temp)
>>>   print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
>>> else:
>>>   convertedTemp = convertToCelsius(temp)
>>>   print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)
>>>
>>> def convertToFahrenheit(t):
>>>   tF = (9.0/5.0) * (t + 32)
>>>   return tF
>>>
>>> def convertToCelsius(t):
>>>   tC = (9.0/5.0) * (t - 32)
>>>   return tC
>>>
>>> convertedTemp = convertToFahrenheit(temp)
>>> NameError: name 'convertToFahrenheit' is not defined
>>>
>>> This is most likely a very simple error, but can someone please clarify
>>> for
>>> me why it's behaving this way?
>>>
>>
>> Others have explained that you need to execute the function
>> definitions before Python sees the name. You can do this in
>> two ways depending on taste.
>> 1) As suggested move your main code below the function definitions.
>> 2) move your main code into a function - traditionally called main()
>>   then call main as the last line of your code.
>>
>> The second method has two advantages:
>> 1) It maintains the top-down design style if thats your preferred style
>> 2) It makes it much easier to make the file into a reusable module.
>>
>> It has two minor disadvantages:
>>
>> 1) The extra function call (main() ) slows things down by a tiny amount
>> 2) the extra indentation level of being inside a function reduces the page
>>   width slightly
>>
>> HTH,
>>
>> --
>> Alan Gauld
>> Author of the Learn to Program web site
>> http://www.freenetpages.co.uk/hp/alan.gauld
>>
>> ___
>> Tutor maillist  -  Tutor@python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>
>
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-15 Thread Joseph Bae
Thanks for the help!

I have managed to get a good temperature converter program working! I am
working on beefing it up a bit with some exception handling and an "and-or
trick". The error handling works okay but I am having problems using and-or.
Here's my updated code:

def main():
true = 1
while true:
try:
temp = int(raw_input("Enter A Number : "))
break
except ValueError:
print "Invalid Input"
while true:
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
if not convertTo == "F" and not convertTo == "C":
print "Invalid Input"
*else:
convertTo == "C" and convertToCelsius(temp) or
convertToFahrenheit(temp)
break
*
def convertToCelsius(t):
tC = (9.0/5.0) * (t - 32)
print "%d Fahrenheit = %d Celsius" % (t, tC)

def convertToFahrenheit(t):
tF = (9.0/5.0) * (t + 32)
print "%d Celsius = %d Fahrenheit" % (t, tF)

if __name__=="__main__":
main()

Sample Output (as of right now):

Enter A Number : 50
Convert to (F)ahrenheit or (C)elsius? C
50 Fahrenheit = 32 Celsius
32 Celsius = 147 Fahrenheit <-- shouldn't show up and 147 is too high ...

This only happens when I tell it to convert to C, if I say F it works
normally. I've debugged it with pdb.set_trace() many times but can't figure
out what's wrong. Help is much appreciated =)

Thanks,

Joe

On Thu, Aug 14, 2008 at 10:50 PM, Alan Gauld <[EMAIL PROTECTED]>wrote:

> "Joseph Bae" <[EMAIL PROTECTED]> wrote
>
>  temp = input("Enter A Number : ")
>> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
>>
>> if convertTo == "F":
>>   convertedTemp = convertToFahrenheit(temp)
>>   print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
>> else:
>>   convertedTemp = convertToCelsius(temp)
>>   print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)
>>
>> def convertToFahrenheit(t):
>>   tF = (9.0/5.0) * (t + 32)
>>   return tF
>>
>> def convertToCelsius(t):
>>   tC = (9.0/5.0) * (t - 32)
>>   return tC
>>
>> convertedTemp = convertToFahrenheit(temp)
>> NameError: name 'convertToFahrenheit' is not defined
>>
>> This is most likely a very simple error, but can someone please clarify
>> for
>> me why it's behaving this way?
>>
>
> Others have explained that you need to execute the function
> definitions before Python sees the name. You can do this in
> two ways depending on taste.
> 1) As suggested move your main code below the function definitions.
> 2) move your main code into a function - traditionally called main()
>   then call main as the last line of your code.
>
> The second method has two advantages:
> 1) It maintains the top-down design style if thats your preferred style
> 2) It makes it much easier to make the file into a reusable module.
>
> It has two minor disadvantages:
>
> 1) The extra function call (main() ) slows things down by a tiny amount
> 2) the extra indentation level of being inside a function reduces the page
>   width slightly
>
> HTH,
>
> --
> Alan Gauld
> Author of the Learn to Program web site
> http://www.freenetpages.co.uk/hp/alan.gauld
>
> ___
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-14 Thread Alan Gauld

"Joseph Bae" <[EMAIL PROTECTED]> wrote


temp = input("Enter A Number : ")
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")

if convertTo == "F":
   convertedTemp = convertToFahrenheit(temp)
   print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
else:
   convertedTemp = convertToCelsius(temp)
   print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)

def convertToFahrenheit(t):
   tF = (9.0/5.0) * (t + 32)
   return tF

def convertToCelsius(t):
   tC = (9.0/5.0) * (t - 32)
   return tC

 convertedTemp = convertToFahrenheit(temp)
NameError: name 'convertToFahrenheit' is not defined

This is most likely a very simple error, but can someone please 
clarify for

me why it's behaving this way?


Others have explained that you need to execute the function
definitions before Python sees the name. You can do this in
two ways depending on taste.
1) As suggested move your main code below the function definitions.
2) move your main code into a function - traditionally called main()
   then call main as the last line of your code.

The second method has two advantages:
1) It maintains the top-down design style if thats your preferred 
style

2) It makes it much easier to make the file into a reusable module.

It has two minor disadvantages:

1) The extra function call (main() ) slows things down by a tiny 
amount
2) the extra indentation level of being inside a function reduces the 
page

   width slightly

HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld 



___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-14 Thread Tuxicomane
Joseph Bae <[EMAIL PROTECTED]> writes:

> Hi all,

Hi ! (and sorry for my approximative English ... ;-)

> I'm new to Python (and programming in general) and need some help!
>
> Here is my code so far for a temperature conversion program
>(converts between Fahrenheit and Celsius):
>
> temp = input("Enter A Number : ")
> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
>
> if convertTo == "F":
> convertedTemp = convertToFahrenheit(temp)
> print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
> else:
> convertedTemp = convertToCelsius(temp)
> print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)
>
> def convertToFahrenheit(t):
> tF = (9.0/5.0) * (t + 32)
> return tF
>
> def convertToCelsius(t):
> tC = (9.0/5.0) * (t - 32)
> return tC
>
> It worked fine without having extra functions but once I put
> convertToFahrenheit and convertToCelsius in (just for practice
> really), this happened:
>
> Enter A Number : 50
> Convert to (F)ahrenheit or (C)elsius? : F
> Traceback (most recent call last):
>  File "TemperatureConverter.py", line 5, in 
>   convertedTemp = convertToFahrenheit(temp)
> NameError: name 'convertToFahrenheit' is not defined
>
> This is most likely a very simple error, but can someone please
> clarify for me why it's behaving this way?

Well, you have to define the function convertToFahrenheit *before* you use it !
Then it should work as you want ;-)

> Thanks!
>
> Joe

You're welcome (and apologizes for my bad and simple English :-)

-- 
Vivien Moreau.
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-14 Thread Emad Nawfal (عماد نوفل)
On Thu, Aug 14, 2008 at 7:08 PM, Joseph Bae <[EMAIL PROTECTED]> wrote:

> Hi all,
>
> I'm new to Python (and programming in general) and need some help!
>
> Here is my code so far for a temperature conversion program (converts
> between Fahrenheit and Celsius):
>
>
>
> temp = input("Enter A Number : ")
> convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")
>
> if convertTo == "F":
> convertedTemp = convertToFahrenheit(temp)
> print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
> else:
> convertedTemp = convertToCelsius(temp)
> print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)
>
> def convertToFahrenheit(t):
> tF = (9.0/5.0) * (t + 32)
> return tF
>
> def convertToCelsius(t):
> tC = (9.0/5.0) * (t - 32)
> return tC
>
>
>
> It worked fine without having extra functions but once I put
> convertToFahrenheit and convertToCelsius in (just for practice really), this
> happened:
>
> Enter A Number : 50
> Convert to (F)ahrenheit or (C)elsius? : F
> Traceback (most recent call last):
>  File "TemperatureConverter.py", line 5, in 
>   convertedTemp = convertToFahrenheit(temp)
> NameError: name 'convertToFahrenheit' is not defined
>
> This is most likely a very simple error, but can someone please clarify for
> me why it's behaving this way?
>

You just need to define the functions before you use them
Arranging the order od your program makes it work. Like this
def convertToFahrenheit(t):
tF = (9.0/5.0) * (t + 32)
return tF

def convertToCelsius(t):
tC = (9.0/5.0) * (t - 32)
return tC
temp = input("Enter A Number : ")
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")

if convertTo == "F":
convertedTemp = convertToFahrenheit(temp)
print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
else:
convertedTemp = convertToCelsius(temp)
print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)



>
>
> Thanks!
>
> Joe
>
> ___
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>


-- 
لا أعرف مظلوما تواطأ الناس علي هضمه ولا زهدوا في إنصافه كالحقيقة.محمد
الغزالي
"No victim has ever been more repressed and alienated than the truth"

Emad Soliman Nawfal
Indiana University, Bloomington
http://emnawfal.googlepages.com

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-14 Thread Josh Rosen
In Python, def is an executable statement.  Your function is not  
defined until the def statement is run by Python.  If you move your  
function definitions earlier in the code so that your functions are  
defined before they're used, this code will run properly.


Josh R.

On Aug 14, 2008, at 4:08 PM, Joseph Bae wrote:


Hi all,

I'm new to Python (and programming in general) and need some help!

Here is my code so far for a temperature conversion program  
(converts between Fahrenheit and Celsius):




temp = input("Enter A Number : ")
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")

if convertTo == "F":
convertedTemp = convertToFahrenheit(temp)
print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
else:
convertedTemp = convertToCelsius(temp)
print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)

def convertToFahrenheit(t):
tF = (9.0/5.0) * (t + 32)
return tF

def convertToCelsius(t):
tC = (9.0/5.0) * (t - 32)
return tC



It worked fine without having extra functions but once I put  
convertToFahrenheit and convertToCelsius in (just for practice  
really), this happened:


Enter A Number : 50
Convert to (F)ahrenheit or (C)elsius? : F
Traceback (most recent call last):
 File "TemperatureConverter.py", line 5, in 
  convertedTemp = convertToFahrenheit(temp)
NameError: name 'convertToFahrenheit' is not defined

This is most likely a very simple error, but can someone please  
clarify for me why it's behaving this way?


Thanks!

Joe
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


[Tutor] Beginner problem: name 'convertToFahrenheit' is not defined

2008-08-14 Thread Joseph Bae
Hi all,

I'm new to Python (and programming in general) and need some help!

Here is my code so far for a temperature conversion program (converts
between Fahrenheit and Celsius):



temp = input("Enter A Number : ")
convertTo = raw_input("Convert To (F)ahrenheit or (C)elsius? : ")

if convertTo == "F":
convertedTemp = convertToFahrenheit(temp)
print "%d Celsius = %d Fahrenheit" % (temp, convertedTemp)
else:
convertedTemp = convertToCelsius(temp)
print "%d Fahrenheit = %d Celsius" % (temp, convertedTemp)

def convertToFahrenheit(t):
tF = (9.0/5.0) * (t + 32)
return tF

def convertToCelsius(t):
tC = (9.0/5.0) * (t - 32)
return tC



It worked fine without having extra functions but once I put
convertToFahrenheit and convertToCelsius in (just for practice really), this
happened:

Enter A Number : 50
Convert to (F)ahrenheit or (C)elsius? : F
Traceback (most recent call last):
 File "TemperatureConverter.py", line 5, in 
  convertedTemp = convertToFahrenheit(temp)
NameError: name 'convertToFahrenheit' is not defined

This is most likely a very simple error, but can someone please clarify for
me why it's behaving this way?

Thanks!

Joe
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor