(Aug-23-2019, 03:31 AM)summeringpainting Wrote: Every time I run this the random number to print out win is 3. Any help with this would be greatly appreciated!

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while "luck" != "loto":
if loto > 0 and loto < 3:
print("closey")
luck = random.randint(1, 3)
loto = (int(input("Pick a number from 1 to 3: ")))
elif loto <= 0 or loto > 3:
print("Not closey")
luck = random.randint(1, 3)
loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
else:
for i in range(8):
print("WIN" * 10)
break

Hi!

In line 7, you compare two strings: "luck" and "loto", that is to say, you are comparing 2 different words, so you are saying if they are different, which they always will be, then you have to choose from the other options down.

Therefore, in line 8, you are saying if the value of the number introduced by the user (here you asked to check the value of the number, and not checking for words as before) is 1 or 2, the program will always say the message "closey".

In line 12, you exclude numbers less or equal than 0, and numbers bigger than 3.

Therefore, the only number left, else (line 16) is 3, so 3 always gives you WINWINWIN...

even if as in Malt's output, the number ramdonly chosen in the variable named luck, is 1.

(Aug-23-2019, 04:51 AM)Malt Wrote: I have got 1 as random number

Output:

hi
1
Pick a number from 1 to 3: 2
closey
Pick a number from 1 to 3: 9
Not closey
NOOOOOPick a number from 1 to 3: 3
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
Process finished with exit code 0

I just made some modifications to your program, and it seems to work just fine now. Notice that I put out of the loop, the option else, because it gave always WIN to 3. Now while the value of the variable luck is different to the variable loto, you have the loop, otherwise (else), it means that the two variables are equal and therefore you win:

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while luck != loto:
if loto > 0 and loto < 3:
print("closey")
luck = random.randint(1, 3)
loto = (int(input("Pick a number from 1 to 3: ")))
elif loto <= 0 or loto > 3:
print("Not closey")
luck = random.randint(1, 3)
loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
else:
for i in range(8):
print("WIN" * 10)

Oops!

While checking some outputs, and reviewing the program, I have noticed there are still some bugs:

Output:

hi
2
Pick a number from 1 to 3: 2
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
1
Pick a number from 1 to 3: 1
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
3
Pick a number from 1 to 3: 3
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
2
Pick a number from 1 to 3: 1
closey
Pick a number from 1 to 3: 9
Not closey
NOOOOOPick a number from 1 to 3: 3

In your original program:

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while "luck" != "loto":
if loto > 0 and loto < 3:
print("closey")
luck = random.randint(1, 3)
loto = (int(input("Pick a number from 1 to 3: ")))
elif loto <= 0 or loto > 3:
print("Not closey")
luck = random.randint(1, 3)
loto = (int(input("NOOOOOPick a number from 1 to 3: ")))
else:
for i in range(8):
print("WIN" * 10)
break

inside the loop, in lines 10 and 14, you have made the program to generate another random number, substituting the original one, which I think it's not the point of the game. Once a number has randomly been generated, at the beginning of the program, you should keep it until it has been correctly guessed.

My bad at quickly having a go at changing the program without having checked it properly.

In line 8 of your original program, being the values different, the number introduced could have been 1, 2 or 3, not only 1 or 2, as your line 8 implies.

So I have made some changes again:

import random
from random import randint
print("hi")
luck = random.randint(1, 3)
print(luck)
loto = (int(input("Pick a number from 1 to 3: ")))
while luck != loto:
if loto > 0 and loto < 4:
print("closey")
loto = (int(input("Pick a number from 1 to 3: ")))
elif loto <= 0 or loto > 3:
print("Not closey")
loto = (int(input("NOOOOO! Pick a number from 1 to 3: ")))
else:
for i in range(8):
print("WIN" * 10)

I hope not to have left any more bugs with my sleepy head...

By the way, I guess you are just practising and seeing what your code does, because otherwise, I wouldn't find very interesting a guessing-a-number game, knowing it from the beginning. I mean, you can store the number generated by the program without printing it on the screen. That is to say, I would delete the line

print(luck)

from the real game. Also, keep in mind that, as the program generates a random number among 1, 2 and 3, it's quite probably that the same number could be generated repeated times (laws of probability)!!!

I enclosed some inputs and outputs from running the program included in this answer:

Output:

hi
2
Pick a number from 1 to 3: 2
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
2
Pick a number from 1 to 3: 3
closey
Pick a number from 1 to 3: 1
closey
Pick a number from 1 to 3: 9
Not closey
NOOOOO! Pick a number from 1 to 3: 2
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
1
Pick a number from 1 to 3: 1
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
1
Pick a number from 1 to 3: 0
Not closey
NOOOOO! Pick a number from 1 to 3: 1
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

Output:

hi
3
Pick a number from 1 to 3: 3
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN
WINWINWINWINWINWINWINWINWINWIN

I wish it helps.