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

为何Python楼层模拟函数返回全0而非随机数?

问题分析与修复方案

我来帮你找出代码的问题并完成修复!你的函数返回全0列表的核心原因是没有将楼层计算的结果重新赋值给变量f,另外还有几处语法和逻辑细节需要调整,具体梳理如下:

主要错误点

  • 未更新f的实际值:比如f-1只是执行了减法运算,但没有把运算结果存回f,导致f一直保持初始的0值。正确写法应该是f = f - 1或者简写f -= 1,同理f+1和f + randint(1,6)都需要赋值操作。
  • 条件判断逻辑不严谨:if numb is 1 or 2不符合Python的逻辑判断规则,应该明确判断numb等于1或等于2;同时is用于判断对象同一性,判断数值相等应该用==,用in关键字会更简洁。
  • 缺少随机函数的导入:代码里用到了randint,但没有导入random模块,这会导致运行报错。

修正后的代码

from random import randint

def roll(): 
    f = 0 
    arry = [] 
    count = 0 
    # 用count < 100比判断is not更直观,避免count出现非预期值的问题
    while count < 100:  
        numb = randint(1,6) 
        if numb in (1, 2):  # 简洁判断numb是1或2
            f -= 1  # 等价于f = f -1,更新楼层值
        elif numb in (3, 4, 5): 
            f += 1  # 更新楼层值
        else:  # numb等于6的情况
            f += randint(1,6)  # 随机加1-6层,同时赋值给f
        count += 1 
        arry.append(f) 
    return arry 

效果验证

调用这个函数后,你会得到一个长度为100的列表,每个元素都是根据随机数计算出的楼层变化值,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:55:29