Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > what is wrong with my code?

Reply
Thread Tools

what is wrong with my code?

 
 
Pyenos
Guest
Posts: n/a
 
      12-20-2006
import cPickle, shelve

could someone tell me what things are wrong with my code?

class progress:

PROGRESS_TABLE_ACTIONS=["new","remove","modify"]
DEFAULT_PROGRESS_DATA_FILE="progress_data"
PROGRESS_OUTCOMES=["pass", "fail"]


def unpickleProgressTable(pickled_progress_data_file):

return unpickled_progress_table

def pickleProgressTable(progress_table_to_pickle):

return pickled_progress_data_file

# Of course, you get progress_table is unpickled progress table.
def progressTable(progress_table, action, task, pid=len(progress_table), outcome=PROGRESS_OUTCOMES[1]):
pid_column_list=progress_table[0]
task_column_list=progress_table[1]
outcome_column_list=progress_table[2]

# But a task must also come with an outcome!
def newEntry(new_task, new_outcome):
new_pid=len(task_column_list)

pid_column_list.extend(new_pid)
task_column_list.extend(new_task)
outcome_column_list.extend(new_outcome)

def removeEntry(pid_to_remove, task_to_remove):

if pid_column_list.index(pid_to_remove)==task_column_ list.index(task_to_remove):
# Must remove all columns for that task
index_for_removal=pid_column_list.index(pid_to_rem ove)

pid_column_list.remove(index_for_removal)
task_column_list.remove(index_for_removal)
outcome_column_list.remove(index_for_removal)

# Default action is to modify to pass
def modifyEntry(pid_to_modify, outcome_to_modify=PROGRESS_OUTCOMES[0]):
index_for_modifying=pid_column_list.index(pid_to_m odify)

# Modify the outcome
outcome_column_list[index_for_modifying]=outcome_to_modify
 
Reply With Quote
 
 
 
 
Gabriel Genellina
Guest
Posts: n/a
 
      12-20-2006
At Wednesday 20/12/2006 19:16, Pyenos wrote:

>could someone tell me what things are wrong with my code?


My crystal ball is at the repair shop - could you please tell us:
- what do you expect the code to do?
- what do you get instead?
- any compiler error messages you see?
- in case of an exception, full traceback as printed by the interpreter?
- Python version in use?


--
Gabriel Genellina
Softlab SRL






__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas

 
Reply With Quote
 
 
 
 
Calvin Spealman
Guest
Posts: n/a
 
      12-20-2006
It is hard to determine what is wrong with your code without you
telling anyone why it is you believe something is wrong with it. Did
you get an exception? Did it simply not do what it was expected to do?
There seems to be some apparent indenting problems, but maybe that is
just from pushing it through the e-mail. I see some general stylistic
problems as well, but without know what you are actually asking, I
won't know what questions to answer. "What is wrong with my code?" is
a container of many many smaller questions, and you need to focus your
questions better.

On 21 Dec 2006 09:16:58 +1100, Pyenos <> wrote:
> import cPickle, shelve
>
> could someone tell me what things are wrong with my code?
>
> class progress:
>
> PROGRESS_TABLE_ACTIONS=["new","remove","modify"]
> DEFAULT_PROGRESS_DATA_FILE="progress_data"
> PROGRESS_OUTCOMES=["pass", "fail"]
>
>
> def unpickleProgressTable(pickled_progress_data_file):
>
> return unpickled_progress_table
>
> def pickleProgressTable(progress_table_to_pickle):
>
> return pickled_progress_data_file
>
> # Of course, you get progress_table is unpickled progress table.
> def progressTable(progress_table, action, task, pid=len(progress_table), outcome=PROGRESS_OUTCOMES[1]):
> pid_column_list=progress_table[0]
> task_column_list=progress_table[1]
> outcome_column_list=progress_table[2]
>
> # But a task must also come with an outcome!
> def newEntry(new_task, new_outcome):
> new_pid=len(task_column_list)
>
> pid_column_list.extend(new_pid)
> task_column_list.extend(new_task)
> outcome_column_list.extend(new_outcome)
>
> def removeEntry(pid_to_remove, task_to_remove):
>
> if pid_column_list.index(pid_to_remove)==task_column_ list.index(task_to_remove):
> # Must remove all columns for that task
> index_for_removal=pid_column_list.index(pid_to_rem ove)
>
> pid_column_list.remove(index_for_removal)
> task_column_list.remove(index_for_removal)
> outcome_column_list.remove(index_for_removal)
>
> # Default action is to modify to pass
> def modifyEntry(pid_to_modify, outcome_to_modify=PROGRESS_OUTCOMES[0]):
> index_for_modifying=pid_column_list.index(pid_to_m odify)
>
> # Modify the outcome
> outcome_column_list[index_for_modifying]=outcome_to_modify
> --
> http://mail.python.org/mailman/listinfo/python-list
>



