The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.
|
 |
|
Dev Shed Forums
> Programming Languages
> Python Programming
|
Pyhton Loop
Discuss Pyhton Loop in the Python Programming forum on Dev Shed. Pyhton Loop Python Programming forum discussing coding techniques, tips and tricks, and Zope related information. Python was designed from the ground up to be a completely object-oriented programming language.
|
|
 |
|
|
|
|

Dev Shed Forums Sponsor:
|
|
|

April 23rd, 2004, 10:15 AM
|
|
Contributing User
|
|
Join Date: Apr 2004
Posts: 57
Time spent in forums: 1 h 6 m
Reputation 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
|

April 23rd, 2004, 10:22 AM
|
|
Contributing User
|
|
Join Date: Apr 2004
Posts: 57
Time spent in forums: 1 h 6 m
Reputation Power: 10
|
|
Quote: | 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 |
|

April 23rd, 2004, 01:50 PM
|
|
Contributing User
|
|
Join Date: Dec 2001
Location: Houston, TX
Posts: 383
Time spent in forums: 1 h 41 m 27 sec
Reputation Power: 12
|
|
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.
|

April 23rd, 2004, 05:38 PM
|
|
Contributing User
|
|
Join Date: Apr 2004
Posts: 57
Time spent in forums: 1 h 6 m
Reputation Power: 10
|
|
|
Python loop
Hi it's working
Thank you strike
|

April 23rd, 2004, 06:39 PM
|
|
Contributing User
|
|
Join Date: Feb 2004
Location: London, England
|
|
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
|
Developer Shed Advertisers and Affiliates
| Thread Tools |
Search this Thread |
|
|
|
| Display Modes |
Rate This Thread |
Linear Mode
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
|