So ist die Einrückung korrekt, if und das dazugehörige elif müssen auf die gleiche Ebene:
Code: Alles auswählen
import random
randomnumber = random.randrange(0,37)
bet = raw_input("Please enter either a number between 1 and 37, or chose 'odd'")
def roulette():
if bet.isdigit():
if int(bet) == randomnumber:
print "Win"
elif int(bet) != randomnumber:
print "nothing"
elif bet == "even":
if randomnumber%2 == 0:
print "win"
elif randomnumber%2 != 0:
print "nothing"
elif bet == "odd":
if randomnumber%2 != 0:
print "Win"
elif randomnumber%2 !=0:
print "Nothing"
roulette()
Die 0 braucht übrigens eine Sonderbehandlung, weil in Python ist die 0 gerade, beim Roulette ist die 0 weder gerade noch ungerade.
randomnumber und bet solltest Du besser als Funktionsparameter übergeben.
roulette() solltest Du nicht in der Funktion selbst aufrufen. Ein Roulette Spiel ist kein rekursives Problem. Mach lieber eine Schleife, in der roulette() immer wieder neu aufgerufen wird.
Ich würde auch eine Klasse programmieren, in der die verschiedenen Arten zu setzen abgebildet sind (rot/schwarz, einzelne Zahl, Drittel, ...). Diese Klasse hat eine Funktion, die alle Gewinn-Zahlen zurückgibt. Ein Roulette Lauf ist dann einfach nur ein random.randrange(0,37) und es wird geschaut, ob die Zahl bei den Gewinnzahlen dabei ist. Wenn das Setzen in einem Objekt gespeichert wird, ist es auch viel einfacher mehrere Einsätze bei einem Roulette Lauf abzufragen.