Moin moin liebe Community,
ich habe schon einige Threads zu Roulette in Python durchgelesen und habe dennoch zwei offene Fragen.
Wie kann man eine Menge x an Münzen auf eine Zahl im Roulette setzen und wie programmiere ich einen richtigen if Befehl zu einer Strategie, bsp. das ich jedesmal die doppelte Menge an Münzen auf Rot setze nachdem ich verloren habe :K
Meinen bisherige Stand kann ich gerne bei Bedarf dazu schreiben, dennoch ist er sehr amateurhaft geschrieben und ich würde das gerne erstmal außen vor lassen.
Mfg Happyfriend
Roulette Sagemath Python
@happyfriend: Die Frage ist viel zu allgemein gestellt. Es gibt viele Variationen wie man ein Roulettespiel modellieren kann, und wie man dann dort Einsätze macht oder Strategien in Code giesst, hängt davon ab wie die Simulation konkret umgesetzt wurde.
-
- User
- Beiträge: 3
- Registriert: Donnerstag 5. Februar 2015, 14:08
def Roulette(a)
import random
zahl = random.randint(0,36)
is_even(zahl)
print zahl
def Roulette()
import random
random.randint(0,36) = number
if number % 2 == 0
print number
Das ist mein Anfang gewesen, um erstmal eine gerade Zahl auszugeben und im Nachhinein den Befehl für das setzen von Münzen hinzuzufügen. Frage mich nur was ich ändern müsste, um eine Ausgabe meiner Zahl und eine true Ausgabe zu erhalten, da beide Ideen nicht klappen und anscheinend die Definition an sich falsch ist.
import random
zahl = random.randint(0,36)
is_even(zahl)
print zahl
def Roulette()
import random
random.randint(0,36) = number
if number % 2 == 0
print number
Das ist mein Anfang gewesen, um erstmal eine gerade Zahl auszugeben und im Nachhinein den Befehl für das setzen von Münzen hinzuzufügen. Frage mich nur was ich ändern müsste, um eine Ausgabe meiner Zahl und eine true Ausgabe zu erhalten, da beide Ideen nicht klappen und anscheinend die Definition an sich falsch ist.
Zuletzt geändert von Anonymous am Donnerstag 5. Februar 2015, 15:16, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Grund: Quelltext in Python-Code-Tags gesetzt.
Hast du mal ein Python-Tutorial vernünftig durchgearbeitet? Dein Code ist so ja gar nicht lauffähig. Und bitte setze den Code hier im Forum doch in Code-Tags (über dem Textfeld ist ein mehr oder weniger großer Button "Code"), dann ist der auch vernünftig lesbar.
@lackschuh:
@lackschuh:
lackschuh hat geschrieben:Unser Roulett hat 37 Zahlen, das Ami Roulett 38 und deines hat 35.
https://docs.python.org/2/library/random.html hat geschrieben: random.randint(a, b)
Return a random integer N such that a <= N <= b.
Das Leben ist wie ein Tennisball.
Naja, bei „gib mir eine Zufallszahl zwischen 1 und 6” würden sicher viele darüber stolpern wenn beide Endpunkte nicht inklusive wären. Und wenn man einen Index haben möchte zu einer gegebenen Länge (und `random.choice()` nicht in Frage kommt) gibt es ja `random.randrange()` wo analog zu `range()` & Co der Endwert *nicht* inklusive ist.
-
- User
- Beiträge: 3
- Registriert: Donnerstag 5. Februar 2015, 14:08
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) == retandomnumber:
print "Win"
elif int(bet) != randomnumber:
print "nothing"
if bet == "even":
if randomnumber%2 == 0:
print "win"
elif randomnumber%2 != 0:
print "nothing"
if bet == "odd":
if randomnumber%2 != 0:
print "Win"
elif randomnumber%2 !=0:
print "Nothing"
roulette()
@happyfriend: So wie es dort steht ist das syntaktisch nicht korrekt. Wäre richtig eingerückt bekämst Du sehr schnell einen `NameError` weil `retandomnumber` nicht definiert ist. Desweiteren sollte man Rekursion nicht als simplen Schleifenersatz verwenden, das geht nämlich auf Dauer nicht gut weil die Aufruftiefe begrenzt ist.
Man kann mehr als eine Bedingung logisch durch ``and`` und ``or`` verknüpfen.
Man kann mehr als eine Bedingung logisch durch ``and`` und ``or`` verknüpfen.
So ist die Einrückung korrekt, if und das dazugehörige elif müssen auf die gleiche Ebene:
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.
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()
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.
@MagBen: eine Klasse wäre dafür unnötig, eine einfache Funktion oder Datenstruktur reicht auch.
Code: Alles auswählen
import random
WINNING_NUMBERS = {
'even': range(2,37,2),
'odd': range(1,37,2),
}
WINNING_NUMBERS.update((str(i), [i]) for i in range(0,37))
def main():
while True:
bet = raw_input("Please enter either a number between 1 and 37, 'even' or 'odd': ")
randomnumber = random.randrange(0,37)
print "The number is", randomnumber
print "Win" if randomnumber in WINNING_NUMBERS[bet] else "nothing"
if __name__ == '__main__':
main()
Die Sache wird komplizierter, wenn alle Roulette Möglichkeiten abgebildet werden sollen: setzen auf 2x2 Felder, horizontale Reihen (bin mir nicht ganz sicher ob das bei Roulette geht), Drittel, einzelne Zahlen, ...Sirius3 hat geschrieben:eine Klasse wäre dafür unnötig, eine einfache Funktion oder Datenstruktur reicht auch.
Das alles lässt sich nur mühsam mit einem Dictionary machen.
@MagBen: Man könnte das Wörterbuch auch anders herum aufbauen, also zu jeder Zahl abbilden zu welchen ”Setzmöglichkeiten” sie gehört. Und dann testen ob das auf was der Spieler gesetzt hat mit einer der Möglichkeiten zur gezogenen Zahl übereinstimmt.