Python

全284件中1~20件表示
  • Pythonで木構造を実装したいのですが…

    以下は、リストを使った木構造として保存した英文から自動で英語の問題を生成するプログラムの部品の試作品なのですが、もう少し良い実装方法などはありませんか? 特に、保存された英文の構造が複雑になるにつれてdepthの値を深くする必要があるのですが、その際にいちいちコードを修正する必要があるのです。 今回はやむを得ず、コピペなどの単純作業のみで「できるだけ簡単に」コードをいじれるように組んだのですが、もう少し自動的に拡張する方法などはありませんか?後からトラブルが出そうで怖いです。 import random case1 = [[[f'I have :{[1,0,0,5]}'],[f'I want :{[1,0,0,5]}']], [["a","b","c"],["an apple and pen.","a pen.",f':{[0,2,3,3]}:of which face is:{[1,2,1,3]}']], [[":a cat",":a dog",":a robot"],[":black.",":cute.",":white."]]] depth = 0 box_idx = random.randint(0,len(case1[depth]))-1 idx = 0 out = [] # idx_cache,clause_index = [0],0 a_sentence = "".join(case1[depth][box_idx][idx]) # for i in range(5): for selected in a_sentence.split(":"): if "[" in selected: print("if1",selected) nxt_idx_Ws = eval(selected) #リストが出てくる box_idx,Ws = nxt_idx_Ws[0],nxt_idx_Ws[1:] if depth+1 < 3: depth += 1 a_sentence = "".join(random.choices(case1[depth][box_idx],k=1,weights = Ws)) print(depth,a_sentence, "= depth, a_sentence") for selected in a_sentence.split(":"): if "[" in selected: print("if2",selected) nxt_idx_Ws = eval(selected) #リストが出てくる box_idx,Ws = nxt_idx_Ws[0],nxt_idx_Ws[1:] if depth+1 < 3: depth += 1 a_sentence = "".join(random.choices(case1[depth][box_idx],k=1,weights = Ws)) print(depth,a_sentence, "= depth, a_sentence") for selected in a_sentence.split(":"): if "[" in selected: print("if3",selected) nxt_idx_Ws = eval(selected) #リストが出てくる box_idx,Ws = nxt_idx_Ws[0],nxt_idx_Ws[1:] if depth+1 < 3: depth += 1 a_sentence = "".join(random.choices(case1[depth][box_idx],k=1,weights = Ws)) print(depth,a_sentence, "= depth, a_sentence") else: print("else3:selected = ",selected) out.append(selected) print(out,"= out") else: print("else2") out.append(selected) print(out,"= out") else: print("else1") out.append(selected) print(out,"= out") out = " ".join(out).replace(" "," ").replace(" "," ") print(out,"= final answear")

    • 受付中
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 0
  • pythonの木構造について質問です。

    以下は、英文の構造を分解し、簡易的な木構造を作る事で英文を確率的に探索するためのコードなのですが、(自動で英語の問題を作るコードの部品の試作品です。) これと同様の機能を、より良く実装する方法があれば教えてください。 (例えば別の関数を使った方が効率が良いなど) import random lsts0_i = f'I have :{1,2,3,2}' lsts1 = [["a","b","c"],["an apple and pen.","a pen.",f'a cat of which face is :{1,2,1,3}']] lsts2 = [["a","b","c"],["black.","cute.","white."]] for i in range(5): lsts1_idx_Ws = "".join(lsts0_i.split(":")[1]).replace("(","").replace(")","").replace(" ","").split(",") sentences1 = lsts1[int(lsts1_idx_Ws[0])]#リスト1の中身 Ws1 = list(map(int,lsts1_idx_Ws))[1:] selected1 = "".join(random.choices(sentences1,k=1,weights=Ws1)) #リスト0からリスト1の情報を取り出す。 if ":" in selected1: lsts2_idx_Ws = "".join(selected1.split(":")[1]).replace("(","").replace(")","").replace(" ","").split(",") sentences2 = lsts2[int(lsts2_idx_Ws[0])]#リスト2の中身 Ws2 = list(map(int,lsts2_idx_Ws))[1:] selected2 = "".join(random.choices(sentences2,k=1,weights=Ws2)) #リスト1からリスト2の情報を取り出す。 print("".join(lsts0_i.split(":")[0]+selected1.split(":")[0])+selected2) break else: print("".join(lsts0_i.split(":")[0])+selected1) break

    • 受付中
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 0
  • pythonのsubprocessにつきまして

    いつも大変お世話になっております。 icevainと申します。 最近、pythonに挑戦し始めました。 やりたいことは、 pdfの用紙サイズをCSVファイルに出力することです。 Ghostscriptを使ってみたのですが、 期待どおりにはいきません。 ここから import subprocess cmd = r"C:\gs\gs9.56.1\bin\gswin64c.exe" \ + " -q" \ + " -sFile=" \ + r"D:\Program_factory\Python\_development\GGG\test.pdf" \ + " -dDumpMediaSizes " \ + r"C:\gs\gs9.56.1\lib\pdf_info.ps" \ + " > " \ + "SIZE.CSV" print(cmd) subprocess.run(cmd.split(),shell=True) ここまで 【実行結果】 SIZE.CSVが出力され、中身は下記となっておりました。 ここから Error: /invalidfileaccess in --file-- Operand stack: (D:\\Program_factory\\Python\\_development\\GGG\\test.pdf) (r) Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1990 1 3 %oparray_pop 1989 1 3 %oparray_pop 1977 1 3 %oparray_pop 1833 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- Dictionary stack: --dict:765/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:18/128(L)-- Current allocation mode is local Last OS error: Permission denied Current file position is 15143 ここまで お分かりの方おりましたらご教授して頂けませんでしょうか。 よろしくお願いいたします

    • 締切済み
    • 困ってます
    • icevain
    • Python
    • 回答数 3
  • 14行目がおかしい?

    いつもお世話になりありがとうございます。 下記プログラムにてタイトルの通り、メッセージが出ます。 どうおかしいのでしょうか? ご回答のほど宜しくお願い申し上げます。 from cgitb import text import tkinter window = tkinter.Tk() window.title('足し算') window.minsize(400,400) Entry1=tkinter.Entry(font=("ゴシック",20),width=5,bg='blue') Entry1.place(x=30,y=65) textplace=tkinter.Label(font=("ゴシック",20),text='+') textplace.place(x=120,y=65) Entry2=tkinter.Entry(font=("ゴシック",20),width=5,bg='blue') Entry2.place(x=160,y=65) text2=tkinter.Label(font=("ゴシック",20),text='=') text2.place(x=250,y=65) kotae_text=tkinter.Label(text"",font=("ゴシック",20)) kotae_text.place(x=300,y=65) button=tkinter.Button(text='結果は?',font=("ゴシック",20),bk='blue',activebackground="blue") button.place(x=150,y=150) def kekka(): suuji1=Entry1.get() suuji1=int(suuji1) suuji2=Entry2.get() suuji2=int(suuji2) kotae_text['text']=suuji1+suuji2 button['command']=kekka window.mainloop()

    • ベストアンサー
    • 困ってます
    • KOUZOU2
    • Python
    • 回答数 1
  • Pythonの実行結果は?

    Javaだと、javac、javaでコンパイルなどしてたと思います。 Pythonはどうするのですか?

    • ベストアンサー
    • 困ってます
    • KOUZOU2
    • Python
    • 回答数 2
  • 統計学 データサイエンス 何に使えますか?

    自分は現在大学でデータサイエンス(統計学を中心に)を学んでおり(https://ai-trend.jp/basic-study/#basic)具体的にはこちらのサイトに掲載してあるようなことを勉強しています。ですが、実際の実務にどう生かせるのかいまいちピンとこず、モチベーションが湧かないです。特に○○検定とか、○○分布とか、Pythonを使うと簡単に図を作れますみたいなのばかりで… アプリだったり、ウェブサイトとかを作れることと関連はあるのでしょうか? このような勉強することでなにができるようになったり、どんな職業の人が使っているとかございましたらご享受いただきたいです。宜しくお願いします。

    • ベストアンサー
    • 困ってます
    • yamahb
    • Python
    • 回答数 3
  • pythonで、if文の内容がなぜか無視されます。

    下記のコードはファイルの内容を手動で修正するためのコードです。 間違えて入力せずにボタンを押してしまった時のために、入力文の長さが一定以下の時に書き込みを自動停止するようプログラムしたいのですが、実行した際になぜかif文の内容が無視され、うまくいきません。 これは仕様ですか? pythonのコードは上から下に向けて実行されるんじゃないんですか? def manual_set(): frw_w = open("weight.txt", "w+") w = frw_w.read() print(w) w_next = input("set the w") if len(w_next) <10: #誤作動防止 print(len(w_next),"Alart") frw_w.close() else: print(len(w_next)) frw_w.write(w_next) frw_w.close()

    • ベストアンサー
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 1
  • Pythonで作業フォルダを迅速に指定する方法

    Pythonの作業フォルダの効率的な設定方法についてお尋ねします。 シェルやプロンプトでcdコマンドで作業フォルダに入っていってもいいのですが、エクスプローラで作業したいフォルダを開いてshift+右クリックでシェルを呼び出すことができます。これは便利です。ところが、Pythonの場合、そのシェルから起動することができません。Pythonの環境を実現するシェルが別にあります(トラブルにならないようにシェルが別になっているのだと思います)。Pythonのシェルはエクスプローラから呼び出すことができないです(Python install時に環境変数PATHなどの変更が非推奨と関係してますね)。 そのためPythonで作業するとき作業フォルダを指定するのが面倒なのです(深いフォルダで日本語だったりする)。Jupyter notebookでも同じくシェルで作業フォルダに入って行ってそこで起動しています。Spyderは昔のRAD環境のようなGUIなので画面上に作業フォルダ等の指定ができますが。 他言語(C,Java)の場合、エクスプローラで作業フォルダの指定、そこでのシェルの呼び出し、code . でVScodeとかシェルの再呼び出し...編集・コンパイル..ということで作業環境の立ち上げが早いです。 以上、Pythonで作業するときの作業フォルダを迅速に指定する方法について教えて頂きたいのですが。小さいことですが、1つ面倒だと億劫になってしまいます。 よろしくお願いします。 以下のような環境です。 OS:Windwos10,11、 Python:Anaconda

  • コードの書き方

    import math import cmath import numpy as np import matplotlib.pyplot as plt def multi_reflection(n1, n2, n3, theta1_deg, d, wavelength): #calculation theta1_rad = math.radians(theta1_deg) #屈折角の算出 theta2_rad = math.asin(n1/n2*math.sin(theta1_rad)) theta2_deg = math.degrees(theta2_rad) theta3_rad = math.asin(n2/n3*math.sin(theta2_rad)) theta3_deg = math.degrees(theta2_rad) #位相差 delta = 4 * cmath.pi * n2 * d * math.cos(theta2_rad)/ wavelength r12s = (n1 * math.cos(theta1_rad) - n2 * math.cos(theta2_rad)) / (n1 * math.cos(theta1_rad) + n2 * math.cos(theta2_rad)) #t12s = 2 * n1 * math.cos(theta1_rad) / (n1 * math.cos(theta1_rad) + n2 * math.cos(theta2_rad)) r23s = (n2 * math.cos(theta2_rad) - n3 * math.cos(theta3_rad)) / (n2 * math.cos(theta2_rad) + n3 * math.cos(theta3_rad)) r12p = (n2 * math.cos(theta1_rad) - n1 * math.cos(theta2_rad)) / (n2 * math.cos(theta1_rad) + n1 * math.cos(theta2_rad)) #t12p = 2 * n1 * math.cos(theta1_rad) / (n2 * math.cos(theta1_rad) + n1 * math.cos(theta2_rad)) r23p = (n3 * math.cos(theta2_rad) - n2 * math.cos(theta3_rad)) / (n3 * math.cos(theta2_rad) + n2 * math.cos(theta3_rad)) delta_j = complex(0, delta) Rs = (r12s + r23s * cmath.exp(delta_j))/(1 + r23s * r12s * cmath.exp(delta_j)) Rs = abs(Rs) * abs(Rs) Rp = (r12p + r23p * cmath.exp(delta_j))/(1 + r23p * r12p * cmath.exp(delta_j)) Rp = abs(Rp) * abs(Rp) if wavelength == 1000: print("-------input parameters-------") print("theta1={0} deg".format(theta1_deg)) #print("n1={0}, n2={2}".format(n1, n2)) print("-------output@1000nm-------") print("theta2_deg={0} deg".format(theta2_deg)) #計算チェック完了 print("Rp={0}".format(Rp)) #水の反射率は再現 print("Rs={0}".format(Rs)) #水の反射率は再現 return [Rp, Rs] #parameters #wavelength = 1000 #nm wavelength = np.arange(900, 1500, 1) n1 = 1 theta1_deg = 0 n2 = 1.5 d = 210 #nm n3 = 3.6 Rs = [] Rp = [] for s in wavelength: Rs.append(multi_reflection(n1, n2, n3, theta1_deg, d, s)[1]) Rp.append(multi_reflection(n1, n2, n3, theta1_deg, d, s)[0]) plt.plot(wavelength, Rp) plt.ylabel('R') plt.ylim(0, 1) plt.xlabel('wavelength nm') plt.show()

    • 締切済み
    • 困ってます
    • masics
    • Python
    • 回答数 1
  • pythonで命令にない文字列の置換が起こります。

    画像のpythonのコードでは文字列trueを参照しながら誤ったスペルの文字列 f の要素 f[i] をtrue[i]で置き換えようとしているのですが、なぜかtrueの要素が変換されてしまいます。 どうしたら直りますか?

    • ベストアンサー
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 3
  • 文字列置換について

    4901777␣品名A␣規格A␣日付␣␣␣␣␣6280␣␣␣␣7780 4901879␣品名B␣規格B␣日付␣␣␣␣␣6887␣␣␣␣9856 のような文字列があります。 【品名】と【規格】の間の半角空白を置換し 4901777␣品名規格␣日付␣␣␣␣␣6280␣␣␣␣7780 のように置換したいのですが正規表現ではどのように表したらいいでしょうか? ・【品名】と【規格】は全て大文字 ・【品名】と【規格】の箇所は文字列の始まり文字は不確定

    • 締切済み
    • すぐに回答を!
    • lastseven
    • Python
    • 回答数 4
  • 関数内のループ文で更新したリストについて

    関数内のループ文で更新したリストを、そのまま保存する方法はありませんか?以下のコードはリスト内部から確率的に値を取り出し、inputされた英文の正誤を元にして出題確率を制御するコードなのですが、関数tester()を実行して毎日勉強しようと思っています。 しかし、前の日に実行した結果更新された重みのリストwが次の日にはリセットされてしまうようなのです。 どうすれば、次の日に反映できますか?何らかのファイルを読み書きするようプログラムしなければなりませんか? true_ans=['those foods enable us to get nutrition even in developing countries', 'there are vast numbers of starving children or breadwinners', 'The claims about crime rates'] queries=['those foods enable us to get nutrition even [mask] developing countries', 'there are vast numb[mask] of starving child[mask] or breadwinn[mask]', 'The c[]ims about c[]me rates'] w=[] w=np.ones_like(true_ans,dtype="int8") def tester(lr=1): for i in range(5): a_Q=random.choices(queries,k=1,weights=w) str_a_Q="".join(a_Q) #choicesから出された後リスト型になっていた為、変換します。 print(a_Q,type(a_Q)) idx=queries.index(str_a_Q) in_ans = input("input answear") if in_ans == true_ans[idx]: w[idx] -= lr #正誤に基づいて単純なフィードバックで制御します。 print("t") else: w[idx] += lr*2 print("The true answere is ",true_ans[idx]) tester()

    • ベストアンサー
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 1
  • pythonのコードで原因不明のエラーが出ます。

    シーケンス型データに何かの値を掛けるよう命令した覚えはないのですが、can't multiply sequence by non-int of type 'float' というエラーが出ます。 以下は当該のコードです。 リストqueriesの中にある英文からランダムに値を出し、手で入力した回答in_ansの正誤に応じて次に出題する確率を制御するコードです。 import numpy as np import random true_ans=["those foods enable us to get nutrition even in developing countries", "there are vast numbers of starving children or breadwinners"] queries=["those foods enable us to get nutrition even [mask] developing countries", "there are vast numb[mask] of starving child[mask] or breadwinn[mask]"] for i in range(2): w=[] w=np.ones_like(true_ans) a_Q=random.choices(queries,k=1,weights=w) print(a_Q) idx=queries.index(a_Q) in_ans = input("input answear") if in_ans == true_ans[idx]: w[idx] -= 1 print(t) else: w[idx] += 2 print(f)

    • ベストアンサー
    • 困ってます
    • hf-sbf5
    • Python
    • 回答数 2
  • VBAからPythonを動かしたいのですが…

    いつもお世話になっております。 icevainと申します。 python超初心者です。 【質問】 『VBAでPythonを動かす』という興味のあるサイトを見つけました。 https://qiita.com/O_LUPAN/items/1ceb5c950ff40f3558ab サイトのpythonコード #ここから import sys def sum(suji1, suji2): return suji1 + suji2 if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで サイトのpythonコードを無理やり変更して、 #ここから import sys def sum(suji1, suji2): rst="OK" return rst if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで OKがかえってくると思ったのですが、 0がかえってきてしまいます。 OKをかえすにはどうすればよいのかわかりません。 お分かりの方おりましたらご協力お願い致します。

    • ベストアンサー
    • 困ってます
    • icevain
    • Python
    • 回答数 2
  • Pythonでのスクレイピング

    あるサイト(https://gemforex.com/login.php) のログイン後の情報をPythonで抜き出したいのですが 以下のソースコードだとログインができていないようです。 何が悪いのでしょうか? import requests email = "メールアドレス" password = "パスワード" session = requests.session() login_info = { "mail":email, "passwd":password, } url_login = "https://gemforex.com/login.php" res = session.post(url_login, data=login_info) print(res.text)

  • pythonでご質問

    こんにちは。pythonの絵解き本よんでますが、やや上のほうに 対話型インタプリンタ(p.xi)では、、という記載があり、この(p.xi) が何をさしてるのか探してます。 初歩的かもしれませんがお教えいただくと幸いです。画像参照ください。 よろしくお願いいたします

    • ベストアンサー
    • 困ってます
    • Yepes
    • Python
    • 回答数 2
  • powerAutomateで自動的に%0D%0Aが

    powerAutomateでスクレイピングのため、以下のようにアクションを設定しました 「新しいMicrosoftEDGEに移動する」アクションでウェブブラウザを開き、 「pythonスクリプトの実行」アクションで、以下のようにURLを結合 『s='https://www.youtube.com/watch?v='+'SC42pCNLoJk' print s』して %PythonScriptOutput%に値を出力 「Webページに移動します」アクションで、%PythonScriptOutput%のURLにジャンプするようにしました すると、 『URL が無効です。絶対 URL を使用していることを確認してください。: Microsoft.Flow.RPA.Desktop.Modules.SDK.ActionException: URL '%EF%BB%BFhttps://www.youtube.com/watch?v=SC42pCNLoJk%0D%0A' が無効なため、移動できませんでした。 ---> System.UriFormatException: URL が無効です。絶対 URL を使用していることを確認してください。』 というエラーがでました。 %0D%0A'という改行?を示す文字列が自動的に付与されているみたいです。 この改行を取り除く方法はありますか? 解決方法をよろしくおねがいします

    • ベストアンサー
    • 困ってます
    • aaaa012345
    • Python
    • 回答数 2
  • power automate のスクレイピング

    power automateで以下のようにアクションを作成しました 「新しいMicrosoftEDGEを起動」 「Webページ上の情報を取得します」 にて現在のURLを取得し、 「pythonスクリプトの実行」にて 『r=%WebPageProperty% print r』 と、前のアクションで得たURLを代入して出力します。 実行すると、 SyntaxError: unexpected token ':' というエラーがでてきます これは取得したURLのダブルコロンが何か悪さをしているのだろうと、エスケープキーの無効化などを調べましたが、うまくいきません 解決方法をお願いしたいです

    • ベストアンサー
    • 困ってます
    • aaaa012345
    • Python
    • 回答数 1
  • pythonのif for文の処理を複数行書きたい

    C言語などはfor if文を使うとき if(条件式){ 処理 } for(条件式){ 処理 } など中括弧を使いますが、 pythonはカッコを使わず for 条件式: 処理 などと、中括弧を使いません。 しかし for 条件式: 処理1、 処理2, 処理3… などと言った処理を書くと、処理1だけがループされ、 if 条件式: 処理1、 処理2, 処理3… だと、処理1だけがifの対象になりますよね 処理1,2,3すべてがforやifの対象になるにはどういう書き方をすればいいんでしょうか。 「for if 複数行処理」などで検索しても、or andなど複数条件などがヒットして中々探せません

    • ベストアンサー
    • 困ってます
    • aaaa012345
    • Python
    • 回答数 2
  • エディターはATOM or Code?

    Pythonを勉強するのにエディターは何がいいでしょうか? ご回答のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • 暇なときにでも
    • KOUZOU2
    • Python
    • 回答数 5