Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x ValueError:位数必须大于零_Python 3.x_Random - Fatal编程技术网

Python 3.x ValueError:位数必须大于零

Python 3.x ValueError:位数必须大于零,python-3.x,random,Python 3.x,Random,我正在尝试编写一个关于pagerank的脚本。以下是我的脚本: from scipy import * from numpy import linalg as LA import pickle import random import operator def new_pagerank_step(current_page, N, d, links): if random.random() < 1 - d: next_page = random.randint(0

我正在尝试编写一个关于pagerank的脚本。以下是我的脚本:

from scipy import *
from numpy import linalg as LA
import pickle
import random
import operator

def new_pagerank_step(current_page, N, d, links):

    if random.random() < 1 - d:
        next_page = random.randint(0, N)

    else:
        next_page = random.choice(links[current_page])

    return next_page




def pagerank_wikipedia_demo():
    with open("wikilinks.pickle", "rb") as f:
        titles, links = pickle.load(f)
    current_page = 2
    T = 100000
    N = len(titles)
    d = 0.4
    Result = {}
    result = []
    for i in range(T):

        result.append(current_page)

        current_page = new_pagerank_step(current_page, N, d, links)

pagerank_wikipedia_demo()
从scipy导入*
从numpy进口linalg作为LA
进口泡菜
随机输入
进口经营者
定义新页面排名步骤(当前页面,N,d,链接):
如果random.random()小于1-d:
下一页=random.randint(0,N)
其他:
下一页=random.choice(链接[当前页])
返回下一页
def pagerank_wikipedia_demo():
将open(“wikilinks.pickle”、“rb”)作为f:
标题、链接=pickle.load(f)
当前页面=2
T=100000
N=len(标题)
d=0.4
结果={}
结果=[]
对于范围(T)内的i:
结果.追加(当前页面)
当前页面=新建页面排名步骤(当前页面,N,d,链接)
pagerank_wikipedia_demo()
但是,当我运行此脚本时,会收到以下消息:

Traceback (most recent call last):
  File "/usr/lib/python3.2/random.py", line 249, in choice
    i = self._randbelow(len(seq))
  File "/usr/lib/python3.2/random.py", line 225, in _randbelow
    r = getrandbits(k)          # 0 <= r < 2**k
ValueError: number of bits must be greater than zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "markov1.py", line 141, in <module>
    pagerank_wikipedia_demo()
  File "markov1.py", line 135, in pagerank_wikipedia_demo
    current_page = new_pagerank_step(current_page, N, d, links)
  File "markov1.py", line 113, in new_pagerank_step
    next_page = random.choice(links[current_page])
  File "/usr/lib/python3.2/random.py", line 251, in choice
    raise IndexError('Cannot choose from an empty sequence')
IndexError: Cannot choose from an empty sequence
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3.2/random.py”,第249行,在选项中
i=自身.(列(序号))
文件“/usr/lib/python3.2/random.py”,第225行,如下所示

r=getrandbits(k)#0请注意
random.randint(0,N)
返回一些
x
,这样
0就会抛出此错误,因为您以某种方式为random.choices提供了空列表。尝试:

random.choice([])
你会看到同样的错误


我不知道你最初的数据。但是我会看看是否有空的链接列表,如果有,用代码测试它,并设计在这种情况下需要做什么。

也许您可以打印更多的调试信息来定位异常发生的位置,并查看是否有具有意外值的变量。