[Tutor] Generating random in a user specified range.

Andy Joslin Andy at joslin.isa-geek.com
Tue Apr 27 13:04:01 EDT 2004


Adam wrote:

> I'm trying to develop an app where the user can specify the range in 
> which a random number will be generated from.
 >
> [..snip..]
 >
> The driving code is:
>

You need to define your functions before you call them... try moving
these four lines after the functions are defined...

> range = range()
> print range
> raw_input("click ok to carry ok")
> target = generatenumber(range) #kicks the whole thing off
> 
> def range():
>     strtop = raw_input("What is your top number?")
>     strbottom = raw_input("What is your bottom number?")

Your interface is confusing... I would expect to enter the lower number
first.  Since all the data should be represented as a valid range:
(x, y) where x<y, then ask for the data in that order.

>     top = int(strtop)
>     bottom = int(strbottom)
>     range = [bottom, top]
>     print "range top is ", range[0]
>     print "range bottom is ", range[1]
>     return range
> 
> def generatenumber(range):
>     top = int (range[0])
>     bottom = int (range[1])
>     target = random.randrange(range[1], range[0]) # and I've also tried 

Keep in mind that your top number will NEVER be selected...  you may
want to add 1 to the top number if you want it to be a valid number

> (bottom,top)
>     print "Target is ", target
>     ok = raw_input("please press enter to continue")
>     return target
> 
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor

I got the following code to work without issue...
(It is essentially your code, but compressed a bit)

---------------------------------------------------
#!/usr/bin/python
import random
import string
from string import strip

def promptRange():
    return [int(strip(raw_input("What is your bottom number? "))), \
            int(strip(raw_input("What is your top number? ")))]

ref generatenumber(range):
    return random.randrange(range[0], range[1] + 1)

target = generatenumber(promptRange()) #kicks the whole thing off
print "Target is ", target


-- 
[Imagine a witty sig here]



More information about the Tutor mailing list