問題の説明:Pythonで書かれた次のメソッドのパラメータを呼び出すためにC#を使用して、戻り値を取得したいです。
DEF Quadratic_Equations(A、B、C): D = B ** 2-4 * A * C ANS = [] ans.append(( -b + math.sqrt(D))/(2 * )) ANS。追記(( -b-math.sqrt(D))/(2 * )) 戻り ANS
C#のコードは次のとおりです。
クラスプログラム { 静的 ボイドメイン(文字列[]引数) { 文字列名= 「CallPythonExam.py 」。 リスト < ストリング > PARAM = 新しいリスト< ストリング >(){ " 3 "、" 5 "、" 1 " }。 RunPythonScript(名前、PARAM)。 } 静的 無効 RunPythonScript(文字列名、リスト< 文字列 > { プロセスP = 新しい新しいプロセス(); // の.pyファイルの絶対パス 文字列のパス= @ " D:\ PythonPrograms \ VelocityProfile \ VelocityProfile \ " + 名、 文字列引数= パス; //は、パラメータを追加 するforeach(VARの項目に引数を) 引数 + = " " + 項目; // Pythonのインストールパス p.StartInfo.FileName = @ "C:\プログラムファイル(x86の)\のMicrosoft Visual Studioの\共有\ Python36_64 \ python.exeで" ; // 以下は、私が.......ダウンインターネットから直接コピーするものである p.StartInfo.Arguments = 引数; / / 有効にしませんシェルの起動プロセス p.StartInfo.UseShellExecuteは= 偽; p.StartInfo.RedirectStandardOutput = trueに、 p.StartInfo.RedirectStandardInput = trueに、 p.StartInfo.RedirectStandardError = trueに; // 新しいウィンドウ作成せずに p.StartInfo.CreateNoWindowを= trueに。 p.Start(); StreamReaderをSR = p.StandardOutput。 しばらく(!sr.EndOfStream) Console.WriteLineを(sr.ReadLine()); Console.ReadLine(); p.WaitForExit(); } }
次のようにPythonのコードは次のとおりです。
インポート数学 インポートSYS DEF Quadratic_Equations(STRA、STRB、STRC): = フロート(STRA) B = フロート(STRB) C = フロート(STRC) D = B ** 2-4 * C ANS = [] ANS。追記(( -b + math.sqrt(D))/(2 * )) ans.append(( -b-math.sqrt(D))/(2 * )) プリント(ANS [0]) 印刷(ANS [1 ]) #の戻りSTR(ANS [0]) Quadratic_Equations(sys.argvの[ 1]、sys.argvの[2]、sys.argvの[3])
式のこのソリューションは、画面に出力することができます。