Comment cette conversion JSL en base 36 est effectuée en Python.
txt = Hex( (Today() - Informat( "01/01/1970", "mm/dd/yyyy" ) - In Hours( 8 )) * 1000 + 600000 + Day( Today() ), base( 36 ) );
a = Today();
b = Informat( "01/01/1970", "mm/dd/yyyy" );
c = In Hours( 8 );
d = Day( Today() );
e = (a - b - c) * 1000 + 600000 + d;
f = Hex( (a - b - c) * 1000 + 600000 + d, base( 36 ) );
J'ai demandé à ChatGPT plusieurs fois et les résultats étaient incompatibles avec les résultats JSL.Demandez de l’aide uniquement à des experts qui connaissent à la fois JSL et Python.Merci beaucoup!
Automatisation et scriptsFenêtresRe : Comment cette conversion JSL en base 36 est effectuée en Python.Quelle partie vous pose problème ? La construction du nombre à convertir ? Ou la conversion ?
Re : Comment cette conversion JSL en base 36 est effectuée en Python.Votre compréhension de cette fonction en JSL
txt = Hex( (Today() - Informat( "01/01/1970", "mm/dd/yyyy" ) - In Hours( 8 )) * 1000 + 600000 + Day( Today() ), base( 36 ) );
comment pouvez-vous calculer le même résultat en python
Je ne comprends pas non plus Informat("01/01/1970", "mm/dd/yyyy"). Nous ne savons donc pas où se trouve la réponse de ChatGPT.
Il calcule le résultat d'un jeton, si le calcul n'est pas correct. Le téléchargement POST n'est pas possible. En fait, les calculs Python ne peuvent pas être téléchargés.
Merci!
ChatGPT
import datetime
# Step 1: Current time (China's East 8 time zone)
now = datetime.datetime.now()
# Step 2: Date of January 1, 1970
epoch = datetime.datetime(1970, 1, 1)
# Step 3: Calculate the difference in seconds between the current time and January 1, 1970, and subtract 8 hours
time_diff = (now - epoch).total_seconds() - (8 * 3600)
# Step 4: Convert the time difference to milliseconds, add 600,000, and add today's day of the month
milliseconds = time_diff * 1000
e = milliseconds + 600000 + now.day
# Step 5: Convert the result to a base-36 representation
def to_base36(num):
chars = '0123456789abcdefghijklmnopqrstuvwxyz'
base36 = ''
while num > 0:
num, i = divmod(int(num), 36)
base36 = chars[i] + base36
return base36
# Output the base-36 value
result = to_base36(e)
print("Python calculated result:", result)
# Output the current precise timestamp
print("Current timestamp:", now)Re : Comment cette conversion JSL en base 36 est effectuée en Python.Si vous ne comprenez pas la première partie, vous devez commencer par celle-ci. Dans Format, convertit une chaîne en un numéro de date JMP en utilisant le format/modèle spécifié

Dans votre cas, cela correspond à 2082844800. De plus, si vous utilisez JMP, pourquoi effectueriez-vous la conversion en Python ? Vous pouvez simplement exécuter JSL en Python à l'aide de run_jsl
Re : Comment cette conversion JSL en base 36 est effectuée en Python.Recherche Google : Python base36
donne ce qui suit pour la conversion en base36, y compris une solution sur 2 lignes utilisant numpy.
https://stackoverflow.com/questions/1181919/python-base-36-encoding
L'un des nombreux résultats de recherche pour Python et base36.
Sachez également que la date d'époque de Python est le 1er janvier 1970. Si vous obtenez la valeur de date brute de JMP, la date d'époque est le 1er janvier 1904. De plus, lorsque vous effectuez des conversions de temps directes sur les secondes, assurez-vous de prendre également en compte les années bissextiles.
Re : Comment cette conversion JSL en base 36 est effectuée en Python.Comment ce JSL en Python est-il transmis à Python ?
Je vais juste parcourir le tableau de collage
Merci!

