How to use list in roulette game?
I've just started learning Python so apologies if I am missing anything obvious here.
I am trying to create a roulette game based off a question on Code Academy. I have decided to use a list rather than randomint because I want to add 00 to the list. That is the first thing I'm struggling with as I have used append to try and add 00 but it only adds it as 0.
The second thing I'm struggling with is fixing this error:
TypeError: unsupported operand type(s) for %: 'list' and 'int'
My code is below so it is the roulette_number part which is not working as it's come from a list and is therefore not being recognised as an int. Any suggestions would be much appreciated!
from random import seed
from random import sample
# seed random number generator
seed (1) # Seed is a reference to your random number so if you reference the same seed you will always get the same random number. Even having this randint doesn't make a difference. So in that case it doesn't matter what number you put in the brackets next to the seed?
# prepare a sequence
n = 1
sequenceroulette = [i for i in range(37)] * n #The sequence is starting from 0 to 36
sequenceroulette.append(00) ## Try to work out how to add this as a double zero rather than one zero
print (sequenceroulette)
#select a subset without replacement
subset = sample(sequenceroulette,1) # we only want to pick 1 number a time from the list
print(subset)
roulette_number = subset
print (roulette_number)
money = 100
def roulette (Bet,Guess1, Guess2):
if roulette_number % 2 == 0 and Guess1 == "Even" and Guess2 == "N/A":
return (money  Bet) + (Bet * 2)
elif roulette_number % 1 == 1 and Guess1 == "Odd" and Guess2 == "N/A":
return (money  Bet) + (Bet * 2)
elif roulette_number == Guess1 and Guess2 == "N/A":
return (money  Bet) + (Bet *37)
elif roulette_number == Guess1 or roulette_number == Guess2:
return (money  Bet) + (Bet * 18.5)
else:
return money
print (roulette(10,"Even","N/A"))
3 answers

Replace this line:
roulette_number = subset
By:
roulette_number = subset[0]
Since subset if a list of one value you must get it to make the % operation

In Python, leading 0's are omitted when saving as an
int
. If you would like to store these, you need to save them as a string.sequenceroulette.append('00')
In regards to your
TypeError
TypeError: unsupported operand type(s) for %: 'list' and 'int'
You cannot use the operator
%
between an instance oflist
andinteger
.This is due to how you're pulling one number from the
list
with ;subset = sample(sequenceroulette,1) #[8]
Notice,
sample()
still returns your result, in alist
. If you update yourroulette_number
to always call element0
you can resolve this error.roulette_number = subset[0]
Hopefully this helps, if you want to do some more, indepth reading on some of the issues you encountered here are some links!

random.sample(population, k)
is a method that returns a list of length k.
Therefore,
sample(sequenceroulette,1)
Will return a list with one number. In order to access this number in the list you need to do
roulette_number = subset[0]
When you are starting out with Python it's important to remember what data types the methods you are using return and therefore you need to use them in your code accordingly :)