I am trying to make a python code for the game of roulette, but every line is returning "invalid syntax". It might be some sort of indentation error, but I am new at Python and can't figure it out for the life of me. Any help would be much appreciated!
import random
def roulette():
"Game of roulette"
chips=10
L=[1,2,3,4,5,6,7,8,9,10]
while chips > 0:
x=int(input("You have 10 chips. How many do you want to bet? ")
while x not in L:
x=int(input("You bet between 1 and 10 chips. Bet 10 or less chips. ")
y=input("What do you want to bet on? Green, Red or Black? ")
z=random.randint(0,10)
print(z)
if x == z:
chips=chips+(9*x)
print("You have %i chips" %chips)
elif ((y.lower() == "green" and z == 0) or (y.lower() == "red" and z in [1,3,5,7,9]) or (y.lower() == "black" and z in [2,4,6,8,10])):
chips=chips+x
print("You have %i chips" %chips)
else:
chips=chips-x
print("You lost. You now have %i chips" %chips)
w=input("Do you want to play another round? Yes or No? ")
if w.lower() == "no" or chips == 0:
print("The game is over! You had %i chips left" %chips)
break
roulette()
2 Answers 2
You missed a closing braces on line 10.
while x not in L:
x=int(input("You bet between 1 and 10 chips. Bet 10 or less chips. "))
When Python gives you syntax error such as Unexpected Token or Expected ')' but found '}', always look one line above it. There's a great chance you forgot to close some parenthesis.
On a side note, you should consider using proper IDE with syntax checking. Visual Studio Code is a great example.
Comments
You missed two closing parenthesises.
In general it is important to post the exact syntax error. Very often it is the line above the syntax error, that as a parenthesis missing or a double quote missing.
As @ivysaur-yw pointed out, things like this are simpler to discover if you use an editor or an IDE with python syntax highlighting
Here the corrected version:
#!/usr/bin/env python
import random
def roulette():
"Game of roulette"
chips=10
L=[1,2,3,4,5,6,7,8,9,10]
while chips > 0:
x=int(input("You have 10 chips. How many do you want to bet? ")) # one ) was missing here
while x not in L:
x=int(input("You bet between 1 and 10 chips. Bet 10 or less chips. ")) # one ) was missing here
y=input("What do you want to bet on? Green, Red or Black? ")
z=random.randint(0,10)
print(z)
if x == z:
chips=chips+(9*x)
print("You have %i chips" %chips)
elif ((y.lower() == "green" and z == 0) or (y.lower() == "red" and z in [1,3,5,7,9]) or (y.lower() == "black" and z in [2,4,6,8,10])):
chips=chips+x
print("You have %i chips" %chips)
else:
chips=chips-x
print("You lost. You now have %i chips" %chips)
w=input("Do you want to play another round? Yes or No? ")
if w.lower() == "no" or chips == 0:
print("The game is over! You had %i chips left" %chips)
break
roulette()
With corrected I mean syntactically correct. I did not check the functionality
x. I figured this out by running your code through Pylama, a linter. BTW welcome to SO! Please take the tour and read How to Ask. In the future for debugging questions, you need to make a minimal reproducible example including the full error message.