[Tutor] Television
Alan Gauld
alan.gauld at btinternet.com
Sat Jun 25 10:55:52 CEST 2011
"Vincent Balmori" <vincentbalmori at yahoo.com> wrote
> Before I can even start correcting my code this error shows up.
You will find it much easier to write programns if you do
not write out the whole program and then try to debug it!
Just write a single method at a time and get that working
before trying to debug a whole complex aopplication.
This code is fuill of errors whicvh will continually prevent
you from running the code. I'll highlight a few. But as I
said in your previous thread, you really need to read
some more about the basics because your errors reveal
a deep gap in your understanding of variables, data types
and their operations. Only once you undertsand that thoroughly
will you be successful with classes and objects, because
in OOP you are defining new data types and operations.
If you can't use the standard types you have little hope
of using newly defined ones!
Some examples:
class Television(object):
def __init__(tv, channel = range(0,10), volume = range(0,10)):
tv.channel = channel
tv.volume = volume
def cha(tv, level = 1):
while 0 >= tv.channel <=10:
Here you store two range objects as your channel and
volume attributes in init (In Python v 2 these would be
lists but in Python 3 they are range objects).
Then in cha() you try to compare them to a number,
that won't work, they are incompatible types.
Later you try to increment channel which agaion won't
work. (And why you only increment channel and never
decrement is a puzzle - and you ignore the level value
read from the user?)
Similar applies in volu() except you have two methods,
one up one down. But you are still trying to apply
integer operations to range objects.
In various places you do this:
if level > 10:
int(input("\n That's too much! Choose another number?: "))
The user input is read, converted to an int then thrown away.
You need to store it in a variable.
Finally we come to the error message, it is in main():
def main():
print(Television(tv.display))
choice = None Notice you do not create a tv instance. You try to
print an instance but in creating it you try to passs tv.display to
the constructor, but tv does not exist aty that point. And even if you
did succeed the instance would be immediately destroyed again because
you are not storing it in a variable. You need to go back to basic
data types and understand that concept. There is clearly something
missing at the moment since you jkeep making the same mistakes over
and over again.> thought I had already created the "tv" instance.>
http://old.nabble.com/file/p31925053/Television Television You defined
a class. You tried to create an instance of the class inside the print
statement, but it nevergot that far.Try reading my tutorial topic on
data - The Raw Materials - and then the OOP topic. Then go back to
whatever tutorial you are currently following and see if it helps.--
Alan GauldAuthor of the Learn to Program web
sitehttp://www.alan-g.me.uk/
More information about the Tutor
mailing list