我建设,我想实现的 STV(转移单票)表决。我用OpenSTV表决方案之前,取得了巨大成功,但我从来没有编程使用它。

OpenSTV谷歌代码调用项目计划书的Python脚本允许OpenSTV的使用从其他应用程序:

import sys
sys.path.append("path to openstv package")

from openstv.ballots import Ballots
from openstv.ReportPlugins.TextReport import TextReport
from openstv.plugins import getMethodPlugins

(ballotFname, method, reportFname) = sys.argv[1:]

methods = getMethodPlugins("byName")
f = open(reportFname, "w")

try:
    b = Ballots()
    b.loadUnknown(ballotFname)
except Exception, msg:
    print >> f, ("Unable to read ballots from %s" % ballotFname)
    print >> f, msg
    sys.exit(-1)

try:
    e = methods[method](b)
    e.runElection()
except Exception, msg:
    print >> f, ("Unable to count votes using %s" % method)
    print >> f, msg
    sys.exit(-1)

try:
    r = TextReport(e, outputFile=f)
    r.generateReport();
except Exception, msg:
    print >> f, "Unable to write report"
    print >> f, msg
    sys.exit(-1)

f.close()

有我从我的C#ASP.NET MVC网站作出这样的Python的电话吗?一个办法

如果这样,如何?

提前感谢!

有帮助吗?

解决方案

这里是关于如何从C#调用IronPython的一个很好的例子,包括传递参数和返回结果;当然,你必须作出这样的代码放到一个函数,用ballotFnamereportFname作为参数。

其他提示

最好的办法可能是使用IronPython的。请参阅此答案获取的起点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top