[Tutor] I'm having a small problem with my code
Alan Gauld
alan.gauld at yahoo.co.uk
Fri May 24 05:30:37 EDT 2019
Forwarding to the list.
Always use Reply-All or Reply-List when responding to the list.
Otherwise it only goes to the member who posted.
Alan G.
On 24/05/2019 10:20, David Lifschitz wrote:
> Hi.
> I'm learning the processes of python so I'm trying to figure out how
> to sort it manually.
>
> On Fri, May 24, 2019 at 3:00 AM Alan Gauld via Tutor <tutor at python.org
> <mailto:tutor at python.org>> wrote:
>
> On 23/05/2019 13:16, David Lifschitz wrote:
>
> > The next job of the code is to sort the list of numbers that
> were inputted
> > in an ascending fashion.
>
> You are aware that Python lists have a built in sort method?
> It will be more efficient than anything you can create
> yourself in Python. Assuming you know that and decided
> to write a sort routine for fun....
>
>
> > There is no error from the code, however, when I run the code
> the first
> > inputted number stays in its place and doesn't get sorted with
> the rest of
> > the numbers.
> > Any advice???
>
> Yes, see below:
>
> > emptyList = []
>
> This is a terrible name since it becomes misleading the
> instant you put anything into it!
>
> number_list or similar would be more accurate.
> Or even just 'data'....
>
> > nOFN = int(input("how many numbers do you want to sort: "))
> >
> > for x in range(nOFN):
> >?? ?? ??number1 = int(input("input number: "))
> >?? ?? ??emptyList.append(number1)
>
> You could have used a list comprehension:
>
> emptyList = [int(input("input number: ")) for n in range(nOFN)]
>
> Now onto the problem sort code
>
> > firstElement = emptyList[0]
>
> Why did you do this? You never refer to firstElement again...
>
> > n = len(emptyList)
> > for j in range(1, n):
> >?? ?? ??if emptyList[j-1] > emptyList[j]:
> >?? ?? ?? ?? ??(emptyList[j-1], emptyList[j]) = (emptyList[j],
> emptyList[j-1])
>
> Consider the first case, j=1
>
> If the first element is greater than the second
> you swap them. Otherwise you leave them in place.
>
> The loop now considers elements 2 and 3.
> If 2 >3 you reverse them, otherwise move on.
> But if element 3 is less than element 1 you never
> go back to move it to the top.
>
> Consider this example - [3,2,1]
>
> 1st iteration?? ??-> 2,3,1
> 2nd iteration?? ??-> 2,1,3
>
> Loop ends.
> But you never swapped 1 and 2 after(or during) the last iteration.
>
> Your sort routine is fundamentally flawed. You need a rethink.
> But not too much because the built in sort will nearly always be
> preferred!
>
> Incidentally, creating working sort algorithms is one of the
> hardest things to get right in computing. It is one of
> those things that can seem right then one specific pattern
> will break it.
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
> http://www.amazon.com/author/alan_gauld
> Follow my photo-blog on Flickr at:
> http://www.flickr.com/photos/alangauldphotos
>
>
> _______________________________________________
> Tutor maillist?? -?? Tutor at python.org <mailto:Tutor at python.org>
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
> --
> Sent from an email account
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos
More information about the Tutor
mailing list