Reputation: 397
Trying to repeat a loop step until my function returns True for that name, in Python. The following code is what I have so far.
import random
names = [
"John",
"Mike",
"Jimmy",
"Curt",
"Ted",
"Bob",
"Dean"
]
def randomAnswer():
return bool(random.getrandbits(1))
for name in names:
print("Name {} returned {}".format(name, randomAnswer()))
The script above returns an output similar to this one.
Name John returned True
Name Mike returned True
Name Jimmy returned False
Name Curt returned True
Name Ted returned False
Name Bob returned False
Name Dean returned False
The desired output is something like this.
Name John returned True
Name Mike returned True
Name Jimmy returned False
Name Jimmy returned False
Name Jimmy returned False
Name Jimmy returned True
Name Curt returned True
Name Ted returned False
Name Ted returned True
Name Bob returned False
Name Bob returned True
Name Dean returned False
Name Dean returned False
Name Dean returned True
Upvotes: 0
Views: 782
Reputation: 1552
I believe the simplest way around could be checking the actual condition you want to check (the random answer):
import random
def randomAnswer():
return bool(random.getrandbits(1))
names = [
"John",
"Mike",
"Jimmy",
"Curt",
"Ted",
"Bob",
"Dean"
]
for name in names:
answer = randomAnswer()
while not answer:
print(f"Name {name} returned {answer}")
answer = randomAnswer()
print(f"Name {name} returned {answer}")
The output from the code above is:
Name John returned False
Name John returned False
Name John returned True
Name Mike returned True
Name Jimmy returned True
Name Curt returned True
Name Ted returned False
Name Ted returned False
Name Ted returned True
Name Bob returned True
Name Dean returned True
Upvotes: 1
Reputation: 336
Use while loop with counter and increment that counter only if condition is true. Something similar to this:
import random
names = [
"John",
"Mike",
"Jimmy",
"Curt",
"Ted",
"Bob",
"Dean"
]
def randomAnswer():
return bool(random.getrandbits(1))
i = 0
while i < len(names):
answer = randomAnswer()
print("Name {} returned {}".format(names[i], answer))
if answer:
i += 1
Upvotes: 2
Reputation: 1054
You could add an if statement
to check if randomAnswer
returned True
or False
:
import random
names = [
"John",
"Mike",
"Jimmy",
"Curt",
"Ted",
"Bob",
"Dean"
]
def randomAnswer():
return bool(random.getrandbits(1))
for name in names:
result = randomAnswer()
if result:
print("Name {} returned {}".format(name, result))
continue
else:
print("Name {} returned {}".format(name, result))
while not result:
result = randomAnswer()
print("Name {} returned {}".format(name, result))
Upvotes: 1