2016-10-20 17 views
-1
import random 

cards_names = {1: "Ace", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 
       9: "9", 10: "10", 11: "Jack", 12: "Queen", 13: "King"} 

def dealing(): 
    return random.randint(1, 13) 

def value_of_hand(cards): 
    value = 0 
    for card in cards: 
     if 1 < card <= 10: 
      value += card 
     elif card > 10: 
      value += 10 

    if 1 in cards and value + 11 <= 21: 
      return value + 11 
    elif 1 in cards: 
      return value + 1 
    else: 
      return value 

def your_hand(name , cards): 
    faces = [cards_names[card] for card in cards] 
    value = value_of_hand(cards) 

    if value == 21: 
     print ("Wow, you got Blackjack!") 
    else: 
     print ("") 

    print ("%s's hand: %s, %s : %s %s") % (name, faces[0], faces[1], value) 

for name in ("Dealer", "Player"): 
    cards = (dealing(), dealing()) 
    your_hand(name, cards) 
+2

Ich gab Ihnen eine Antwort, die Sie wahrscheinlich erhalten wollten, aber für zukünftige Referenz empfehle ich Ihnen, [Wie zu fragen] (http://stackoverflow.com/help/how-to-ask) zu lesen. Kurz gesagt: Seien Sie präzise über die Fehler, die Sie erhalten, über den Teil des Codes, mit dem Sie ein Problem haben, und über das gewünschte Verhalten des Codes. Willkommen bei Stackoverflow! –

Antwort

1

Ich gehe davon aus, dass hier Sie Python 3.x verwenden und immer diese Fehlermeldung:

TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

Sie müssen den Teil nach% innerhalb des Drucks bewegen Klammern um die Fehler zu vermeiden. Außerdem haben Sie eine %s zu viel in Ihrem Druck. Entfernen Sie das und dann druckt es fein:

print ("%s's hand: %s, %s : %s" % (name, faces[0], faces[1], value)) 

Dealer's hand: Ace, 8 : 19

Player's hand: 9, 7 : 16

Wie Sie sehen können, die Anzahl der %s: s sollten Sie es schaffen, auf die Parameter gleich sein. Ohne Entfernen s das zusätzlichen% würde es die folgenden Fehler auf Python drucken 3:

TypeError: not enough arguments for format string

Auch in Python 3 können Sie die neue Zeichenfolge Formatierung Syntax:

print ("{}'s hand: {}, {} : {}".format(name, faces[0], faces[1], value)) 

Es ist manchmal flexibler als der alte Weg von String-Interpolation mit% s, und sicherlich nützliche Funktion zu wissen.