Why am I not getting four unique numbers returned?
Question:
I am trying to create a function that returns a 4 digit string which consists of 4 unique values.
I currently have the following code:
def generateNum():
ValidNum = False
while ValidNum == False:
RanNumber = random.randint(1000, 9999)
RanNumber = str(RanNumber)
for number in RanNumber:
if RanNumber.count(number) > 1:
ValidNum = False
else:
ValidNum = True
return RanNumber
print(generateNum())
Can someone explain what is wrong with this piece of code and what I can potentially do to fix it?
Thank you.
Answers:
import random
def generate_random():
num = ''
while len(num) < 4:
random_int = random.randint(0,9)
if str(random_int) in num:
pass
else:
num += str(random_int)
return num
print(generate_random())
This should work fine
Following your logic, this is what would have worked:
def generateNum():
ValidNum = False
while True:
RanNumber = random.randint(1000, 9999)
RanNumber = str(RanNumber)
for number in RanNumber:
if RanNumber.count(number) == 1:
ValidNum = True
continue
else:
ValidNum = False
break
if not ValidNum:
continue
break
return RanNumber
I am trying to create a function that returns a 4 digit string which consists of 4 unique values.
I currently have the following code:
def generateNum():
ValidNum = False
while ValidNum == False:
RanNumber = random.randint(1000, 9999)
RanNumber = str(RanNumber)
for number in RanNumber:
if RanNumber.count(number) > 1:
ValidNum = False
else:
ValidNum = True
return RanNumber
print(generateNum())
Can someone explain what is wrong with this piece of code and what I can potentially do to fix it?
Thank you.
import random
def generate_random():
num = ''
while len(num) < 4:
random_int = random.randint(0,9)
if str(random_int) in num:
pass
else:
num += str(random_int)
return num
print(generate_random())
This should work fine
Following your logic, this is what would have worked:
def generateNum():
ValidNum = False
while True:
RanNumber = random.randint(1000, 9999)
RanNumber = str(RanNumber)
for number in RanNumber:
if RanNumber.count(number) == 1:
ValidNum = True
continue
else:
ValidNum = False
break
if not ValidNum:
continue
break
return RanNumber