我正在建立一个我想实现STV (Single Transferable Vote) voting的ASP.NET MVC(C#)网站。之前,我曾使用OpenSTV进行投票,但取得了巨大的成功,但是我从未以编程方式使用过它。

OpenSTV Google Code project offers a Python script允许从其他应用程序使用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调用?

如果是这样,怎么办?

提前致谢!

最佳答案

Here是一个很好的示例,说明如何从C#调用IronPython,包括传递参数和返回结果。当然,您必须使用ballotFnamereportFname作为参数将代码变成一个函数。

08-19 01:59