我是Python新手,正在《Fluent Python》一书中学习Python,他们给了我这段代码:
import collections Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self): self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, position): return self._cards[position]
他们对我说,如果我运行这段代码,我可以在控制台中看到:
>>> beer_card = Card('7', 'diamonds') >>> beer_card Card(rank='7', suit='diamonds')
或者在控制台中
>>> deck = FrenchDeck() >>> len(deck) 52
但是当我尝试运行代码时,他们给了我这个错误:
File "c:\Users\HP\Desktop\自分のこと\Python\test35.py", line 4 ranks = [str(n) for n in range(2, 11)] + list('JQKA') ^ IndentationError: expected an indented block after class definition on line 3 PS C:\Users\HP>
你能告诉我如何解决这个问题吗?或者他们到底想用代码做什么?非常感谢您的宝贵时间。
我想确切地知道他们想用我在文本中编写的代码做什么。
这段代码定义了两个类:Card 和 FrenchDeck,并且使用了命名元组 (namedtuple)。它们的作用如下:
Card
FrenchDeck
namedtuple
collections.namedtuple
rank
suit
Card('7', 'diamonds')
beer_card
_cards
__init__
__len__
__getitem__
现在让我解释一下你遇到的错误:
File "c:\Users\HP\Desktop\自分のこと\Python\test35.py", line 4 ranks = [str(n) for n in range(2, 11)] + list('JQKA') ^ IndentationError: expected an indented block after class definition on line 3
这个错误表明在第 4 行有一个缩进错误,意味着 Python 解释器期望在 class FrenchDeck: 类定义的后面有一个缩进的代码块。在 Python 中,缩进是非常重要的,用于表示代码块的开始和结束。你需要确保在类定义后的所有代码都有正确的缩进。
class FrenchDeck:
你可以尝试以下修改:
import collections Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self): self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, position): return self._cards[position] # 现在你可以尝试在控制台中运行代码,并测试它们的功能。
希望这可以帮助你理解他们想用代码做什么,并解决你遇到的问题。