Thread: Pyhton Loop

    #1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Apr 2004
    Posts
    57
    Rep Power
    10

    Pyhton Loop


    Hi
    I am new to python infact programming. I am trying to write a programme which will pick 6 random numbers between 1 to 50 but no duplicate numbers and not using append function.

    Here is something i wrote

    import sys
    import random
    array=[]
    #array=[55,65,1,89,10,54,1,258,2]
    for i in range(5):

    # storing Random numbers to an array
    temp= random.randrange(1,50)
    array+=[temp]
    #print array

    # random number(1-49) Validation (pick 6 different numbers) i #am stuck here
    if temp == array[i]:
    temp =random.randrange(1,50)
    array+=[temp]

    #Bubble sort(Ascending order)
    for y in range(len(array)-1,0,-1):
    for x in range(y):
    if array[x]> array[x+1]:
    array[x],array[x+1]=array[x+1],array[x]

    # Displaying Random numbers in order (working)
    for v in array:
    print v,



    Can someone help
    Thanks
    Luckyboy
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Apr 2004
    Posts
    57
    Rep Power
    10
    Originally Posted by luckyboy
    Hi
    I am new to python infact programming. I am trying to write a programme which will pick 6 random numbers between 1 to 50 but no duplicate numbers and not using append function.

    Here is something i wrote

    import sys
    import random
    array=[]
    #array=[55,65,1,89,10,54,1,258,2]
    for i in range(5):

    # storing Random numbers to an array
    temp= random.randrange(1,50)
    array+=[temp]
    #print array

    # random number(1-49) Validation (pick 6 different numbers) i #am stuck here
    if temp == array[i]:
    temp =random.randrange(1,50)
    array+=[temp]

    #Bubble sort(Ascending order)
    for y in range(len(array)-1,0,-1):
    for x in range(y):
    if array[x]> array[x+1]:
    array[x],array[x+1]=array[x+1],array[x]

    # Displaying Random numbers in order (working)
    for v in array:
    print v,



    Can someone help
    Thanks
    Luckyboy
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Dec 2001
    Location
    Houston, TX
    Posts
    383
    Rep Power
    13
    Here's how I would do it, though I don't understand the restriction on not using .append()..

    Code:
    import random
    
    picked_numbers = []
    
    for i in range(6):
        newnum = random.randrange(1,50)
        while newnum in picked_numbers:
            newnum = random.randrange(1,50)
        picked_numbers += [newnum]
    
    for num in picked_numbers:
        print num,
    Normally instead of
    Code:
    picked_numbers += [newnum]
    you'd just do
    Code:
    picked_numbers.append(newnum)
    as it's more efficient.
    Debian - because life's too short for worrying.
    Best. (Python.) IRC bot. ever.
  6. #4
  7. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Apr 2004
    Posts
    57
    Rep Power
    10

    Python loop


    Hi it's working
    Thank you strike
  8. #5
  9. No Profile Picture
    Contributing User
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Feb 2004
    Location
    London, England
    Posts
    1,585
    Rep Power
    1373
    This problem is discussed at length in the book 'Programming Pearls' by Jon Bentley, which I recommend that anyone who is serious about programming should read.

    Here is an alternative way. Create a list with the numbers 1-50 in it, shuffle it, and gets the first six elements

    Code:
    >>> import random
    >>> numbers = range(1, 51)
    >>> random.shuffle(numbers)
    >>> numbers[:6]
    [48, 16, 4, 40, 35, 9]
    This is fine for a small list of 50, but if you wanted a random number from the set of 1..1,000,000,000, then it would create an array with a billion elements, and throw away a billion minus six of them. In that case I would go to the book I mentioned and use an alternative algorithm.

    Dave - The Developers' Coach

IMN logo majestic logo threadwatch logo seochat tools logo