如何将列表项设置为特定变量?

2024-10-01 19:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python和Powershell的组合来编写一个卡片技巧(我很清楚PythonPowershell都可以实现,但无论如何我都想用这两种方法来练习)。在执行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。我知道这可能是毫无意义和不必要的(我读过别人告诉他不要这样做的另一篇文章),但我的想法不仅是为了获得完成程序的信息,而且是为了学习如何按照要求的方式完成。如果这确实是一个太麻烦,我可能会放弃变量,但在这件事上的任何帮助将不胜感激。在


Tags: ofto答案技巧错误printshufflepowershell
2条回答

shuffle就地更改列表,即它不返回任何内容,它只是对现有列表进行无序处理。要解决此问题,可以执行以下操作:

from random import shuffle

TheShownCards = ["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"]
shuffle(TheShownCards)
TheChosenCard = TheShownCards[0]

print TheShownCards
print TheChosenCard

返回:

^{pr2}$

这表明TheShownCards列表已被洗牌,TheShownCards列表中的第一个元素已保存到TheChosenCard

random.shuffle工作到位,这意味着TheList现在被洗牌,None被返回到TheShownCards。这意味着,当您尝试获取元素0时,您将发出一个等价于None.__getitem__(0)的调用,该调用不存在。只要使TheChosenCard成为从TheList拾取元素0的结果。在

相关问题 更多 >

    热门问题