我有一个python脚本读取从C#传递的数据表。但是,当我尝试在python脚本中获取变量的值..它不提取值。此问题仅适用于float类型的变量。当我尝试 实例获取(在Python脚本) “ERRORRATE” 的价值,它返回0.0值仅..虽然actaule值为37.55无法从C#窗口中的python脚本获得浮点值应用程序
// C#脚本
// dt is datatable from C# being passed to python
var engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
ScriptRuntime runTime = Python.CreateRuntime();
ScriptEngine pyEngine = runTime.GetEngine("py");
MemoryStream ms = new MemoryStream();
scope.SetVariable("dt",dtmp);
runTime.IO.SetOutput(ms, new StreamWriter(ms));
ScriptSource ss = pyEngine.CreateScriptSourceFromString(
txtPythonCode.Text.Trim(),
SourceCodeKind.Statements);
ss.Execute(scope);
dynamic v1 = scope.GetVariable("Error");
dynamic v3 = scope.GetVariable<float>("ErrorRate");
string str = ReadFromStream(ms);
// Python script
import clr
clr.AddReference('System.Data')
from System import Data
from System.Data import DataTable
TW = "Button1"
TotalCnt =0;
ErrorRate = 0.0;
Error =0;
# Function definition is here
def GetErrorRate(erate,total):
ErrorRate = float(erate/TotalCnt)*100
print("Error rate - ",float(erate/TotalCnt)*100);
return;
for row in dt.Rows:
if TW == row[3]:
print("TotalCnt - ",TotalCnt)
elif row[3]=="X":
TotalCnt = TotalCnt +1
elif row[3]=="Y":
TotalCnt = TotalCnt +1
elif row[3]=="Z":
TotalCnt = TotalCnt +1
elif row[3]==" Wire":
print()
else:
TotalCnt = TotalCnt +1
Error = Error +1
GetErrorRate(Error,TotalCnt)
真的不知道可能是什么原因的问题。
至。如果'erate'和'TotalCnt'都是整数,那么'erate/TotalCnt'将使用**整数**除法计算,所以在执行**之前必须将其中至少一个转换为float **师。 – 2014-09-10 10:34:37