eval还可以输出矩阵,按input要求输入[p1,p2,...]后,type(p)是list。
要求概率>0,<1,且概率和为1。
import numpy as np
p = eval(input("请输入事件的p(x):[p1,p2,...],默认排序为a1,a2,...:"))
SUM = 0
if sum(p) != 1:
print("概率分布错误")
for i in p:
if i > 1 or i <= 0:
print("概率分布错误")
else:
h = -np.log2(i)* i #计算单个值
SUM = SUM + h #求和就是熵
print("H的值是:",SUM)