python库中的"非整数arg 1 for randrange()"

Jab*_*ama 1 python random python-3.x

我用随机数发生器从5到10做随机数.不能这么难吗?我以前在代码中使用它(+ 2000行代码,这里太多了)并且没有发生编码错误.

我的代码只是我的游戏的复活节彩蛋,但它打破了我的所有代码:

...
def slowp(t):       
    for l in t:
        sys.stdout.write(l)
        sys.stdout.flush()
        x=random.randint(0.1,0.9)
        time.sleep(x)
    print("")

if act=="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>":
    slowp("Hey, that is hello world made in brainfuck!")
...
Run Code Online (Sandbox Code Playgroud)

act是一个字符串,其值由用户提供act=str(input("type here.")).它直接在这部分之前完成.

错误信息:

Traceback (most recent call last):
  File "startgame.py", line 2084, in <module>
    slowp("Hey, that is hello world made in brainfuck!")
  File "startgame.py", line 140, in slowp
    x=random.randint(0.1,0.9)
  File "/usr/lib/python3.4/random.py", line 216, in randint
    return self.randrange(a, b+1)
  File "/usr/lib/python3.4/random.py", line 180, in randrange
    raise ValueError("non-integer arg 1 for randrange()")
ValueError: non-integer arg 1 for randrange()
Run Code Online (Sandbox Code Playgroud)

实际问题是什么?

Mar*_*ers 11

您正尝试将浮点值传递给random.randint().该函数只占整数.

你需要使用这个random.uniform()功能 ; 它会在下限和上限之间产生一个均匀的随机值(包括):

返回随机浮点数N,使得对于<= b,a <= N <= b,对于b <a,b <= N <= a.

演示:

>>> import random
>>> random.uniform(0.1, 0.9)
0.6793304134926453
Run Code Online (Sandbox Code Playgroud)