Schleifen Problem (evt. wegen "break"?)
Verfasst: Montag 3. Oktober 2011, 13:35
Hey zusammen
Ich bin ein kleines Blackjacksimulationsprogramm am schreiben. Nun habe ich beim ersten Teil (ohne double down und split pairs) ein kleines Problem.
Ich habe die Spielsituationen zwar für 10 verschiedene Karten des Dealers und 8 verschiedene "stand"-werte 1000 mal durchspielen lassen, doch ich bekomme trotzdem am schluss nu einen wert (hier 1 Loss).
Kann es sein dass die "break-Anweisung" alle Schleifen beendet und nicht nur die nächst-übergreifende? wenn ja hätte jemand eine Idee wie ich dieses Problem lösen könnte?
Mfg
Ich bin ein kleines Blackjacksimulationsprogramm am schreiben. Nun habe ich beim ersten Teil (ohne double down und split pairs) ein kleines Problem.
Code: Alles auswählen
def BJpart1(playercards, D=Deck, W=0, L=0, T=0):
Basic_Deck = [2,3,4,5,6,7,8,9,10,10,10,10,11]
Deck = 32*Basic_Deck
for x in range(2,12): #x= Karten des Dealers
D.remove(x)
for s in range(12,21): # s<= stand, s> draw
for i in range(1000):
random.shuffle(Dnew)
for j in range(6): # Das Ziehen weiteren sieben Karten ist unwahrscheinlich
if D[j]+playercards == 21:
Pend = 'BJP' # Player hat Blackjack -> "Blackjackplayer"
elif D[j]+playercards >= s:
Pend = D[j]+playercards #Playerend is erreicht, falls die Summe grösser als der testwert von s ist
break
else: playercards = D[j]+playercards #Das gleiche wird nun mit dem Dealer gemacht
for k in range(6,12): #6-11, damit nicht die gleichen Karten wie beim player gezogen werde.
if D[k]+x == 21:
Dend = 'BJD' # Dealder hat Blackjack -> "Blackjackdealer"
elif D[k]+x >= 17:
Dend = D[k]+x#Dealerend erreicht
break
else: x = Dnew[k]+x
if Pend > 21:
L = L + 1
elif Pend > Dend and Pend <= 21:
W = W + 1
elif Pend < Dend and Dend <= 21: # W=wins, L=losses, T=ties
L = L + 1
elif Pend <= 21 and Dend > 21:
W = W + 1
elif Pend <= 21 and Pend == Dend:
T = T + 1
elif Dend == 'BJD' and Pend != 'BJP':
L = L + 1
elif Dend == 'BJD' and Pend == 'BJP':
T = T + 1
elif Dend != 'BJD' and Pend == 'BJP':
W = W + 1
print(W, L, T)
Code: Alles auswählen
BJpart1(13)
0 1 0
Mfg