Когда я печатаю объект класса PlyingCard, он правильно возвращает строку (например, Десять Diamonds), но когда я читаю данные из файла (текстовый файл: 9 d \ n7 d) и добавляю его в список как объекты этого класса, но если я хочу, чтобы напечатать элемент этого списка показывает:Почему один раз он работает, а другой дает ошибку типа?
Traceback (most recent call last): File
"C:/Python34/Zadanka/r10/r10_z11.py", line 51, in
main() File "C:/Python34/Zadanka/r10/r10_z11.py", line 50, in main
print(card[0]) # TypeError: list indices must be integers, not str File "C:/Python34/Zadanka/r10/r10_z11.py", line 28, in strreturn str(self.ranks[self.rank] + " of " + self.suits[self.suit])
TypeError: list indices must be integers, not str.
class PlayingCard:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
self.ranks = [None, "Ace", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"]
self.suits = {"s":"Spades",
"d":"Diamonds",
"c":"Clubs",
"h":"Hearts"}
def getRank(self):
return self.rank
def getSuit(self):
return self.suit
def BJValue(self):
BJVal = 0
if 11 > self.rank > 0:
BJVal = self.rank
elif 14 > self.rank > 10:
BJVal = 10
return BJVal
def __str__(self):
return str(self.ranks[self.rank] + " of " + self.suits[self.suit])
def readCard(filename):
infile = open(filename, 'r')
cards = []
for line in infile:
cards.append(makeCard(line))
infile.close()
return cards
def makeCard(infoStr):
rank, suit = infoStr.split()
return PlayingCard(rank, suit)
def main():
filename = "C:\\Python34\\Zadanka\\r11\\cards.txt"
a = PlayingCard(10, "d")
print(a) # Ten of Diamonds
cards = readCard(filename)
print(cards[0]) # TypeError: list indices must be integers, not str
main()
'self.ranks' список и вы индексировать его с помощью строки,' self.rank'. Вам нужно использовать целое число. –