Tupilwe Sinyangwe
Tupilwe Sinyangwe

Reputation: 129

How to return an argument if a certain condition is met in a loop?

import random


def lottery(lucky_numbers, run):
    i = 0
    while i < run:
        x = random.uniform(0, 1) #prints out a random number between 0 and 1
        numbers = lucky_numbers
        NewNumbers = numbers[-1:] + numbers[:-1] #shifts each element in the to the right
        lucky_numbers = NewNumbers
        print(lucky_numbers, x)
        i += 1

lottery([1, 2, 0], 3)

This code prints out something like:

>>>>>>>>>>
[0, 1, 2] 0.33016179294984127 
[2, 0, 1] 0.7797639530009745
[1, 2, 0] 0.6292245916315391
>>>>>>>>>>

The x values will always be different because they are random numbers between 0 and 1.

I am trying to add a function that says if x is the lowest value(min) in the loop then the programme should print the list of that iteration, for example in this case the lowest value of x in this loop is 0.33016179.. , the program should therefore print the list [0, 1, 2]

Upvotes: 0

Views: 74

Answers (3)

achecopar
achecopar

Reputation: 460

I would just save the info in a variable and print it after the loop ends:

import random

def lottery(lucky_numbers, run):
    i = 0
    min_x = 1
    while i < run:
        x = random.uniform(0, 1) #prints out a random number between 0 and 1           
        numbers = lucky_numbers
        NewNumbers = numbers[-1:] + numbers[:-1] #shifts each element in the to the right
        lucky_numbers = NewNumbers
        if x < min_x:
            min_x = x
            min_lucky_numbers = lucky_numbers
        i += 1        
    print(min_lucky_numbers, min_x)

lottery([1, 2, 0], 3)

Upvotes: 1

Sofiane
Sofiane

Reputation: 693

to do what you want, you have just to store your items in two different lists, sort them and display the firt elements of each one :

import random

luckiest_num = list()
luckiest_list = list()
def lottery(lucky_numbers, run):
    i = 0
    while i < run:
        x = random.uniform(0, 1) 
        numbers = lucky_numbers
        NewNumbers = numbers[-1:] + numbers[:-1] 
        print(NewNumbers, x)
        i += 1
        luckiest_num.append(x)
        luckiest_list.append(NewNumbers)

lottery([1, 2, 0], 3)
luckiest_num.sort()
luckiest_list.sort()

print ("The luckiest item is : ")
print(luckiest_num[0],luckiest_list[0])

Upvotes: 0

spicypumpkin
spicypumpkin

Reputation: 1219

You can create a "cache" that stores all the x values then call the lowest value.

cache = []
for _ in range(3):
    x = random.uniform(0, 1)
    cache.append(x)
print min(cache)

Upvotes: 1

Related Questions