1
def wordjumble(Wordlist, Hintlist, score):
    wordchoice = getword(Wordlist, Hintlist)
    high = len(wordchoice)
    low = -len(wordchoice)
    for i in range(10):
        position = random.randrange(high,low)
        print wordchoice[position]
    score = wordguess(wordchoice, score)
    return score

我收到一个值错误,我的任务是获取高低之间的随机数。我的错误在哪里?

这是回溯:

Traceback (most recent call last): 
File "E:\Programming\Python\Worksheet 15\test.py", line 54, in
wordjumble(Wordlist, Hintlist, score) 
File "E:\Programming\Python\Worksheet 15\test.py", line 49, in wordjumble
position = random.randrange(high,low) 
File "E:\Portable Python 2.7.2.1\App\lib\random.py", line 217, in
randrange raise ValueError, "empty range for randrange() (%d,%d, %d)"
% (istart, istop, width) ValueError: empty range for randrange() (7,-7, -14)
4

5 回答 5

3

换行

        position = random.randrange(high,low)

        position = random.randrange(low,high)

ETA:此代码还有其他问题。如果wordchoice是一个单词(如getword函数所暗示的那样),那么您的循环正在做的是在-len(wordchoice)和之间选择一个随机数len(wordchoice)-1。如果您试图从单词中获取一个随机字母,那么在0and之间做一个随机数会更简单len(wordchoice)-1,甚至更简单random.choice(wordchoice)

看起来循环正在从单词中挑选 10 个随机字母并打印它们(每个字母在单独的行上)。这意味着使用这个词the最终会出现“混乱”,例如:

h
t
t
e
h 
e
t
e
t
e

这总是有 10 个字母,并且不保证它使用单词的每个字母一次(这可能是你的混乱所必需的)。如果您不想选择 10 个替换字母,而是希望它通过更改字母的顺序来混淆单词(正如函数标题所暗示的那样wordjumble),请查看这个问题以获得一个好的解决方案。

于 2012-05-29T14:40:54.287 回答
2

你得到一个错误,因为你在网上颠倒了论点:

 position = random.randrange(high,low)

它应该是:

 position = random.randrange(low,high)

建议:大多数 python 参考文档都显示了代码示例。首先检查它们,因为它们可能会立即帮助您:
http ://docs.python.org/library/random.html

亲切的问候,

于 2012-05-29T14:40:48.137 回答
0
   random.randrange([start], stop[, step])
   Return a randomly selected element from range(start, stop, step). This is equivalent to          choice(range(start, stop, step)), but doesn’t actually build a range object.
于 2012-05-29T14:37:34.217 回答
0

一般来说,范围是用lowto给出的high,你想检查randrange 文档

您可以在 Python Number randrange() 函数中找到简单的使用示例

于 2012-05-29T14:38:42.233 回答
0

替换high,lowlow,high

def wordjumble(Wordlist, Hintlist, score):
    wordchoice = getword(Wordlist, Hintlist)
    high = len(wordchoice)
    low = -len(wordchoice)
    for i in range(10):
        position = random.randrange(low,high)
        print wordchoice[position]
    score = wordguess(wordchoice, score)
    return score
于 2012-05-29T14:47:31.560 回答