Come viene eseguita questa conversione JSL in base 36 in 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 ) );
Ho chiesto più volte a ChatGPT e i risultati non erano coerenti con i risultati JSL.Chiedi aiuto solo a esperti che abbiano familiarità sia con JSL che con Python.Grazie mille!
Automazione e scriptingFinestreRe: Come viene eseguita questa conversione JSL in base 36 in Python.Con quale parte hai problemi? Costruire il numero da convertire? O la conversione?
Re: Come viene eseguita questa conversione JSL in base 36 in Python.La tua comprensione di questa funzione in JSL
txt = Hex( (Today() - Informat( "01/01/1970", "mm/dd/yyyy" ) - In Hours( 8 )) * 1000 + 600000 + Day( Today() ), base( 36 ) );
come puoi calcolare lo stesso risultato in python
Inoltre non capisco Informat("01/01/1970", "mm/dd/yyyy"). Quindi non sappiamo dove si trovi la risposta di ChatGPT.
Calcola il risultato di un token, se il calcolo non è corretto. Il download POST non è possibile. Infatti, i calcoli Python non possono essere scaricati.
Grazie!
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: Come viene eseguita questa conversione JSL in base 36 in Python.Se non capisci la prima parte, devi iniziare da quella. In Format converte una stringa in un JMP datenum usando il formato/modello specificato

Che nel tuo caso è 2082844800. Inoltre, se stai usando JMP, perché dovresti eseguire la conversione in Python? Puoi semplicemente eseguire JSL in Python usando run_jsl
Re: Come viene eseguita questa conversione JSL in base 36 in Python.Ricerca Google: Python base36
fornisce quanto segue per la conversione base36, inclusa una soluzione a 2 righe utilizzando numpy.
https://stackoverflow.com/questions/1181919/python-base-36-encoding
Uno dei tanti risultati della ricerca per Python e base36.
Tieni presente che la data Epoch di Python è il 1° gennaio 1970. Se stai ottenendo il valore data grezzo di JMP, la data Epoch è il 1° gennaio 1904. Inoltre, quando esegui conversioni dirette di tempo sui secondi, assicurati di tenere conto anche degli anni bisestili.
Re: Come viene eseguita questa conversione JSL in base 36 in Python.Come viene trasmesso questo JSL in Python in Python?
Passerò semplicemente attraverso la bacheca
Grazie!

R: Come viene eseguita questa conversione JSL in base 36 in Python.Non è necessario utilizzare gli appunti per spostare informazioni tra jmp e python in JMP (ti consigliamo di leggere 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);

R: Come viene eseguita questa conversione JSL in base 36 in Python.Io non sono

R: Come viene eseguita questa conversione JSL in base 36 in Python.Il problema fondamentale che ti sfugge è che l'ambiente JSL e l'ambiente Python hanno ambiti di variabili diversi. In JSL, i nomi vanno nello spazio dei nomi globale quando Names Default To Here(0); o non specificato. Sono nello spazio dei nomi 'here' quando Names Default To Here(1); o sono all'interno di uno spazio dei nomi particolare se scegli di creare un altro spazio dei nomi tramite JSL. Ulteriori cose speciali come :age vengono controllate se sono riferimenti di colonna della tabella dati corrente. Questo è sul lato JSL del confine. Sul lato Python, le variabili create in Python finiscono nel dizionario Python dell'ambito appropriato. Nel dizionario globals() per il corpo dello script. Ogni modulo, funzione, ... ha il suo dizionario locale. Python e JSL non condividono automaticamente le variabili tra loro. Ciò richiede un'azione da parte tua per 'inviare' una variabile JSL all'ambiente Python o 'ottenere' un valore Python di nuovo nell'ambiente JSL. A tale scopo Python Send( v ) prende il valore JSL v e crea una variabile Python denominata v con una copia del valore di v. Alcuni tipi speciali come tabelle di dati e matrici vengono passati come riferimento all'oggetto effettivo anziché come copia. Ma la maggior parte dei valori viene visualizzata come una copia. jV = Python Get( pV ) ; Cerca la variabile pV nell'ambiente Python e copia il valore nella variabile JSL jV.
Come ha detto @jthi , c'è molta documentazione JMP che parla di questa funzionalità. La capacità send() / get() è stata fondamentale con l'integrazione Python a partire da JMP 14. Si prega di dedicare del tempo all'esplorazione della nostra documentazione e degli script di esempio. L'indice di scripting trovato dal menu Aiuto è la documentazione JMP integrata per JSL e Python. All'interno dell'indice di scripting, "Tutte le categorie" mostra tutto, con un campo di ricerca accanto. La ricerca di Python mostrerà rapidamente tutte le funzionalità JSL Python con descrizioni ed esempi eseguibili. Se si sceglie la categoria "Python", filtra per mostrare tutte le nuove funzionalità JMP 18+ supportate dall'ambiente Python. Qui troverete descrizioni ed esempi eseguibili che mostrano la funzionalità del lato JMP 18+ Python dell'integrazione. Infine, dall'ambiente Python, sono state utilizzate stringhe di documentazione in modo da poter utilizzare la funzionalità di aiuto integrata di Python. help( jmp.DataTable ) per esempio



Come hai scoperto, la flessibilità dei pacchetti Python ti consente di creare i tuoi modi di passare i dati. Passare del tempo con la nostra documentazione e i campioni forniti. Giocarci e imparare come funzionano, ti aiuterà molto a chiarire come utilizzare al meglio l'integrazione Python di JMP.
Per inciso, usare Chat GPT o altri strumenti di intelligenza artificiale per scrivere codice è veramente utile solo se sai come dovrebbe funzionare il codice. È come fidarsi di un articolo di un sito web, devi sapere abbastanza di come funzionano le cose (Python, JSL, ...) per avere un'idea se il codice che ottieni è accurato, quasi funzionante, coglie i concetti correttamente o è solo una disinformazione completa. Infine, la conoscenza dell'intelligenza artificiale dell'attuale integrazione Python di JMP 18+ è probabilmente molto inferiore alle informazioni su JMP 14-17 semplicemente a causa della novità di JMP 18. Sono sicuro che la migliore fonte di informazioni sia la nostra documentazione, il nostro indice di scripting e le directory $SAMPLE_SCRIPTS incluse.
Re: Come viene eseguita questa conversione JSL in base 36 in Python.Grazie Paolo !

Re: Come viene eseguita questa conversione JSL in base 36 in Python.Grazie Esperti!
OK

Re: Come viene eseguita questa conversione JSL in base 36 in Python.Ho due domande per gli esperti:
1. Come concatenare due tabelle JMP in Python?
2, come si può modificare il seguente Python nella forma di esecuzione asincrona Python Asyncio?
Grazie Esperti!
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="">Non ho ancora una risposta.</SPAN><SPAN class="">In attesa dell'aiuto di un esperto.</SPAN>
Re: Come viene eseguita questa conversione JSL in base 36 in Python.Ho chiesto più volte a ChatGPT e il framework asyncio di Python è scritto in questo modo
Ma l'esecuzione è sempre infruttuosa.
Chiedi aiuto a un esperto nella tua comunità.
Grazie!
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())