As i stated i'm somewhat new to python myself so i defined the variables in a somewhat old fashion manner. The correct code is below. I also added some comments because i think you defined the wrong variable somewhere also... Because your code led to comprimento being compared to comprimento_aeronave which was never defined anywhere, so i took it you ment comprimento_aeronave there....
This code below is fully functional without any errors (not even identation warnings ;-) ). So if this doesn't work at your computer something else is possible wrong. Incidentally if you hit the following sequence : 1 2 3 4. The program just terminates without a message... You'd have to insert what's happening in such a case yourself. **** insert code **** global altura_aeronave, largura_aeronave, comprimento_aeronave, comprimento, \ largura, altura 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_aeronave porao = input() if porao == 1 : altura_aeronave = 111 largura_aeronave = 112 comprimento_aeronave = 211 #You originally had comprimento here? return 1 elif porao == 4: altura_aeronave = 112 largura_aeronave = 113 comprimento_aeronave = 212 #Same here return 1 else: print "Porao inexistente!" if porao(): define() compativel() *** end inserted code *** HTH - Geoframer On 1/19/07, Geoframer <[EMAIL PROTECTED]> wrote:
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 <[EMAIL PROTECTED]> 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 < [EMAIL PROTECTED] > 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@python.org > > http://mail.python.org/mailman/listinfo/tutor > > > > > > >
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor