You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用random.shuffle()后出现TypeError: 'NoneType'对象不可迭代问题

错误原因与解决办法

核心问题

random.shuffle()是原地修改型函数:它直接对传入的列表进行洗牌操作,不会返回新的列表,函数的返回值是None。

你写的deck = random.shuffle(deck),本质是把None赋值给了deck变量。后续遍历deck时,自然会触发TypeError——因为None不是可迭代对象,无法用for...in循环遍历。同理play_deck = random.shuffle(deck)也会让play_deck变成None,导致同样的错误。

修正后的代码

只需要直接调用random.shuffle(deck),不需要给变量赋值,原列表会被直接修改:

import random

deck = list()
suits = ['hearts', 'clubs', 'diamonds', 'spades']

# 用for循环替代while,更简洁
for suit in suits:
    for j in range(1, 14):
        card = {'suit': suit, 'faceval': str(j)}
        deck.append(card)

# 直接执行洗牌,不赋值
random.shuffle(deck)

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

额外优化

  • 原代码里的i变量没有实际作用,可以直接删除
  • 用range(1,14)替代while循环生成牌面值,代码更简洁易读

内容的提问来源于stack exchange,提问作者Sabresong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:35:26