Sharing Variables between Python and HPppl - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Sharing Variables between Python and HPppl (/thread-18380.html) |
Sharing Variables between Python and HPppl - matalog - 05-17-2022 01:33 PM How can I share a string variable between a Python program and a HPppl program? Can I run a PPL program, from a Python program with pplname(var), if I had a ppl program called pplname, and had generated a variable var in the Python program? RE: Sharing Variables between Python and HPppl - roadrunner - 05-17-2022 02:49 PM Does this: from hpprime import * eval("pplprogram(variables)") do what you want? -road RE: Sharing Variables between Python and HPppl - matalog - 05-17-2022 03:26 PM It doesn't seem to. Code: ans is my final variable from the python program, but that above code (without # or not) doesn't print RQ7(ans) or run it, it takes a long time to run and I would have seen it. RE: Sharing Variables between Python and HPppl - roadrunner - 05-17-2022 03:45 PM I think you will have to store ans as a prime variable first: from hpprime import * eval("primevariable:=" + str(ans)) eval("pplprogram(primevariable)") see if that works. RE: Sharing Variables between Python and HPppl - roadrunner - 05-17-2022 03:52 PM Or you could also do: eval("pplprogram(" + str(ans) + ")") if you don't want to create an extra variable in home. -road RE: Sharing Variables between Python and HPppl - matalog - 05-17-2022 11:34 PM Sorry, I'm not sure I am following your tips. I have a Python program that creates a string variable called ans on the same calculator that I have a hpppl program that can process the rest of the things needed to complete. If I can bring that ans variable to my HPPPL program then I will have done what I need to do. Lets say that the Python variable comes from a program called py. The Program it will go to is called hp. How can I get the variable ans, from py to hp? As a failsafe, can you please tell me how I should refer to this variable in the HPPPL program? Thanks for the help. RE: Sharing Variables between Python and HPppl - roadrunner - 05-18-2022 01:21 AM Sorry, i did not realize ans was a string (even though your first post states it very clearly). That makes it a little more tricky, but: from hpprime import * eval("primevar:=\"" + ans + "\"") should give you a home variable called primevar that contains whatever string is stored in ans. Then you can run your ppl program with: eval("pplprogram(primevar)") -road RE: Sharing Variables between Python and HPppl - Guenter Schink - 05-19-2022 03:43 PM (05-17-2022 01:33 PM)matalog Wrote: How can I share a string variable between a Python program and a HPppl program? No, you can't because PYTHON and HOME don't know anything of each other but ... I do not pretend to really KNOW how these things are working. But from tinkering around I've got some findings that should help. Let me elaborate a bit on this. About hpprime.eval(): it is important to understand that this function only passes on a string to the HOME environment which must be syntactically correct. Therefore you need to ensure the string is understood. A statement like pplname(var) can't do anything because neither pplname nor var have any meaning except perhaps in their environment where they were created. There are methods however to communicate between PYTHON and HOME environments, of which I'll explain the path from PYTHON to HOME consider these two code snippets, first a PPL program Code: EXPORT test(arg1) Let's now create a PYTHON program to see how to interface using hpprime.eval() Code: from hpprime import * Now a close look to the statement: ttt=eval('test('+'"'+arg1+'"'+')') ttt is the variable that receives what is returned from <test(arg1)> eval calls this function with a rather complicated argument. As explained earlier you have to provide a string that's understood by HOME. This is achieved by enclosing it in single quotes. But as you can see there's a lot of almost not discernible quoting. Step by step. Code: eval('test(' is starting the string Sounds complicated, no? The double quotes enclosed in single quotes ensure that the content of arg1 is passed on to the home environment as a string, rather than as a variable name which doesn't exist and would raise an error Conclusion: for using hpprime.eval() you have to create a string that's understood by the home environment. It is important to use single and double quotes as demonstrated in this example because HOME environment has a different interpretation of single quotes. Elsewhere I have already shown that a function: Code: def string(arg): If you got it wrong then ttt will respond with "Error: Syntax Error" Now I'll have a break, but later I'll talk about using AVars which is another way to have PYTHON and HOME exchange contents. Stay tuned HTH Günter RE: Sharing Variables between Python and HPppl - Guenter Schink - 05-19-2022 07:40 PM Synchronizing vars in PYTHON and HOME This can be done by using AVars. Create this PPL Program Code: EXPORT test(arg1) Code: from hpprime import * Günter RE: Sharing Variables between Python and HPppl - Ioncubekh - 10-20-2022 06:57 AM Lucky me. I registered on this forum for this particular issue |