2016-08-20 4 views
-4

Ich benutze ein Buch namens Python-Programmierung: Eine Einführung in die Computerprogrammierung und ich bin in einer Programmierübung in Kapitel 10 stecken. Es fragt nach einem Programm, das eine Spielkarte anzeigt, nachdem der Benutzer den Wert der Karte und ihre Farbe einfügt . Auch sollte ich mit drei Methoden plus zwei Konstrukteurs sein, hier sind sie:Ich erhalte die Fehlermeldung Unerwarteter EOF beim Parsen?

__init__(self, rank, suit): 
getRank(self) 
getSuit(self) 
BJValue(self) 
__str__(self) 

Aber, wie ich es ein Fehler ausgeführt wird angezeigt ..... Hier ist meine Arbeit:

from random import randrange 

class Card: 

    def __init__(self, rank, suit):# This constructor creates the corresponding card according to their ranks: 
     self.rank = rank   # "d"=diamonts, "c"=clubs, "h"=hearts, or 
"s"=spades 
     self.suit = suit 

    def getRank(self):# Returns the rank of the card. 
     ranks = [None, "Ace", "2", "3", 
       "4", "5", "6", "7", "8", 
       "9", "King", "Queen", "Jack"] 
     self.rank = ranks[self.rank] 
     return self.rank 

    def getSuit(self):# Returns the suit of the card. 
     suits = ["diamons", "heart", "club", "spades"] 
     # TRY TO MAKE THIS PIECE OF CODE MORE ABSTRACT!!!! 
     if self.suit[0] == "d": 
      self.suit = suits[0] 
     elif self.suit[0] == "h": 
      self.suit = suits[1] 
     elif self.suit[0] == "c": 
      self.suit = suits[2] 
     elif self.suit[0] == "s": 
      self.suit = suits[3] 
     return self.suit# A suit in Blackjack means the symbol of the card. 

    def BJValue(self):# Returns the Blackjack value of a card. 
     # For example Aces count as 1 and face cards count as 10. 
     while 0 < self.rank <= 10: 
      if self.rank == "Ace": 
       self.rank = 1 
       self.bjvalue = self.rank 
      elif self.rank[0] == "King" or self.rank[0] == "Queen" or self.rank[0] == "Jack": 
       self.rank = 10 
       self.bjvalue = self.rank 
      else: 
       self.bjvalue = self.rank 
     return self.bjvalue 

    def __str__(self):# Returns a string that names the card. For example "Ace of Spade". 
     print("{0} of {1}".format(self.rank, self.suit) 

Es tut mir leid für mein Englisch, aber ist nicht meine erste Sprache.

+0

Schauen Sie sich die Zeile an, auf die der Fehler zeigt. Sieht es falsch aus? – Blender

+0

Es zeigt direkt nach dem zweiten Konstruktor def __str __ (self), wo es mit dem Format endet. –

+0

Zählen Sie Ihre Klammern. – chepner

Antwort

1

Sie fehlen die engen Klammern in der endgültigen print Aufruf.

0

Sie haben vergessen, die Klammer am Ende der letzten Zeile zu schließen. Es gibt eine Öffnung für die Druckmethode, aber keine Schließung am Ende.

Verwandte Themen