使用C#进行用户输入,然后将python输出显示到C#

使用C#进行用户输入,然后将python输出显示到C#,python,c#,Python,C#,我很抱歉,如果这可能是一个现有的问题,但我有一个很难执行这一点 我有一个简单的python代码,它要求用户输入一个数字并将其乘以2 userInput = int({sys.argv[1]}) pythonOutput = userInput * 2 print("The number passed is: ", pythonOutput) 我想让用户在C#Winforms中输入数字,然后在C#中显示结果。因此,python代码的用户输入所需的数字将来自C#,然后pytho

我很抱歉,如果这可能是一个现有的问题,但我有一个很难执行这一点

我有一个简单的python代码,它要求用户输入一个数字并将其乘以2

userInput = int({sys.argv[1]})
pythonOutput = userInput * 2
print("The number passed is: ", pythonOutput)
我想让用户在C#Winforms中输入数字,然后在C#中显示结果。因此,python代码的用户输入所需的数字将来自C#,然后python代码的输出将显示在C中#

这是我目前的C代码

编辑:

我更新了python和c#代码,现在可以使用c#在python中传递值,但在发送整数时,出现了此错误

回溯(最近一次呼叫最后一次): 文件“C:\Users\chesk\Desktop\Work Files\Project\Thermal Camera\PythonForC\SimpleInputOutput.py”,第8行,在userInput=int({sys.argv[1]})中 TypeError:int()参数必须是字符串、类似于对象的字节或数字,而不是“set”

最终编辑: 因此,事实证明c代码确实在工作,但我需要修改我的python代码。就是这样

userInput = int(sys.argv[1])
pythonOutput = userInput * 2
print("The number passed is: ", pythonOutput)
希望这能帮助别人

C#代码看起来不错。我认为问题在于python代码,因为它要求用户输入。但是您已经将该数字作为命令行参数传递给python脚本,因此它不需要请求用户输入。相反,您应该使用传递给python脚本的参数

以下是一个例子:

import sys
print(f"The number passed by c# was: {sys.argv[1]}")
您可以结帐以获取更多信息

编辑:

已将sys.argv[0]更改为sys.argv[1]-谢谢Roy Cohen


改为f字串-谢谢Roy Cohen

谢谢你的回答!我用现有的C#代码尝试了与您上面提到的完全相同的代码,但是StandartOutput仍然返回null。并且出现了一个错误。它说的是回溯(最近一次调用last):文件“SimpleInputOutput.py”,第10行,打印(f“传递的号码是:{sys.argv[1]}”)索引器:列表索引超出范围您当前的代码是什么?你能编辑你的问题吗?嗨,阿德拉斯!我修改了c3和python代码,这使我能够将数据从c#传递到python,反之亦然,但遇到了新的错误。请查看我的更新代码。这是错误的:
userInput=int({sys.argv[1]})
。你不应该有花括号,因为它们会把你的字符串变成一个集合。解决你的问题做得很好。只是一个想法。您是否考虑过使用通信插座来代替?这样,您就可以在Winform启动时将python脚本作为服务运行。它允许您轻松地将其扩展到更复杂的数据类型,并提供性能提升?我对这个有点陌生,所以我创造了我认为最简单的方法。
import sys
print(f"The number passed by c# was: {sys.argv[1]}")