获取Nonetype()<=int()

2024-09-28 19:23:27 发布

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

我的代码生成的随机加权数是

但是,我得到了一个错误

output expected .05 output received .06

问题在于eval_autograder(n),但如何修复它以显示直方图?在


Tags: output错误eval直方图代码生成expectedreceivedautograder
2条回答

随机数的范围与ifelif语句中测试的范围不匹配。random.randint在其参数之间生成一个随机数,包括两个端点。另一方面,一个range包含其起始值,但不包含其结束值。在

randint生成数字100时,if不会检测到它,因此您会从函数的底部掉下来,Python将返回None。这就是为什么稍后在代码中出现错误的原因。在

快速修复方法是使用random.randrange,而不是random.randint。这将生成一个0-99范围内的随机数,这是您的代码检查的内容。在

进一步的改进可能是根本不使用range,因为您可以简单地进行少于比较的操作来获得相同的效果:

def autograder():
    i = randrange(0,100) # changed function here, generates numbers 0-99
    if i < 45:
        return randint(90,100)
    elif i < 80:
        return randint(80,89)
    elif i < 95:
        return randint(70,79)
    else: # this catches i < 100, but we don't need to specify it exactly
        return randint(0,69)

我保留了返回值,但是如果您不希望返回值同时包含0和{},那么您可能还希望将第一个randint更改为randrange(或者只调整边界)。在

以下是“无”的来源:

>>> 100 in range(95,100)
False
>>> 

相关问题 更多 >