[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Re: Loop problem while generating a new value with random.randint

Jean-Michel Pichavant

2/15/2010 4:18:00 PM

Paulo Repreza wrote:
> Greetings,
>
> I'm having problems with a little script that I'm trying to finish, I
> don't know if I'm in the right track but I know somebody is going to
> help me.
>
> The script:
>
> # Import modules random for function randint
>
> import random
>
> # Generating a constant.
>
> var = 65
>
> # Generating a random number.
> ranum = random.randint(1,100)
>
> #Creating while loop. Stops until var == ranum
> while var != ranum:
> if var == ranum:
> print var, 'equals to:', ranum
> else:
> print var, 'does not equal to:', ranum
>
> ########## End of Script ###########
>
>
> What I'm trying to do is to print the new value that ranum generates
> if the condition is not met. So far if you run the script it prints
> the same value over and over again, making in an infinite loop. What
> can I do in order to print out the new value generated every time the
> condition is not met?
>
> Thanks!
>
> Paulo Repreza
in your script you generate the random number only once, no wonder it
keep being the same value over & over.

# Initialize ranum with a random number
ranum = random.randint(1,100)

#Creating while loop. Stops until var == ranum
while var != ranum:
if var == ranum:
print var, 'equals to:', ranum
else:
print var, 'does not equal to:', ranum
ranum = random.randint(1,100) # generate a new number, that's the
missing line in your script

JM

2 Answers

Bruno Desthuilliers

2/15/2010 4:30:00 PM

0

Jean-Michel Pichavant a écrit :
> Paulo Repreza wrote:
>> Greetings,
>>
>> I'm having problems with a little script that I'm trying to finish, I
>> don't know if I'm in the right track but I know somebody is going to
>> help me.

(snip - problem already addressed by Jean-Michel...)

>> while var != ranum:
>> if var == ranum:

Note that this branch will never be executed - the condition in the
while statement make sure var != ranum in the while block.

>> print var, 'equals to:', ranum
>> else:
>> print var, 'does not equal to:', ranum
>>

Arnaud Delobelle

2/15/2010 4:40:00 PM

0

Jean-Michel Pichavant <jeanmichel@sequans.com> writes:

> Paulo Repreza wrote:
>> Greetings,
>>
>> I'm having problems with a little script that I'm trying to finish,
>> I don't know if I'm in the right track but I know somebody is going
>> to help me.
>>
>> The script:
>>
>> # Import modules random for function randint
>>
>> import random
>>
>> # Generating a constant.
>>
>> var = 65
>>
>> # Generating a random number.
>> ranum = random.randint(1,100)
>>
>> #Creating while loop. Stops until var == ranum
>> while var != ranum:
>> if var == ranum:
>> print var, 'equals to:', ranum
>> else:
>> print var, 'does not equal to:', ranum
>>
>> ########## End of Script ###########
>>
>>
>> What I'm trying to do is to print the new value that ranum generates
>> if the condition is not met. So far if you run the script it prints
>> the same value over and over again, making in an infinite loop. What
>> can I do in order to print out the new value generated every time
>> the condition is not met?
>>
>> Thanks!
>>
>> Paulo Repreza
> in your script you generate the random number only once, no wonder it
> keep being the same value over & over.
>
> # Initialize ranum with a random number
> ranum = random.randint(1,100)
>
> #Creating while loop. Stops until var == ranum
> while var != ranum:
> if var == ranum:
> print var, 'equals to:', ranum
> else:
> print var, 'does not equal to:', ranum
> ranum = random.randint(1,100) # generate a new number, that's the
> missing line in your script
>
> JM

And a more idiomatic way of writing this in Python would be, I guess:

import random

var = 65
while True:
ranum = random.randint(1, 100)
if var == ranum:
print var, 'equals to:', ranum
break
else:
print var, 'does not equal to:', ranum

(following up from a FU as I can't see the OP)

--
Arnaud