1

我正在构建一个 ASP.NET MVC (C#) 站点,我想在其中实现STV ( Single Transferable Vote ) 投票。我以前曾将 OpenSTV 用于投票场景,并取得了巨大的成功,但我从未以编程方式使用它。

OpenSTV Google Code 项目提供了一个 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 调用?

如果是这样,怎么做?

提前致谢!

4

2 回答 2

4

是一个关于如何从 C# 调用 IronPython 的好例子,包括传递参数和返回结果;当然,您必须将该代码制作成一个函数,并带有ballotFnamereportFname作为其参数。

于 2010-06-09T03:55:24.277 回答
3

最好的方法可能是使用 IronPython。请参阅此答案作为起点。

于 2010-06-09T00:47:13.017 回答