Code not generating new number for every roulette spin

785 Views Asked by At

How do i get my program to create a new random number every time the user makes a new bet, currently it will only produce the number black 2 every time i run it. Also odd generated numbers have to be red and even black.

import random 

def roulette_wheel():
    # opening interface
    print("Welcome to the Roulette Wheel \nYou currently have $100 \nEnter a number 0-36 to bet on a number, -1 to bet on Black, -2 to bet on Red, or -3 to walk away. ")

    #amount of money that the user begins with
    user_flow = 100

    while user_flow >= 1:
        user_bet = input("What will you do:")
        number = random.randint(1,36) 
        for number in (1, 35, 2):
            color = ('red')
        for number in (2, 36,2):
            color = ('black')

        # betting on black
        if user_bet == '-1':
            print("You are betting on black")
            money = int(input("What is your bet:$"))
            print('The result of the spin was', color, number)
            if color == 'black':
                user_flow = 2 * money + user_flow
                print('Congrats! You now have $%d' %(user_flow)) 
            else:
                user_flow = user_flow - money
                print('Sorry! You now have $%d' %(user_flow))

      `
2

There are 2 best solutions below

0
On

it looks like you overwrite number in the loop ?

    number = random.randint(1,36) 
    for number in (1, 35, 2):
        color = ('red')

what about doing the following instead ?

    number = random.randint(1,36) 
    for value in (1, 35, 2):
        if number == value:
            color = ('red')

fwiw, a way simpler approach is

    number = random.randint(1,36) 
    if (number%2) = 1:
        color = ('red')
    else:
        color = ('black')
0
On

How about using random.choice() instead of random.randint()?

import random 

def roulette_wheel():
    # opening interface
    print("Welcome to the Roulette Wheel \nYou currently have $100     \nEnter a number 0-36 to bet on a number, -1 to bet on Black, -2 to bet on Red, or -3 to walk away. ")

    #amount of money that the user begins with
    user_flow = 100

    while user_flow >= 1:
        user_bet = input("What will you do:")

        # betting on black
        if user_bet == '-1':
            print("You are betting on black")
        elif user_bet == '-2':
            print("You are betting on red")
        elif user_bet == '-3':
            break # exit here
        else:
            user_bet = int(user_bet)
            print("You are betting on {0}".format(user_bet))

        money = int(input("What is your bet: $"))

        value = random.choice(
            ([1,'red'],
            [2,'black'],
            [35,'red'],
            [36, 'black']))

        color =  value[1]
        number = value[0]

        print('The result of the spin was', color, number)
        if user_bet == '-1' and color == 'black':
            user_flow = 2 * money + user_flow
            print('Congrats! You now have $%d' %(user_flow))
        if user_bet == '-2' and color == 'red':
            user_flow = 2 * money + user_flow
            print('Congrats! You now have $%d' %(user_flow)) 
        if user_bet > 0 and user_bet == number:
            user_flow = 2 * money + user_flow
            print('Congrats! You now have $%d' %(user_flow)) 
        else:
            user_flow = user_flow - money
            print('Sorry! You now have $%d' %(user_flow))