[Tutor] 'elp!!!!!!!1Totally Clueless Newbie In Distress
Geoframer
geoframer at gmail.com
Fri Jan 19 16:07:23 CET 2007
Accidentally the number of function definitions does not help the clarity of
the program, even though it's completely unclear to me what exactly you are
trying to do. :-)
I rewrote your program a bit combining the definition of the functions, the
comparision of the functions and removed the chance that your program goes
on the define/compare values that have not been defined.
*** Insert redone code ***
altura_aeronave = 0
largura_aeronave = 0
comprimento_aeronave = 0
comprimento = 0
largura = 0
altura = 0
def compativel():
global altura, altura_aeronave, comprimento, comprimento_aeronave, \
largura, largura_aeronave
if not largura <= largura_aeronave:
print 'Volume largo demais!'
elif not altura <= altura_aeronave:
print 'Volume alto demais!'
elif not comprimento<=comprimento_aeronave:
print 'Volume comprido demais!'
def define():
global largura, altura, comprimento
largura=input()
altura=input()
comprimento=input()
def porao():
global altura_aeronave, largura_aeronave, comprimento
porao = input()
if porao == 1 :
altura_aeronave = 111
largura_aeronave = 112
comprimento = 211
return 1
elif porao == 4:
altura_aeronave = 112
largura_aeronave = 113
comprimento = 212
return 1
else:
print "Porao inexistente!"
if porao():
define()
compativel()
On 1/19/07, Geoframer <geoframer at gmail.com> wrote:
>
> Alright this code is actually littered with bugs, but don't feel bad,
> because as you state you are new to the whole programming thing. I'll try to
> explain the things i see going wrong (please take into account that i'm also
> a new pythonist ;-))
>
> ***
> You get the error 'variable undefined' because you are declaring a global
> in an incorrect manner. The correct manner is to define the variable in the
> global scope then start a definition, declare that you are using a global
> variable and then assign it. Like this :
>
> bla = 'Hello world'
>
> def func():
> global bla
> print bla
> ***
> If you do :
> porao = raw_input()
> You'll define the integer value as a string, not an integer. If you are
> sure that only an integer will be entered use input() (slower) or
> int(raw_input()). In either case you should use try and except clauses more
> in your code because if not a 1 or 4 is entered your code will continue
> without having the variables declared! Leading to other errors.
> ***
> Now suppose you get the definitions using globals correct then you'll get
> new errors stating that an 'int' is not callable.
> This happens because you define for example altura as an integer and then
> also define a function called altura. If you now use :
> altura()
> It'll try to call the integer object and will fail.
> Easy solution would be to make the function something like alturadef()
> ***
> As for your identation you should use consistent identation... I suggest
> using python -t or python -tt to compile your script and it will give
> warnings/errors where the identation goes wrong.
> ***
> Here's how i altered your code (quick and dirty probably, it should be
> more clean using try and except clauses and what not) to get it to work but
> you can probably better look that up in a python book and then return to the
> list if you don't understand it :
>
> #Ok,this is supposed to be a 2 option choice between values 1 and 4,
> #i want the value to determine the variable values inside the function
>
> altura_aeronave = 0
> largura_aeronave = 0
> comprimento_aeronave = 0
> comprimento = 0
> largura = 0
> altura = 0
>
> def porao():
> global altura_aeronave, largura_aeronave, comprimento
> porao = input()
> if porao == 1 :
> altura_aeronave = 111
> largura_aeronave = 112
> comprimento = 211
> elif porao == 4:
> altura_aeronave = 112
> largura_aeronave = 113
> comprimento = 212
> else:
> print "Porão inexistente"
>
> #These three functions were supposed to get input from user so it can be
> compared
> #with the values determinated(determined?)above
> def larguradef():
> global largura
> largura=input()
>
> def alturadef():
> global altura
> altura=input()
>
> def comprimentodef():
> global comprimento
> comprimento = input()
>
> #These are the comparison functions
> def largura_compativel ():
> global largura, largura_aeronave
> if not largura <= largura_aeronave:
> print 'Volume largo demais!'
>
> def altura_compativel ():
> global altura, altura_aeronave
> if not altura <= altura_aeronave:
> print 'Volume alto demais!'
>
> def comprimento_compativel ():
> global comprimento, comprimento_aeronave
> if not comprimento<=comprimento_aeronave:
> print 'Volume comprido demais!'
>
> #Try to run this damn thing,man!!!!!1
> porao()
> #print altura_aeronave, largura_aeronave, comprimento
> larguradef()
> alturadef()
> comprimentodef()
> largura_compativel()
> altura_compativel
> comprimento_compativel()
>
>
>
>
>
>
>
>
> On 1/19/07, Karl Wittgenstein <miago.python at gmail.com > wrote:
>
> > Dear Smart Caring Dude,
> > I've been dabbling into Python for about 6 weeks now.I'm a Social
> > Sciences student who just got interested in programming and chose Python as
> > first language.I have little time to practice and I am just getting
> > into programming concepts,so please be patient,in case you are so kind as
> > to enlighten this poor soul.
> > I am trying to write this program which should compare values that are
> > set by the program through user's choice to values that the user enters on
> > a prompt.I use SPE on windows xp,and it tells me that there are
> > indentation erros on the definitions.Isn't it legal to start a new block
> > of code when starting a definition?And how come it returns 'variable' not
> > defined,when they are defined by the = ??Should i make them global?
> > I would be very grateful to the patient soul that answers these
> > questions,as my learning interest is sincere and the knowledge sources so
> > disperse.
> > Here goes the code:
> >
> > #Ok,this is supposed to be a 2 option choice between values 1 and 4,
> > #i want the value to determine the variable values inside the function
> > def porao():
> > porao = raw_input()
> > if porao == 1 :
> > global altura_aeronave = 111
> > global largura_aeronave = 112
> > global comprimento = 211
> > elif porao == 4:
> > global altura_aeronave = 112
> > global largura_aeronave = 113
> > global comprimento = 212
> > else:
> > print "Porão inexistente"
> > #These three functions were supposed to get input from user so it can be
> > compared
> > #with the values determinated(determined?)above
> > def largura():
> > global largura=input()
> > def altura():
> > global altura=input()
> > def comprimento():
> > global comprimento = input()
> > #These are the comparison functions
> > def largura_compativel ():
> > if not largura <= largura_aeronave:
> > print 'Volume largo demais!'
> > def altura_compativel ():
> > if not altura <= altura_aeronave:
> > print 'Volume alto demais!'
> > def comprimento_compativel ():
> > if not comprimento<=comprimento_aeronave:
> > print 'Volume comprido demais!'
> > #Try to run this damn thing,man!!!!!1
> > porao()
> > largura()
> > altura()
> > comprimento()
> > largura_compativel()
> > altura_compativel
> > comprimento_compativel()
> >
> >
> > _______________________________________________
> > Tutor maillist - Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070119/0ad0974f/attachment.html
More information about the Tutor
mailing list