Re : Comment cette conversion JSL en base 36 est effectuée en Python.Il n'est pas nécessaire d'utiliser le presse-papiers pour déplacer des informations entre jmp et python dans JMP (nous vous suggérons de lire https://www.jmp.com/support/help/en/18.0/#page/jmp/python.shtml# ).
import jmp
txt = "initial";
print(txt);
jmp.run_jsl("""
txt = "hello world";
Python Send(txt);
""")
print(txt);

Re : Comment cette conversion JSL en base 36 est effectuée en Python.Je ne suis pas

Re : Comment cette conversion JSL en base 36 est effectuée en Python.Le problème fondamental qui vous échappe est que l'environnement JSL et l'environnement Python ont des portées de variables différentes. Dans JSL, les noms entrent dans l'espace de noms global lorsque Names Default To Here(0); ou non spécifié. Ils sont dans l'espace de noms 'here' lorsque Names Default To Here(1); ou ils sont dans un espace de noms particulier si vous choisissez de créer un autre espace de noms via JSL. D'autres éléments spéciaux comme :age sont vérifiés s'il s'agit de références de colonnes de la table de données actuelle. Cela se situe du côté JSL de la limite. Du côté Python, les variables créées en Python se retrouvent dans le dictionnaire Python de la portée appropriée. Dans le dictionnaire globals() pour le corps du script. Chaque module, fonction, ... a son propre dictionnaire local. Python et JSL ne partagent pas automatiquement les variables entre eux. Cela nécessite une action de votre part pour « envoyer » une variable JSL à l'environnement Python ou « récupérer » une valeur Python dans l'environnement JSL. À cette fin, Python Send( v ) prend la valeur JSL v et crée une variable Python nommée v avec une copie de la valeur de v. Quelques types spéciaux comme les tables de données et les matrices sont transmis comme référence à l'objet réel au lieu d'une copie. Mais la plupart des valeurs apparaissent comme une copie. jV = Python Get( pV ) ; Recherche la variable pV dans l'environnement Python et copie la valeur dans la variable JSL jV.
Comme @jthi l'a mentionné, il existe de nombreuses documentations JMP qui parlent de cette fonctionnalité. La capacité send() / get() a été fondamentale avec l'intégration Python à partir de JMP 14. Veuillez prendre le temps d'explorer notre documentation et nos exemples de scripts. L'index de scripts trouvé dans le menu Aide est une documentation JMP intégrée pour JSL et Python. Dans l'index de scripts, « Toutes les catégories » affiche tout, avec un champ de recherche à côté. La recherche de Python affichera rapidement toutes les fonctionnalités JSL Python avec des descriptions et des exemples exécutables. Si vous avez choisi la catégorie « Python », elle filtre pour afficher toutes les nouvelles fonctionnalités JMP 18+ prises en charge par l'environnement Python. Vous trouverez ici des descriptions et des exemples exécutables montrant les fonctionnalités du côté JMP 18+ Python de l'intégration. Enfin, à partir de l'environnement Python, des chaînes de documentation ont été utilisées pour que vous puissiez utiliser la fonctionnalité d'aide intégrée de Python. help( jmp.DataTable ) par exemple



Comme vous l'avez constaté, la flexibilité des packages Python vous permet de créer vos propres méthodes de transmission de données. Passez du temps à étudier notre documentation et les exemples fournis. Jouez avec eux et apprenez comment ils fonctionnent, cela contribuera grandement à clarifier la meilleure façon d'utiliser l'intégration Python de JMP.
En passant, utiliser Chat GPT ou d'autres outils d'IA pour écrire du code n'est vraiment utile que si vous savez comment le code est censé fonctionner. C'est comme faire confiance à un article de site Web, vous devez en savoir suffisamment sur le fonctionnement des choses (Python, JSL, ...) pour avoir une idée de si le code que vous obtenez est précis, presque fonctionnel, intègre les concepts correctement ou est simplement une désinformation complète. Enfin, les connaissances de l'IA sur l'intégration actuelle de JMP 18+ Python sont probablement beaucoup plus limitées que les informations sur JMP 14-17 simplement en raison de la nouveauté de JMP 18. Je suis convaincu que la meilleure source d'informations est notre documentation, notre index de scripts et les répertoires $SAMPLE_SCRIPTS inclus.
Re : Comment cette conversion JSL en base 36 est effectuée en Python.Remercier Paul !

Re : Comment cette conversion JSL en base 36 est effectuée en Python.Merci les experts !
D'ACCORD

Re : Comment cette conversion JSL en base 36 est effectuée en Python.J'ai deux questions pour les experts :
1. Comment concaténer deux tables JMP en python ?
2, comment le python suivant peut-il être modifié en forme d'exécution asynchrone python asyncio ?
Merci les experts !
import jmputils
import jmp
from datetime import datetime, timedelta
today = datetime.today()
dates = []
for i in range(200):
dates.append((today - timedelta(days=i)).strftime('%Y%m%d'))
j = 0
for date in dates:
#print(date)
j += 1
jmp.run_jsl('''
b=Python Get(date);
d1=New Table("o",Add Rows(1),New Column("date",Set Values({b})));
Python Send(d1)
''')
#print(d1)
jmp.run_jsl('''
j=Python Get(j);
//b=Python Get(d1);
if(j==1,d2=d1;d2<<SETNAME></SETNAME><SPAN class="">Je n'ai toujours pas de réponse.</SPAN><SPAN class="">Dans l’attente de l’aide d’un expert.</SPAN>
Re : Comment cette conversion JSL en base 36 est effectuée en Python.J'ai demandé à ChatGPT plusieurs fois, et le framework asyncio de Python est écrit comme ceci
Mais l’exécution est toujours infructueuse.
Demandez l’aide d’experts dans votre communauté.
Merci!
import asyncio
import concurrent.futures
import jmp
# Define a global variable kk
kk = 1
# Create an asynchronous function to run the JSL script
async def run_jsl_script():
global kk
loop = asyncio.get_event_loop()
# Simplified JSL script
jsl_script = f'''
Print("Value of kk: {kk}");
b = Python Get({kk});
Print("Value of b: ", b);
d1 = New Table("o", Add Rows(1), New Column("date", Set Values({{b}})));
if (b == 1,
d2 = d1;
d2 << Set Name("Name 2");
Print("Table d1 copied to d2 with new name.");
,
current data table(d2);
d2 << Concatenate(Data Table(d1), Append to first table);
Close(d1, nosave);
);
Python Send(d1);
'''
# Print the JSL script content for debugging
print("JSL script to be executed:")
print(jsl_script)
try:
# Use a thread pool to run the synchronous JSL script
with concurrent.futures.ThreadPoolExecutor() as pool:
# Call jmp.run_jsl function
await loop.run_in_executor(pool, lambda: jmp.run_jsl(jsl_script))
except Exception as e:
print(f"Error occurred: {e}")
# Update the kk variable
kk += 1
print(f"Current value of kk: {kk}")
# Main asynchronous function
async def main():
# Example of running the JSL script multiple times
for _ in range(3): # For example, run three times
await run_jsl_script()
print("All JSL scripts executed.")
# Run the main function
if __name__ == "__main__":
asyncio.run(main())