Ich versuche, ein Spiel von Blackjack in Python zu debuggen, aber ich kann nicht herausfinden, wie Ace durch König umzusetzen, sobald die Hand ausgeteilt wird. Ich brauche einen Hinweis oder etwas ... übersehe ich vielleicht etwas Offensichtliches?Python Blackjack Listen und spezielle Werte
MAX = 21
# main function
def main():
# Local variables
hand1 = 0
hand2 = 0
deck = create_deck()
while hand1 <= 21 and hand2 <= 21:
card1, value1 = deck.popitem()
hand1 = update_hand_value(hand1, value1, card1)
card2, value2 = deck.popitem()
hand2 = update_hand_value(hand2, value2, card2)
print('Player 1 was dealt', card1)
print('Player 2 was dealt', card2)
print()
# Determine the winner.
if hand1 > MAX and hand2 > MAX:
print("There is no winner.")
elif hand1 > 21:
print("Player 2 wins.")
else:
print("Player 1 wins.")
def create_deck():
# Set up local variables
suits = ['Spades', 'Hearts', 'Clubs', 'Diamonds']
# unused currently, needs to be implemented
special_values = {'Ace': 1, 'King': 10, 'Queen': 10, 'Jack': 10}
numbers = ['Ace', 'King', 'Queen', 'Jack']
for i in range(2, 11):
numbers.append(str(i))
# Initialize deck
deck = {}
for suit in suits:
for num in numbers:
# Values 2-10.
if num.isnumeric():
deck[num + ' of ' + suit] = int(num)
else:
deck[num + ' of ' + suit] = str(num)
# values 1 and 11
return deck
def update_hand_value(hand, value, card):
if not card == 'Ace':
return hand, value
# Adding 11 would cause to go over the maximum.
elif hand > 10:
# Value is 1 by default.
return hand, value
else:
return hand + 11
# Call the main function.
main()
# Call the main function.
main()
Karten werden ausgeteilt, bis ein Spieler gewinnt.
Beispielausgabe:
Spieler 1 2 von Diamanten behandelt wurde 2 Player 8 Pik
Spieler 1 behandelt wurde 6 of Diamonds Spieler 2 behandelt wurde 5 von Diamanten behandelt wurde
Spieler 1 wurde 4 von Clubs ausgeteilt Spieler 2 wurde 8 von Diamanten
ausgeteilt Spieler 1 wurde 7 der Clubs ausgeteilt Spieler 2 wurde 3 von ausgeteilt Spaten
Spieler 1 gewinnt.
EDIT: Ich habe mein Programm geändert, aber ich bekomme einen neuen Fehler.
Traceback (jüngste Aufforderung zuletzt): Datei "C: /Users/Sean/PycharmProjects/SeanPython/ISY150/Demo/Blackjack.py", Linie 99, in main() Datei „C:/Users /Sean/PycharmProjects/SeanPython/ISY150/Demo/Blackjack.py“, Zeile 17, in dem Haupt während hand1 < = 21 und hand2 < = 21: Typeerror: unorderable Typen: Tupel() < = int()
Ich verstehe nicht, in Zeile 17 Ich vergleiche kein Tupel mit einem Int, soweit ich weiß ...
könnte hilfreich sein http://stackoverflow.com/questions/30698740/treating-a-string-as-an-integer/30698781#30698781 –
Hatte mein Programm zu bearbeiten. Außerdem stelle ich mir vor, dass dieses Programm auf eine bestimmte Art und Weise durchgeführt werden muss. Ich habe ein anderes funktionierendes Blackjack-Programm. Dieser muss nur so gemacht werden. Ich muss es als Übung debuggen. – Powerwaffe