Pergunta

Estou construindo um site ASP.NET MVC (C#) onde quero implementar STV (Voto transferível único) votar. Eu já usei o OpenSTV para cenários de votação antes, com grande sucesso, mas nunca o usei programaticamente.

o O OpenStv Google Code Project oferece um script python Isso permite o uso do OpenSTV de outras aplicações:

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()

Existe uma maneira de fazer uma chamada tão python no meu site C# Asp.net MVC?

Se sim, como?

Desde já, obrigado!

Foi útil?

Solução

Aqui é um bom exemplo de como chamar o IronPython de C#, incluindo argumentos passantes e resultados de retorno; Claro que você terá que transformar esse código em uma função, com ballotFname e reportFname como seus argumentos.

Outras dicas

A melhor maneira é provavelmente usar o Ironpython. Ver esta resposta para um ponto de partida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top