--
Read my blog! I depend on your acceptance of my opinion! I am interesting!
http://ironfroggy-code.blogspot.com/
 
Reply With Quote
 
Fredrik Lundh
Guest
Posts: n/a
 
      12-20-2006
Pyenos wrote:

> could someone tell me what things are wrong with my code?


do you want a free code review, or do you have problems with the code
and just forgot to mention what they are?

</F>

 
Reply With Quote
 
Pyenos
Guest
Posts: n/a
 
      12-21-2006
"Calvin Spealman" <> writes:

> It is hard to determine what is wrong with your code without you
> telling anyone why it is you believe something is wrong with it. Did
> you get an exception? Did it simply not do what it was expected to do?
> There seems to be some apparent indenting problems, but maybe that is
> just from pushing it through the e-mail. I see some general stylistic
> problems as well, but without know what you are actually asking, I
> won't know what questions to answer. "What is wrong with my code?" is
> a container of many many smaller questions, and you need to focus your
> questions better.
>
> On 21 Dec 2006 09:16:58 +1100, Pyenos <> wrote:
> > import cPickle, shelve
> >
> > could someone tell me what things are wrong with my code?
> >
> > class progress:
> >
> > PROGRESS_TABLE_ACTIONS=["new","remove","modify"]
> > DEFAULT_PROGRESS_DATA_FILE="progress_data"
> > PROGRESS_OUTCOMES=["pass", "fail"]
> >
> >
> > def unpickleProgressTable(pickled_progress_data_file):
> >
> > return unpickled_progress_table
> >
> > def pickleProgressTable(progress_table_to_pickle):
> >
> > return pickled_progress_data_file
> >
> > # Of course, you get progress_table is unpickled progress table.
> > def progressTable(progress_table, action, task, pid=len(progress_table), outcome=PROGRESS_OUTCOMES[1]):
> > pid_column_list=progress_table[0]
> > task_column_list=progress_table[1]
> > outcome_column_list=progress_table[2]
> >
> > # But a task must also come with an outcome!
> > def newEntry(new_task, new_outcome):
> > new_pid=len(task_column_list)
> >
> > pid_column_list.extend(new_pid)
> > task_column_list.extend(new_task)
> > outcome_column_list.extend(new_outcome)
> >
> > def removeEntry(pid_to_remove, task_to_remove):
> >
> > if pid_column_list.index(pid_to_remove)==task_column_ list.index(task_to_remove):
> > # Must remove all columns for that task
> > index_for_removal=pid_column_list.index(pid_to_rem ove)
> >
> > pid_column_list.remove(index_for_removal)
> > task_column_list.remove(index_for_removal)
> > outcome_column_list.remove(index_for_removal)
> >
> > # Default action is to modify to pass
> > def modifyEntry(pid_to_modify, outcome_to_modify=PROGRESS_OUTCOMES[0]):
> > index_for_modifying=pid_column_list.index(pid_to_m odify)
> >
> > # Modify the outcome
> > outcome_column_list[index_for_modifying]=outcome_to_modify
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >

>
>
> --
> Read my blog! I depend on your acceptance of my opinion! I am interesting!
> http://ironfroggy-code.blogspot.com/


it says that progress_table is not defined. i don't know why.
 
