Python 3.x ValueError:位数必须大于零
我正在尝试编写一个关于pagerank的脚本。以下是我的脚本: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
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([])
你会看到同样的错误
我不知道你最初的数据。但是我会看看是否有空的链接列表,如果有,用代码测试它,并设计在这种情况下需要做什么。也许您可以打印更多的调试信息来定位异常发生的位置,并查看是否有具有意外值的变量。