我刚收到一条前所未见的大错误信息,这是什么意思?

时间:2017-11-30 13:07:37

标签: python error-handling

Traceback (most recent call last):
  File "C:\Users\happy\Documents\Python\Python Hangman Files\Python Hangman EXE.py", line 253, in <module>
    wordchoice = randint(0, len(words)-1)
  File "C:\Users\happy\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 220, in randint
    return self.randrange(a, b+1)
  File "C:\Users\happy\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 198, in randrange
    raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (0,0, 0)

我收到了这个错误,而且我不知道它的含义或代码有什么问题,提前感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

看起来len(words)为0,因此len(words) - 1为-1,因此random无法生成范围内的数字。我不能确定如何解决这个问题,因为我没有你的代码。

答案 1 :(得分:1)

我猜你使用的函数randint()使用randrange()而没有给出数字范围 - 而且无效。 你应该像这样使用它:

random.randrange ([start],stop [,step])

例如:

random.randrange(1,1000)

将为您提供1到1000之间的数字。

random.randrange(1,1000,2)

会做同样的事情,但跳跃为2(I.e.1,3,5 ......)

答案 2 :(得分:1)

我相信你已经有了问题的原因。确实words为空,而randrange()方法don't handle this kind of input

您可以随时检查您的变量(在这种情况下为words)是否为空,只需使用:

if len(words) > 0:
    wordchoice = randint(0, len(words)-1)