Reply With Quote
 
Carl Banks
Guest
Posts: n/a
 
      12-21-2006

Pyenos wrote:
> "Calvin Spealman" <> writes:
> > On 21 Dec 2006 09:16:58 +1100, Pyenos <> wrote:
> > > import cPickle, shelve
> > >
> > > could someone tell me what things are wrong with my code?
> > >
> > > class progress:
> > >
> > > PROGRESS_TABLE_ACTIONS=["new","remove","modify"]
> > > DEFAULT_PROGRESS_DATA_FILE="progress_data"
> > > PROGRESS_OUTCOMES=["pass", "fail"]
> > >
> > >
> > > def unpickleProgressTable(pickled_progress_data_file):
> > >
> > > return unpickled_progress_table
> > >
> > > def pickleProgressTable(progress_table_to_pickle):
> > >
> > > return pickled_progress_data_file
> > >
> > > # Of course, you get progress_table is unpickled progress table.
> > > def progressTable(progress_table, action, task, pid=len(progress_table), outcome=PROGRESS_OUTCOMES[1]):
> > > pid_column_list=progress_table[0]
> > > task_column_list=progress_table[1]
> > > outcome_column_list=progress_table[2]
> > >
> > > # But a task must also come with an outcome!
> > > def newEntry(new_task, new_outcome):
> > > new_pid=len(task_column_list)
> > >
> > > pid_column_list.extend(new_pid)
> > > task_column_list.extend(new_task)
> > > outcome_column_list.extend(new_outcome)
> > >
> > > def removeEntry(pid_to_remove, task_to_remove):
> > >
> > > if pid_column_list.index(pid_to_remove)==task_column_ list.index(task_to_remove):
> > > # Must remove all columns for that task
> > > index_for_removal=pid_column_list.index(pid_to_rem ove)
> > >
> > > pid_column_list.remove(index_for_removal)
> > > task_column_list.remove(index_for_removal)
> > > outcome_column_list.remove(index_for_removal)
> > >
> > > # Default action is to modify to pass
> > > def modifyEntry(pid_to_modify, outcome_to_modify=PROGRESS_OUTCOMES[0]):
> > > index_for_modifying=pid_column_list.index(pid_to_m odify)
> > >
> > > # Modify the outcome
> > > outcome_column_list[index_for_modifying]=outcome_to_modify

> >
> > It is hard to determine what is wrong with your code without you
> > telling anyone why it is you believe something is wrong with it. Did
> > you get an exception? Did it simply not do what it was expected to do?
> > There seems to be some apparent indenting problems, but maybe that is
> > just from pushing it through the e-mail. I see some general stylistic
> > problems as well, but without know what you are actually asking, I
> > won't know what questions to answer. "What is wrong with my code?" is
> > a container of many many smaller questions, and you need to focus your
> > questions better.

>
> it says that progress_table is not defined. i don't know why.


It looks like you have bigger problems than an undefined variable.
Python does not have implicit access to methods and attributes
(members) like C++ and Java do. Methods must accept an explicit self
parameter that refers to the object (analogous to this in C++ and Java)
to access attributes. Your code defines a class, but self is nowhere
to be found.

