Re: [Tutor] Looking for a tutor to review my code and provideconstructive feedback.

2010-11-05 Thread Alan Gauld

"Glen Clark"  wrote

Really useful feedback, I will note the points highlighted for my 
next
mini-project. I feel it is important that I am writing proper code 
before

moving onto learning modules and such.


I wouldn't sweat over it. Modules are at the heart of Python and 
restricting
yourself to the core language should not be necessary. Learning the 
modules
and what they can do for you is at least as important as getting every 
last
idiom perfect - after all, a lot of that stuff is ultimately a matter 
of personal

style and taste.

Readable code is a great target, but (re)using modules rather than 
writing

from scratch is another way to make your code both more readable and
more reliable.

Regards,

--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Looking for a tutor to review my code and provideconstructive feedback.

2010-11-05 Thread Glen Clark
*#Your code is very readable...more so than some experienced people ;^)*

Thank you, that is very motivating that I am at least on the right track!

#A few suggestions (and assuming Python 3.X, since that's what it looks
like):

Yeah it is 3.1, forgot to mention that.

# * "list" shadows a built-in type, and should not be used for variable
names.  "names" would be more appropriate.

I used list as it was a list and therefore new what argument to pass. I did
not even consider that this would be confusing! Thank you for pointing it
out.

# * input() return a string, so no need for str(input(...)).
# * range(x) is equivalent to range(0,x).

Thank you, I will note these for future code :)

#* The two loops in InitiateEntries can be consolidated:

Thank you, Seems a much better way or doing it.

#* Prefer "for name in names:" instead of using indexing, or "for idx,name
in enumerate(names):" if indexes are needed.  Example:
# * Since 1-based indexing was used elsewhere to present names to the user,
the PrintEntries display code should also use idx+1

I thought that by using an index would be an easy way for the user to select
which element of the list to edit. Not seem the enumerate keyword before so
I will look up what that does :)

 .
#  * When returning a boolean value, you can simpify:

Ah, thank you!

Really useful feedback, I will note the points highlighted for my next
mini-project. I feel it is important that I am writing proper code before
moving onto learning modules and such.



On 5 November 2010 08:32, Mark Tolonen

> wrote:

>
> "Glen Clark"  wrote in message
> news:aanlktimabbj8ae35q3ao9+xzbvtnyzbz3wrudahmn...@mail.gmail.com...
>
>  Hello,
>>
>> I have completed my first python script. This is after watching a video
>> guide on python and is my first attempt at writing code in python. While
>> the
>> code is not very useful I got the idea for it when googling "python
>> projects
>> for beginners".
>>
>> The idea was to create a script that asked the user to input a list of
>> names
>> and allow the user to change a name if he wanted before confirming the
>> entries.
>>
>> I tried to incorporate what I had learnt from the videos, such as
>> conditionals, error handling, functions etc... and write it how I would
>> write code in future.
>>
>> Please if you are kind enougth to take the time to provide feedback I
>> would
>> appreciate that it is constructive :)
>>
>> The script is here: http://bpaste.net/show/10658/
>>
>
> Your code is very readable...more so than some experienced people ;^)
>
> A few suggestions (and assuming Python 3.X, since that's what it looks
> like):
>
>  * "list" shadows a built-in type, and should not be used for variable
> names.  "names" would be more appropriate.
>  * input() return a string, so no need for str(input(...)).
>  * range(x) is equivalent to range(0,x).
>  * The two loops in InitiateEntries can be consolidated:
>
>   for In in range(NumItems):
>   names.append(input("Enter name {}: ".format(In+1)))
>
>   Or using a list comprehension:
>
>   names = [input("Enter name {}: ".format(In+1) for In in
> range(NumItems)]
>
>   * Prefer "for name in names:" instead of using indexing, or "for idx,name
> in enumerate(names):" if indexes are needed.  Example:
>
>   for idx,name in enumerate(names):
>   print("{}: {}".format(idx,name)
>
>   * Since 1-based indexing was used elsewhere to present names to the user,
> the PrintEntries display code should also use idx+1.
>   * When returning a boolean value, you can simpify:
>
>   if confirmed == 'n':
>   return True
>   else:
>   return False
>
>   To:
>
>   return confirmed == 'n'
>
> Also see PEP8 (http://www.python.org/dev/peps/pep-0008/) for Python's
> suggested coding standard.
>
> -Mark
>
>
>
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Looking for a tutor to review my code and provideconstructive feedback.

2010-11-05 Thread Mark Tolonen


"Glen Clark"  wrote in message 
news:aanlktimabbj8ae35q3ao9+xzbvtnyzbz3wrudahmn...@mail.gmail.com...

Hello,

I have completed my first python script. This is after watching a video
guide on python and is my first attempt at writing code in python. While 
the
code is not very useful I got the idea for it when googling "python 
projects

for beginners".

The idea was to create a script that asked the user to input a list of 
names

and allow the user to change a name if he wanted before confirming the
entries.

I tried to incorporate what I had learnt from the videos, such as
conditionals, error handling, functions etc... and write it how I would
write code in future.

Please if you are kind enougth to take the time to provide feedback I 
would

appreciate that it is constructive :)

The script is here: http://bpaste.net/show/10658/


Your code is very readable...more so than some experienced people ;^)

A few suggestions (and assuming Python 3.X, since that's what it looks 
like):


  * "list" shadows a built-in type, and should not be used for variable 
names.  "names" would be more appropriate.

  * input() return a string, so no need for str(input(...)).
  * range(x) is equivalent to range(0,x).
  * The two loops in InitiateEntries can be consolidated:

   for In in range(NumItems):
   names.append(input("Enter name {}: ".format(In+1)))

   Or using a list comprehension:

   names = [input("Enter name {}: ".format(In+1) for In in 
range(NumItems)]


   * Prefer "for name in names:" instead of using indexing, or "for 
idx,name in enumerate(names):" if indexes are needed.  Example:


   for idx,name in enumerate(names):
   print("{}: {}".format(idx,name)

   * Since 1-based indexing was used elsewhere to present names to the 
user, the PrintEntries display code should also use idx+1.

   * When returning a boolean value, you can simpify:

   if confirmed == 'n':
   return True
   else:
   return False

   To:

   return confirmed == 'n'

Also see PEP8 (http://www.python.org/dev/peps/pep-0008/) for Python's 
suggested coding standard.


-Mark


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor