この JSL から 36 進数への変換が 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 ) );
ChatGPT に何度か問い合わせましたが、結果は JSL の結果と一致しませんでした。JSL と Python の両方に精通している専門家にのみ支援を求めてください。どうもありがとうございます!
自動化とスクリプトウィンドウズRe: この JSL から 36 進数への変換が Python でどのように行われるか。どの部分に問題があるのでしょうか? 変換する数値の構築ですか? それとも変換ですか?
Re: この JSL から 36 進数への変換が Python でどのように行われるか。JSLのこの機能について理解していますか?
txt = Hex( (Today() - Informat( "01/01/1970", "mm/dd/yyyy" ) - In Hours( 8 )) * 1000 + 600000 + Day( Today() ), base( 36 ) );
Pythonで同じ結果を計算するにはどうすればよいですか
また、Informat("01/01/1970", "mm/dd/yyyy")も理解できません。そのため、ChatGPTの回答がどこにあるかわかりません。
計算が正しくない場合はトークンの結果を計算します。POST ダウンロードはできません。実際、Python の計算はダウンロードできません。
ありがとう!
チャットGPT
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: この JSL から 36 進数への変換が Python でどのように行われるか。最初の部分が理解できない場合は、そこから始めてください。Formatでは、指定された形式/パターンを使用して文字列をJMP datenumに変換します。

あなたの場合は2082844800です。また、JMPを使用している場合、なぜPythonで変換を実行するのでしょうか?run_jslを使用してPythonでJSLを実行できます。
Re: この JSL から 36 進数への変換が Python でどのように行われるか。Google 検索: Python base36
numpy を使用した 2 行のソリューションを含む base36 変換については、次のようになります。
https://stackoverflow.com/questions/1181919/python-base-36-encoding
Python と base36 の多数の検索結果の 1 つ。
また、Python のエポック日付は 1970 年 1 月 1 日であることも理解してください。JMP の生の日付値を取得している場合、エポック日付は 1904 年 1 月 1 日です。また、秒単位で直接時間変換を行う場合は、うるう年も考慮するようにしてください。
Re: この JSL から 36 進数への変換が Python でどのように行われるか。Python のこの JSL はどのようにして Python に渡されるのでしょうか?
貼り付けボードを見ていきます
ありがとう!

Re: この JSL から 36 進数への変換が Python でどのように行われるか。JMP では、jmp と python の間で情報を移動するためにクリップボードを使用する必要はありません ( 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: この JSL から 36 進数への変換が Python でどのように行われるか。私は

Re: この JSL から 36 進数への変換が Python でどのように行われるか。あなたが見逃している根本的な問題は、JSL 環境と Python 環境の変数のスコープが異なることです。JSL 内では、Names Default To Here(0); または指定されていない場合、名前はグローバル名前空間に入ります。Names Default To Here(1); の場合、名前は 'here' 名前空間にあります。または、JSL 経由で別の名前空間を作成することを選択した場合は、特定の名前空間内にあります。:age などのその他の特別なものは、現在のデータ テーブルの列参照であるかどうかがチェックされます。これは境界の JSL 側です。Python 側では、Python で作成された変数は、適切なスコープの Python 辞書に入ります。スクリプト本体の globals() 辞書内です。各モジュール、関数、... には独自のローカル辞書があります。Python と JSL は、変数を自動的には共有しません。そのため、JSL 変数を Python 環境に '送信' するか、Python 値を JSL 環境に '取得' する操作が必要です。この目的のために、Python Send( v ) は JSL 値 v を受け取り、v の値のコピーを含む v という名前の Python 変数を作成します。データ テーブルやマトリックスなどのいくつかの特殊な型は、コピーではなく実際のオブジェクトへの参照として渡されます。ただし、ほとんどの値はコピーとして渡されます。 jV = Python Get( pV ); Python 環境で pV 変数を検索し、その値を JSL 変数 jV にコピーします。
@jthiが述べたように、この機能について説明している JMP ドキュメントはたくさんあります。send() / get() 機能は、JMP 14 以降の Python 統合の基本となっています。ドキュメントとサンプル スクリプトをじっくりご覧ください。ヘルプ メニューから見つかるスクリプト インデックスは、JSL と Python 用の組み込み JMP ドキュメントです。スクリプト インデックス内の「すべてのカテゴリ」にはすべての内容が表示され、その横に検索フィールドがあります。Python を検索すると、すべての JSL Python 機能が説明と実行可能なサンプルとともにすぐに表示されます。「Python」カテゴリを選択した場合は、Python 環境からサポートされているすべての新しい JMP 18+ 機能を表示するようにフィルターされます。ここでは、統合の JMP 18+ Python 側の機能を示す説明と実行可能な例が見つかります。最後に、Python 環境からは、ドキュメント文字列が利用されているため、Python の組み込みヘルプ機能を使用できます。たとえば、help( jmp.DataTable ) です。



ご存知のとおり、Python パッケージの柔軟性により、独自のデータ受け渡し方法を作成できます。提供されているドキュメントとサンプルをじっくりとご覧ください。それらを実際に操作して機能を学ぶことで、JMP の Python 統合を最大限に活用する方法が明確になります。
余談ですが、Chat GPT やその他の AI ツールを使用してコードを記述することは、コードがどのように動作するかを知っている場合にのみ本当に役立ちます。Web サイトの記事を信頼するのと同じように、取得したコードが正確か、ほぼ機能しているか、概念が正しいか、または完全に偽情報であるかを判断するには、物事がどのように機能するか (Python、JSL など) を十分に理解している必要があります。最後に、現在の JMP 18+ Python 統合に関する AI の知識は、JMP 18 が新しいため、JMP 14-17 に関する情報よりもはるかに少ない可能性があります。最良の情報源は、ドキュメント、スクリプト インデックス、および付属の $SAMPLE_SCRIPTS ディレクトリであると確信しています。
Re: この JSL から 36 進数への変換が Python でどのように行われるか。感謝 ポール!

Re: この JSL から 36 進数への変換が Python でどのように行われるか。専門家の皆さん、ありがとう!
わかりました

Re: この JSL から 36 進数への変換が Python でどのように行われるか。専門家の方々に2つの質問があります。
1. Python で 2 つの JMP テーブルを連結するにはどうすればよいですか?
2、次の python を python asyncio 非同期実行形式に変更するにはどうすればよいですか?
専門家の皆さん、ありがとう!
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="">まだ答えは出ていません。</SPAN><SPAN class="">専門家の助けを期待しています。</SPAN>
Re: この JSL から 36 進数への変換が Python でどのように行われるか。ChatGPTに何度か聞いたところ、Pythonのasyncioフレームワークは次のように書かれているそうです
しかし、実行は常に失敗します。
あなたのコミュニティの専門家に助けを求めてください。
ありがとう!
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())