I suggest getting a good book and/or reading the tutorial
(http://docs.python.org/tut/) and making sure you can do easy stuff
first.


Carl Banks

 
Reply With Quote
 
Pyenos
Guest
Posts: n/a
 
      12-21-2006
thanks for your point. so because i have said class blah: i must
explicitly say self for every instantiation of object?
 
Reply With Quote
 
Carl Banks
Guest
Posts: n/a
 
      12-21-2006
Pyenos wrote:
> thanks for your point. so because i have said class blah: i must
> explicitly say self for every instantiation of object?



http://docs.python.org/tut/


Carl Banks

 
Reply With Quote
 
rzed
Guest
Posts: n/a
 
      12-21-2006
Pyenos <> wrote in
news::

> thanks for your point. so because i have said class blah: i must
> explicitly say self for every instantiation of object?
>


No, for every method within the class.

Given:

class Blah(object):
def method1(self,arg1):
self.x = arg1


b = Blah() # b is an instance of class Blah

b.method1(32) # when you invoke it, just pass arg1

print b.x # prints 32



The use of 'self' is just a convention, but a *very* common one,
and one you should follow if you expect other Python programmers
to read your code. This is legal, and has the same effect as the
above class:

class Blah2(object):
def method1(spugsl,arg1):
spugsl.x = arg1

Spugsl (or self) is just the way to refer to the instance within
the code.

In your code, each method wound up with a different name, and none
of the names would have been associated with what you would have
expected. So for example, in

def removeEntry(pid_to_remove, task_to_remove):

.... your equivalent to 'self' would be pid_to_remove, and the pid
you passed in would have been associated with task_to_remove.

--
rzed



 
Reply With Quote
 
=?iso-8859-1?Q?=22Nils_Oliver_Kr=F6ger=22?=
Guest
Posts: n/a
 
      12-21-2006
Hi,

this is the line that breaks your code:

def progressTable(progress_table, action, task, pid=len(progress_table)

your parameter progress_table is known inside the function, not inside its definition. So "pid=len(progress_table)" won't do.

If you really think that it is possible that pid is anything else but "len(progress_table)", you should use for example -1 as the default value and calculate the length inside your functions if the parameter is not different. Otherwise dump this parameter.

Hope that helps!

Greetings

Nils


-------- Original-Nachricht --------
Datum: 21 Dec 2006 09:16:58 +1100
Von: Pyenos <>
An: python-
Betreff: what is wrong with my code?

> import cPickle, shelve
>
> could someone tell me what things are wrong with my code?
>
> class progress:
>
> PROGRESS_TABLE_ACTIONS=["new","remove","modify"]
> DEFAULT_PROGRESS_DATA_FILE="progress_data"
> PROGRESS_OUTCOMES=["pass", "fail"]
>
>
> def unpickleProgressTable(pickled_progress_data_file):
>
> return unpickled_progress_table
>
> def pickleProgressTable(progress_table_to_pickle):
>
> return pickled_progress_data_file
>
> # Of course, you get progress_table is unpickled progress table.
> def progressTable(progress_table, action, task,
> pid=len(progress_table), outcome=PROGRESS_OUTCOMES[1]):
> pid_column_list=progress_table[0]
> task_column_list=progress_table[1]
> outcome_column_list=progress_table[2]
>
> # But a task must also come with an outcome!
> def newEntry(new_task, new_outcome):
> new_pid=len(task_column_list)
>
> pid_column_list.extend(new_pid)
> task_column_list.extend(new_task)
> outcome_column_list.extend(new_outcome)
>
> def removeEntry(pid_to_remove, task_to_remove):
>
> if
> pid_column_list.index(pid_to_remove)==task_column_ list.index(task_to_remove):
> # Must remove all columns for that task
> index_for_removal=pid_column_list.index(pid_to_rem ove)
>
> pid_column_list.remove(index_for_removal)
> task_column_list.remove(index_for_removal)
> outcome_column_list.remove(index_for_removal)
>
> # Default action is to modify to pass
> def modifyEntry(pid_to_modify,
> outcome_to_modify=PROGRESS_OUTCOMES[0]):
> index_for_modifying=pid_column_list.index(pid_to_m odify)
>
> # Modify the outcome
> outcome_column_list[index_for_modifying]=outcome_to_modify
> --
> http://mail.python.org/mailman/listinfo/python-list


--
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Have I bought wrong product? enquirer Wireless Networking 2 06-10-2005 10:59 PM
Zero Config keeps connecting to the wrong AP =?Utf-8?B?ZGdyaWZmaXRo?= Wireless Networking 2 03-04-2005 05:52 PM
Is XML Doc wrong or is Schema wrong? (or both) Matthew XML 7 01-07-2005 10:05 PM
wrong connection status Peter Welk Wireless Networking 0 12-22-2004 03:26 PM
XP SP2 Wrong IP on connection D Wells Wireless Networking 3 12-09-2004 03:35 AM



Advertisments