【问题标题】:TypeError: 'NoneType' object is not iterable after random.shuffle()TypeError: \'NoneType\' 对象在 random.shuffle() 之后不可迭代
【发布时间】:2022-11-09 21:56:14
【问题描述】:

纯粹作为一种学习经验,我已经开始编写一个基本的 Python 脚本。目前,它应该模拟一副经过洗牌的标准扑克牌。我的脚本按预期工作,除了改组部分。

import random

deck = list()
# play_deck = list()
suits = ['hearts', 'clubs', 'diamonds', 'spades']
card = {'suit':'', 'faceval': ''}

i = 0
for suit in suits:
    j = 1
    while j < 14:
        card = {'suit': suit, 'faceval': str(j)}
        deck.append(card)
        j+=1
i+=1


deck = random.shuffle(deck)

for card in deck:
    print(card['suit'])
    print(card['faceval'])

我使用一套花色列表和一个 for 循环来创建套牌,以获得四套每套 13 张牌,然后将每个套牌列表成员(卡片)打印到控制台以查看它是否按预期工作。

但是当我将 random.shuffle() 添加到代码中时,我得到了这个错误:

TypeError:“NoneType”对象不可迭代

我已经尝试过这些技术:

deck = random.shuffle(deck)

play_deck = random.shuffle(deck)

为什么在通过 random.shuffle() 函数运行后我不能迭代卡组?我错过了什么吗?

【问题讨论】:

标签: python random


【解决方案1】:

random.shuffle(lst) modifies lst in-place, and returns None(如lst.sort())。

代替

deck = random.shuffle(deck)

random.shuffle(deck)

【讨论】:

    【解决方案2】:

    https://docs.python.org/3/library/random.html#random.shuffle

    随机洗牌(x) 将序列 x 打乱到位。

    要打乱不可变序列并返回新的打乱列表,请改用 sample(x, k=len(x)) 。

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 2017-08-29
      • 2016-08-30
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多