我尝试使用Python和Powershell的组合来编写一个卡片技巧(我很清楚Python或Powershell都可以实现,但无论如何我都想用这两种方法来练习)。在执行Python部分的技巧时,我遇到了一个关于NoneType
没有属性__getitem__
的错误。我想我在这个问题上找到了这个问题的答案,但我并不真正理解答案的含义(我还是这个问题的初学者)。另外,我发现了另一个问题,有人试图做我正在做的事情(How to assign each element of a list to a separate variable?),但那个帖子里的每个人都只说他所做的没有必要,而没有给出答案。基本上,我想做他想做的,除了第一个变量。在
这是我的代码:
from random import shuffle
TheList = ["Ace of Spades", "Three of Hearts", "Five of Diamonds", "Seven of Clubs", "Nine of Spades", "Jack of Hearts", "King of Diamonds", "Two of Clubs", \
"Four of Spades", "Six of Hearts", "Eight of Diamonds", "Ten of Clubs"]
TheShownCards = shuffle(TheList)
TheChosenCard = TheShownCards[0]
print TheShownCards
print TheChosenCard
以下是我得到的错误:
^{pr2}$最后的print
命令只是用于调试,我将在完成脚本后删除它们。本质上,我试图将列表TheShownCards
的第一项保存为变量TheChosenCard
。我知道这可能是毫无意义和不必要的(我读过别人告诉他不要这样做的另一篇文章),但我的想法不仅是为了获得完成程序的信息,而且是为了学习如何按照要求的方式完成。如果这确实是一个太麻烦,我可能会放弃变量,但在这件事上的任何帮助将不胜感激。在
shuffle
就地更改列表,即它不返回任何内容,它只是对现有列表进行无序处理。要解决此问题,可以执行以下操作:返回:
^{pr2}$这表明
TheShownCards
列表已被洗牌,TheShownCards
列表中的第一个元素已保存到TheChosenCard
random.shuffle
工作到位,这意味着TheList
现在被洗牌,None
被返回到TheShownCards
。这意味着,当您尝试获取元素0时,您将发出一个等价于None.__getitem__(0)
的调用,该调用不存在。只要使TheChosenCard
成为从TheList
拾取元素0的结果。在相关问题 更多 >
编程相关推荐