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

编写Python掷骰子模拟函数时出现TypeError报错如何解决?

错误原因及修复方案

错误原因

你遇到的TypeError: 'function' object is not iterable报错由两个问题共同导致:

  1. 代码行print(sum(Rolldice))直接将Rolldice函数对象作为参数传给sum(),没有调用函数,sum方法要求传入可迭代的数值集合,不支持直接处理函数对象。
  2. 你当前定义的Rolldice函数仅实现了打印单次掷骰子点数的逻辑,没有返回任何可以用来统计总和的数值或可迭代对象,就算正确调用也无法完成求和计算。
    另外你的输入提示文案、顺序和预期输出示例不匹配,也需要调整。

修复方案

修改逻辑

  • 调整输入顺序和提示文案,匹配预期示例的交互逻辑
  • 重写Rolldice函数,每次掷骰子时将点数存入列表,函数最终返回该列表,既可以逐行打印点数,也可以直接对返回的列表求和

修复后完整代码

import random

# 调整输入顺序和文案,匹配预期交互
p = int(input("How many players are rolling dice? "))
r = int(input("How many dice does each player roll? "))
s = int(input("How many sides does each die have? "))

def Rolldice(sides, dice_count):
    roll_results = []
    for _ in range(dice_count):
        point = random.randint(1, sides)
        print(point)
        roll_results.append(point)
    return roll_results

for player_num in range(1, p+1):
    print(f"Player {player_num} rolled:")
    results = Rolldice(s, r)
    print(f"That totals: {sum(results)}")

运行上述代码即可得到你给出的预期输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:45:03