1 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 05:22:25.24 ID:IpHIsox4.net] 当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがあるのでそっち池。 「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合は、 表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。 【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意! Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので ↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式サイト◇ www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 くだすれPython(超初心者用) その51【まず1嫁】 https://mevius.5ch.net/test/read.cgi/tech/1602896738/ 次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい) ### END OF TEMPLATE ###
404 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 09:25:13.35 ID:wJ3JIqDy.net] >>396 くわしく
405 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 09:29:15.28 ID:dM4oOJoS.net] スイッチのONOFFに連動してアクション起こすものを作ってみたくてほぼ期待通りの挙動させられるようになったのですが、たぶんimportで他.py呼び出す時にエラー?になります。 スイッチONになればその都度実行してほしいのですが、一度きりしか実行されません。 importで呼び出す場合は回数制限のようなものがあるのでしょうか?
406 名前:デフォルトの名無しさん [2021/02/08(月) 10:17:14.59 ID:WsHYblSd.net] どんなエラーがでてるか、そのまま貼った方がいいと思うな
407 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 10:58:40.46 ID:hgsCKB/O.net] importの実行は一度だけ なので関数にして都度実行
408 名前:デフォルトの名無しさん [2021/02/08(月) 12:17:07.33 ID:5JxS4RLe.net] 「importで他.py呼び出す時」 「importで呼び出す」 perlじゃないから考え方を変えろ
409 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:27:47.27 ID:yv+/ZfUq.net] Pythonのimportは、COBOLのCOPYと同じと考えて良いですかね ソースのその箇所に埋め込む感じの
410 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:44:47.59 ID:5KN+Fjzm.net] >>409 全然違う importは対象のモジュールがまだ現在のプロセスで読み込まれていない場合は読み込み、現在のスクリプトファイル内で使用できるようにする COBOLの知識とか害悪でしかないから今すぐ全部忘れろ
411 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 13:10:02.10 ID:dM4oOJoS.net] >>406 夜になりますが、そうしてみます。 while true: if switch == true: import action01 print("action01") flag = true else: import action02 print("action02") flag = false みたいなコードで、printによる表示は正常にされていても、importでは呼び出せてないような挙動でした。エラーを吐いてるわけではありません。 >>407 ありがとうございます。 関数とimportの違いもわからないので、調べてきます。 >>408 プログラミングは昔Cのポインタで挫折したタイプなんでよくわかってません。
412 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 14:02:52.07 ID:hgsCKB/O.net] >>409 >>411 Pythonのimportは名前空間にパッケージ名を登録してるだけ import package # プロセスの名前空間にパッケージ名を登録 package.function() # packageに書いた関数を使う import時、プロセス内に同じ名前のパッケージ名があれば読み込み不要だからキャンセルされる なので >>405 のように一度しか実行されないってことになります
413 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:22:57.82 .net] pandasのdropってディープコピーってことは dropするたびに変数に入れないといけないってことですよね? データフレームが大きいときその辺り気にしなければいけないのでしょうか
414 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:54:54.09 ID:0fSH6U0R.net] Ruby でも、require・load は異なる require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。 require はライブラリのロード、load は設定ファイルの読み込みなどに使う つまり、ライブラリ・モジュールの読み込みは、1回で良いけど、 設定ファイルは再読み込みする事がある
415 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:10:14.07 ID:Ar0nSnLQ.net] >>413 IOに比べたらカスみたいなもんだからどうでもいい 実際遅かったら直せばよい
416 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:50:16.85 ID:wJ3JIqDy.net] 推奨NGワード: Ruby
417 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:18:46.00 .net] >>415 なるほどありがとうございます とりあえずはまとめられる処理はできる限り一つにまとめてみます
418 名前:404 [2021/02/08(月) 21:40:53.51 ID:TgcbDI6H.net] 正解なのかはわかりませんが、なんとか期待通りの動きをするようになりました。 元々のコード:ttp://codepad.org/RgfCqXLD 変更後:ttp://codepad.org/C9YTzwaU スイッチがONになったら反応、OFFでもう1つのアクション。 ついでにキャンセルもできるようにしようとするとフラグを2つ立てないとうまくいかなかったので、無駄に長くなってしまった気がします。 もしお暇でしたらアドバイス貰えれば幸いです。
419 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:44:11.22 ID:XWqxRkjb.net] >>404 悪いがオリジナルは既に消えている。 が、どういうソート順なのか調べた人がいた。 それの紹介記事は残っていた https://atsushieno.hatenadiary.org/entry/20050704/p2 webアーカイブに残っているかなぁ?
420 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:22:53.64 ID:XWqxRkjb.net] >>419 アーカイブされていた https://web.archive.org/web/19990224184613/www.asahi-net.or.jp/~ez3k-msym/comp/acccoll.htm
421 名前:デフォルトの名無しさん [2021/02/08(月) 23:57:12.05 ID:qlvhc88X.net] 親切な方誰か教えてください。 Python始めたいんだけど、どのバージョンをダウンロードしたらいいんでしょうか? 勉強用に買った本には3.6.Xをダウンロードしろと書いてあるんだけど、どうせ始めるなら最新の3.9から始めるのがいいんでしょうか?
422 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:03:22.35 ID:Vys7ayWD.net] 3.6で始めて欲しい機能が最新版にしかなかったら その時移行する
423 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:05:25.90 ID:9lYAN9ot.net] 仮想環境があるから正直どうでもよい
424 名前:デフォルトの名無しさん [2021/02/09(火) 00:08:54.47 ID:gY4wTt7u.net] >>422 422 ありがとう。とりあえず3.6で初めてみます
425 名前:デフォルトの名無しさん [2021/02/09(火) 00:33:28.54 ID:D2eLzUKh.net] 3.9でいいよ ・・・と言いたいが外部のライブラリが対応できていないものもまだ多いから3.8を勧める 3.6にあってそれ以降無くなった機能あったっけな?
426 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 01:08:10.84 ID:WN7fm/D8.net] 3.8だと思うように動作しないライブラリあったから3.6に戻した それ以来,ずっと3.6
427 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 01:23:34.91 ID:iwKT59GY.net] 3を指定すると3.7.8か3.7.9あたりになるのが多い気がするからその辺が互換的にもよさそう
428 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 08:41:41.04 ID:ArPH6UCx.net] >>419-420 読んでたら頭痛くなってきた… これMSがちゃんと仕様公開しなきゃ駄目だよなぁ…
429 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 09:16:09.94 ID:oB9H/ghx.net] 教えていただきたいのですが、 tkinterでプログラムのスタートとストップボタンを作ったのですが、処理中は画面がフリーズしてしまいます。 tkinterは非同期モジュールらしく、 これを他のGUIモジュールに変えるとフリーズしなくなりますでしょか?
430 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 09:21:39.36 ID:LMsNGPvT.net] 非同期なのにフリーズするっておかしくね?
431 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 10:20:06.37 ID:fLSeggtA.net] >>429 コード見てみないとなんともだけど 非同期のコードかかずにwhileで回してるだけになってるとか
432 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 11:42:31.22 ID:oB9H/ghx.net] すみません、非同期とかよくわかっていなかったです。 ボタンが全く押せず、ブレークでwhile文から抜けるしかない状況です import tkinter as tk import tkinter.messagebox import time def start(): global stop_flag timer_time = time.time() while stop_flag == False: txt.insert(tkinter.END,str(time.time()-timer_time)) if time.time()-timer_time >5: txt.insert(tkinter.END,str(time.time()-timer_time)) break def stop(): global stop_flag stop_flag=True stop_flag = False root = tk.Tk() root.geometry("200x150+30+600") end_button = tk.Button(root, text = "START", command =start) end_button.place(x = 5, y = 10) end_button = tk.Button(root, text = "STOP", command =stop) end_button.place(x = 5, y = 40) txt = tk.Entry(width=20) txt.insert(tk.END,"0") txt.place(x = 5, y = 70) root.mainloop()
433 名前:デフォルトの名無しさん [2021/02/09(火) 11:59:05.97 ID:ngdRC2S+.net] >>418 まずはこんな感じのswitch文を使うような状態遷移にした方がいいんじゃね pythonにはswitchは無いからif-elseでやるしかないけど 不変でコンパクトならswitch〜caseで状態遷移したっていい|Marupeke-IKD|note https://note.com/marupeke296/n/n62c1c4643931 11.リアルタイム制御とステートマシン https://www2.denshi.numazu-ct.ac.jp/lego/NXT/nxtOSEK/2_kiso/realtime.html
434 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:05:59.09 ID:YRe7Jw73.net] pandasで列aと列bの各値同士の計算結果を同じデータフレームに代入しようと思い df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]], columns=['a','b','c']) df['c-a'] = df[['a','c']].diff(axis=1)['c'] と、してみましたが['c']が納得いきません 列ラベル名があるときも[:1]みたいに取り出したいのですがエラーでした
435 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:12:01.53 ID:YRe7Jw73.net] 訂正 >df['c-a'] = df[['a','c']].diff(axis=1)['c'] df['c-a'] = df[['c','a']].diff(axis=1)['a'] でした この['c','a']の順は保証されるのかも気になります
436 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:19:02.92 ID:Vys7ayWD.net] >>432 sleep(0.1) txt.update()
437 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:20:02.81 ID:YRe7Jw73.net] df['c-a'] = df[['c','a']].diff(axis=1).iloc[:,-1] 適当にやっていたらこれでいけました・・ >>434 ,435
438 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 13:43:29.24 ID:3rwMtM14.net] >>432 start関数が5秒経つまでループしてて戻らないから Pythonに限らずGUIの場合UIを動作させるにはメインスレッドを独り占めしちゃだめなのよ >>436 みたいなやり方もあるけど sleepすらしない単純なループでの待ちは無駄にCPU使用率が上がるだけなので避ける 時間経過はタイマーイベントを使う 時間がかかる処理は別スレッドにする という方向で考えた方がいいよ
439 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 15:54:12.06 ID:oB9H/ghx.net] >>436 さん、>>438 さん ありがとうございます。 タイマーイベント?を調べてみます
440 名前:デフォルトの名無しさん [2021/02/09(火) 19:52:16.41 ID:F09oemYA.net] tesseractの他にocrのライブラリってありますか? 教えて下さい。よろしくお願いします。
441 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 20:42:00.18 ID:A4TUXs3r.net] >>433 ありがとうございます。もうちょっとちゃんと勉強してみます。
442 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 22:37:06.14 ID:48/GVgda.net] Pathlibで特定のフォルダ以下のファイルを全てglobして 全てのファイルに対して特定の処理をし その後別のフォルダにディレクトリ構造を維持しつつ保存していきたいです フォルダ構造を維持しつつ保存するために hoge_dir - base_dir みたいなものをしてPathの差分だけを取得したいのですが、そういった関数は無いのでしょうか?
443 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 22:48:35.91 ID:48/GVgda.net] Path(os.path.relpath)で出来ました
444 名前:デフォルトの名無しさん [2021/02/10(水) 00:20:56.79 ID:3asw//Zv.net] relative_to() ドキュメント、読もう!
445 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 07:56:31.78 ID:lV7BodTW.net] イテレータを使わなければならない状況がきてようやく仕組みがちょっと理解できた 今までfor inで回せばほとんどのことに対処できてたので、どこで使うんそれって感じやったけど やっぱり必要になって使うべき場面がこないと覚わらんね
446 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 08:02:53.10 ID:0JH6aNHf.net] 使わなくても実装は出来るけどな。
447 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 11:18:29.15 ID:4pogzqlY.net] PySide2のQDialogをESCで閉じさせない方法ってありますかね 調べても出てこない
448 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 12:24:44.38 ID:QctJSG9o.net] >>445 イテレータイマイチ使うシーンが想像できんわ
449 名前:デフォルトの名無しさん [2021/02/10(水) 13:05:03.29 ID:3asw//Zv.net] 頭から順に処理するならイテレーター 値は取り出すまで評価されない リストは生成時に全要素が評価、展開されるから、長いとメモリを圧迫する
450 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 13:27:54.75 ID:2MYUAlGB.net] ジェネレータイテレーターな
451 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 13:44:33.50 ID:k3XYYQgl.net] >>448 for文使ってればイテレータ使ってる rangeでもlisyでもstrでも同じようにfor文で回せるのはイテレータのおかげ
452 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:42:03.34 ID:li7FLtWZ.net] 扱う分野で必要なもの全然違うしね 必要になったら学べば良い
453 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:19.06 ID:deHLhqxB.net] 画像比較作りたいけど おすすめのサンプルプログラムある? 二つ比較して 似ている割合みたいのとれればいいんだけど
454 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:55:11.67 ID:FCUwCs4l.net] また宗教的な話をw OPENCV,numpy.openvino のどれかを使いたまえ
455 名前:デフォルトの名無しさん [2021/02/11(木) 11:34:19.30 ID:n0GRjtoR.net] >>447 ありますよ もうちょっと頑張って調べなさい
456 名前:デフォルトの名無しさん [2021/02/11(木) 11:43:19.74 ID:n0GRjtoR.net] >>453 https://www.imagazine.co.jp/%E9%A1%9E%E4%BC%BC%E7%94%BB%E5%83%8F%E6%A4%9C%E7%B4%A2%E3%81%AE3%E3%81%A4%E3%81%AE%E6%89%8B%E6%B3%95%E3%81%A8%E7%B2%BE%E5%BA%A6%E5%90%91%E4%B8%8A%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF/ https://qiita.com/best_not_best/items/669aaa9e1b8de647d29d https://pystyle.info/opencv-match-shape/
457 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:01:49.66 ID:fibZz6ZJ.net] GUIのテキストラベルを関数内で変更するには、そのテキストのインスタンス生成をグローバルで実施する必要があるのでしょうか? main関数内でGUIを作成して、別の関数から呼び出そう、書き換えようとするとエラーが出てしまいます
458 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:42:10.00 ID:fibZz6ZJ.net] 追記です もともとメインだけのプログラムだったのですが、処理部などを分けていくにあたって、上記問題となりました。 ボタンやテキストラベルが多いため、GUIだけでも分離できたらなと思ってます。
459 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 12:56:12.11 ID:9pKWi6uS.net] エラーメッセージは飾りじゃないんだゾ ちゃんと読むんだ
460 名前:デフォルトの名無しさん [2021/02/12(金) 13:28:10.74 ID:x9NfpsA7.net] GUIってどれ使ってんの
461 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:35:33.64 ID:3wJJOYZl.net] 恥ずかしがらずに再現できるコードを出しましょう
462 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:15:13.03 ID:Xi6F12r7.net] OCR使ってみたんですが画像にちょっとシミ付いただけでめっちゃ精度落ちるんですけど
463 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:25:54.79 ID:YkYoXOlY.net] そんなもんだろ 実運用ならGoogle Vision APIとか使え
464 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 15:36:15.52 ID:Xi6F12r7.net] d つこうてみる
465 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 01:13:14.19 ID:kyaOMlKJ.net] ファイルfを新規open なにか書く *ファイルfをclose *ファイルfを追記open なにか書く *ファイルfをclose *ファイルfを追記open (これを何回か繰り返す) ファイルfをclose ていうことをやってるんだけど、*印のファイルfをclose・ファイルfを追記openをdefにしたら local variable 'f' referenced before assignment ていうエラーが出てしまいました。 defの中でf=openて書けないんでしょうけど、こういう場合て繰り返しのところをコードのマクロとか部品みたいにできないのでしょうか? ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。
466 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 01:43:32.68 ID:XqdE9YRe.net] なんていうかwith使え
467 名前:デフォルトの名無しさん [2021/02/13(土) 07:57:55.39 ID:dvbWR5uB.net] with使えっていうのは当然として、設計寄りの話としてDAOあるいはRepositoryと言われるパターンを勉強すると良い。
468 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 09:06:30.97 ID:+Dfn0XQq.net] >>465 単にコーディングミス。 エラーの意味は分かるな?
469 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 10:52:08.28 ID:PYtZn7CJ.net] >>465 Pythonの不便な点だな def まくろ(何かを書く) ファイルfを開く 何かを書く(f) ファイルfを閉じる まくろ(何かを書く1) まくろ(何かを書く2) ってやるのが定番 でもC#とかなら「何かを書く1」に直接処理を書けるけどPythonは関数を定義しないと駄目だからいまいちメリットが薄い
470 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 17:08:03.41 .net] 今どきのプログラミング https://video.twimg.com/ext_tw_video/1354709180309901313/pu/vid/720x1280/nOusy_VBfI6wXHi4.mp4
471 名前:デフォルトの名無しさん [2021/02/13(土) 17:42:30.74 ID:aD8q5Xup.net] >>465 クロージャは? def create_writer(f): __fを新規作成 __def write(s): ____fを追記open ____sを追記 ____f.close() __return write writer=create_writer(f) writer(あああ) writer(いいい)
472 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:56:29.59 ID:QOknjIyX.net] +aでopenすべし
473 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:01:49.24 ID:QOknjIyX.net] def write_to(file_path): __def write(string): ____with open(file_path, '+a') as f: ______f.write(string + '¥n') __return write write = write_to("foo.txt") write("foo") write("bar")
474 名前:デフォルトの名無しさん [2021/02/13(土) 19:56:09.70 ID:hraNkxQy.net] wrapする意味がほとんどない気がする。 都度ファイル名が変わるなら、一緒に渡す方が間違いないだろうし、 逆に固定でいいなら、定数にするか、上で出ているようにDAOに閉じ込める方がいい。
475 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 20:57:02.03 ID:PYtZn7CJ.net] ケースバイケース
476 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:05:50.85 ID:QOknjIyX.net] >>474 2つ意味がある ファイル名を意識すべきレイヤーやタイミングと 何かを書き出したいレイヤーやタイミングが常に同じとは限らないので その2つの関心事を分離できるという意味が一つ もう一つはDAOでもファイルでもいいけど それらが10個あった場合に同じコード(open/close)を10回書かなくてもいい
477 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:15:03.69 ID:OVGnVG6N.net] 質問者のレベルを考えれば毎回ファイル名を渡すほうが親切かもな 間違ってもDAOやリポジトリを持ち出すような話じゃない
478 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:19:47.12 ID:PYtZn7CJ.net] >>477 質問者はファイル名の話なんてしてない そもそも質問者は「なにか書く」をなんとかしたいと言ってるのに勝手に文字列を書くことで満足してるようなオナニー見せられて困ってるだろうな… ⇒ >>471 , >>473 その上質問者のレベルとか何様なんだよ
479 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:52:40.18 ID:De6EzIPK.net] ある時間が現在時刻より何時間経ってるかていうのを知りたいんだが from datetime import datetime d="2020/06/02 23:42" x=datetime.strptime(d, '%Y/%m/%d %H:%M') y=datetime.datetime.now() print(x,' ',y) last_time=(y-x)/3600 てやってみたんだが type object 'datetime.datetime' has no attribute 'datetime' というエラー y=datetime.now()にすると last_timeが1:42:23.156836という値 何百時間ていう数値を出せないんですか?
480 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:06:29.50 ID:Ylmwjazf.net] >>478 この逆ギレは恥ずかしいww
481 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:09:24.90 ID:Jp6Ct9sY.net] >>479 時間差はtimedeltaになる、それを数値で割るとこの場合255日を3600分割してしまうので (y - x).total_seconds() / 3600か、(y - x) / timedelta(hours=1)とかかな https://docs.python.org/ja/3/library/datetime.html#datetime.timedelta.total_seconds
482 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:14:28.96 ID:De6EzIPK.net] >>481 できました。 結構狂った言語だな。 算術計算の結果は数値で出すべきなのに。 なんかpythonて直感的じゃなくて使いにくいな。
483 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:27:47.37 ID:PYtZn7CJ.net] >>480 逆ギレとか意味わからん まあ反論できない時に低能がよく言う言葉ではあるがw
484 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:39:31.79 ID:QOknjIyX.net] >>478 ファイルに書くんだからファイル名は必要 指摘の意味がわからない テキストじゃなくバイナリで書きたいなら’+a’を’+ab’とすればいい ファイルに追記する場合はその2つのどちらかしかない
485 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:10:37.48 ID:D24G58JB.net] >>484 > ファイルに書くんだからファイル名は必要 そんなことは質問者もわかってるだろ 一応実装はできててより簡単に書きたいって話みたいだし とりあえず>>465 はまだ見てたら > ファイルfをclose・ファイルfを追記openてところが10行ぐらいの全く同じコードになってるので繰り返して書くのがキレイでない。 の部分のコードを晒した方がまともな回答が得られると思う
486 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:13:47.53 ID:aLCsI6lK.net] 見た感じcloseとopenでなにしてるかわかってないように思う
487 名前:デフォルトの名無しさん [2021/02/14(日) 02:04:56.58 ID:2SnvaGjH.net] >>478 身近にこういう奴が居なくて本当に良かった
488 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 03:15:01.82 ID:DLKN34Ks.net] おっ
489 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 04:01:51.29 ID:m6EUmtlX.net] >>485 464みたいな構造に書き直して見ました。 最初書こうとしてたコードはこういうことがしたかった。 def まくろ(何かを書く,関数名) ファイルfを開く 引数で与えられた関数名の関数を呼び出す 何かを書く(f) ファイルfを閉じる ていうのがやりたかったんだけど、関数の中に動的に別々の関数を呼び出すことなんてできないよね。 #define マクロ名(引数リスト)みたいなことができれば実現できるのに。
490 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 04:10:04.36 ID:TDUjnB7+.net] そのやり方で普通にできるよ
491 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 07:55:56.90 ID:D24G58JB.net] >>486-487 技術的な話ができないならどっかよそ行けよ… >>489 >>490 が言うように複数の関数を受け取って両方呼び出すのも普通にできる def foo(): print('foo()が呼ばれた') def bar(): print('bar()が呼ばれた') def test(f1, f2): f1() f2() test() 辺りから色々やってみればいい あと Python 関数 渡す とかでググればいいかと
492 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:46:04.70 ID:vizEsFtD.net] 最近はpythonでググると高確率で、nkmkというサイトに引っかかる そこは目次が無いため、文字ばかりの細々とした説明の中から必要なコードを探さないといけないから、とてもストレス
493 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 10:47:27.53 ID:HIb/uJW+.net] >>491 関数を呼び出すんじゃなくてソースコードをマクロ展開したいんだけど。 関数にしてしまうと変数のグローバル・ローカルという話が出てきてしまう。 単純に10行くらいのコードの一部を変えてコピーしたい。 defの関数てコードのコピーじゃないですよね?
494 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:19:31.18 ID:D24G58JB.net] >>493 なんでそんなことしたいのかよくわからんけど、m4とかのマクロプロセッサでも使えばいいんじゃね
495 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:40:02.31 ID:8wuPGef8.net] 何が言いたいのかようやくわかった。 どんだけ質問下手やねん
496 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:40:35.87 ID:AzULVuFC.net] >>492 イラストがいっぱいあって、 「今日はイテレーターの使い方だよ」 「何だか難しそう」 とかなってるサイトのほうがウザい。
497 名前:デフォルトの名無しさん [2021/02/14(日) 11:53:57.69 ID:PGTjJwEI.net] >>482 馬鹿には無理
498 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 11:56:45.92 ID:1NfnFEsp.net] >>493 デコれ
499 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:00:51.30 ID:IYZau0Ph.net] >>493 Pythonにはその機能はないんで諦めてください
500 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:05:20.73 ID:BvP4KASJ.net] >>496 「お願いします!」
501 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:09:30.76 ID:IYZau0Ph.net] >>498 デコレータって、元の関数の動作はそのまんま残し、さらに別の動作を 付け加えた関数を作り出す機能っしょ この人はコードの一部を変更したいって言ってるから無理ではないかと
502 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:12:44.45 ID:TDUjnB7+.net] >>491 >test() 関数渡してないやないかーい! >>493 変数のスコープを理解せずにプログラムは書けないので 最初のlocal variable 'f' referenced before assignmentのエラーの原因を調べたほうがいいよ 誰もが一度は通るエラーなのでググればすぐ分かる 公式のFAQにものってる
503 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:13:45.18 ID:LN4pPlYg.net] >>500 あった、これだ。 https://techacademy.jp/magazine/46444
504 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:14:42.54 ID:vizEsFtD.net] >>500 あれ、イラッとするよなw
505 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 12:21:38.55 ID:TDUjnB7+.net] >#define マクロ名(引数リスト) 文字列を展開してそれをコードとして評価することはできるけど 今回のケースは関数を使えば解決可能なのでまずやらない マクロと同等のことが普通のコードで実現可能
506 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 13:18:53.12 ID:m02xXjOP.net] nkmkは最高に分かりやすいだろ プログラミングスクール系のゴミ記事の1億倍見やすいわ
507 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 13:28:12.12 ID:D24G58JB.net] >>502 > 関数渡してないやないかーい! 指摘サンクス、スマホでポチポチだから忘れてたわ
508 名前:デフォルトの名無しさん [2021/02/14(日) 13:36:25.18 ID:2SnvaGjH.net] >>506 あとは目次にリンク張ってくれれば言うことない
509 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 14:56:48.08 ID:TDUjnB7+.net] なぜ目次がページ内リンクになっていないのか https://note.nkmk.me/faq/#_1 だってさ
510 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 18:37:52.94 ID:muFQjW+d.net] 無駄にマクロ使おうとしてるとか絶対地雷人材やろ。。
511 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:11:28.97 ID:MlHmhfGR.net] 対人地雷に見えた ある意味では間違いではないか
512 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:18:07.67 ID:I1aFEzxm.net] >>506 むしろググってnkmkが上のほうにないときに絶望する 残ったゴミとカスからしゃーなしマシな記事をあさるしかない
513 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 19:55:19.81 ID:5ILzfDiM.net] >>511 にんげんさまはアルクセキュリティホールやでぇ
514 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 20:52:11.02 ID:k6Jk8aeh.net] #define sqr(a) (a*a) sqr=lambda a:a*a
515 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 21:53:27.56 ID:wJqWCA2o.net] >>513 アルクに謝れ!
516 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 23:49:31.85 .net] 一週間ほど前にPython にバッファオーバーフローの脆弱性(CVE-2021-3177)が発表されましたが、パッチ同時リリースではありませんでした その後、パッチは出たのでしょうか? この問題は解決済みですか?
517 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 00:24:39.78 ID:bVZY0HXF.net] testDict = {"test1Key":"test1","test2Key":"test2","test1Key":"test1.5"} こんな感じで、重複のkeyがある辞書から、重複要素をprintするにはどうしたら良いですか?
518 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 00:36:14.72 ID:Jl6Y5s68.net] 辞書はキーが重複することはありません
519 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 01:38:43.41 ID:doIMb1ii.net] bound methodの中身を出力したいときってどうすればいいですか?
520 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 07:39:49.62 ID:x4VL8oQa.net] >>515 わ、わるいのはM$IMEでっす!!!
521 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:32:59.59 ID:HtPzSKw3.net] seleniumでchromedriverを使ってスクレイピングするとき、 長時間続けているとキャッシュが肥大化してきます これをコードの中でクリアする方法はありますでしょうか?
522 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:55:43.22 ID:LUOktb/o.net] 別のスクリプトからsubprocessで間接的に起動しておいて、定期的に起動し直すとかかなあ
523 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 11:59:16.82 .net] どうしてもseleniumでというならドライバ再実行でどうにかなったと思うけど windowも閉じてしまうからそれが嫌だっていうなら 素直にscrapy使ってスクレイピングするのがいいかも >>521
524 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 14:35:17.03 ID:Jl6Y5s68.net] chrome://settings/clearBrowserDataを開いて操作する方法もあるみたいだけど今のchromeだとShadow DOM使っててめんどくさいから options = webdriver.ChromeOptions options.add_argument("--disk-cache-size=バイト数") driver = webdriver.Chrome(chrome_options=options) みたいにしてキャッシュサイズ制限かけるとか
525 名前:520 mailto:sage [2021/02/15(月) 17:14:22.91 ID:HtPzSKw3.net] やっぱり起動しなおすしかない感じですね optionsでキャッシュサイズの指定は試してみたんですけど、効果ナシでした 例えば数十分おきとかでドライバ再実行する仕組みで試してみようかな scrapy、初耳だったので調べてみましたがちょっと難しそうでした 少し勉強してみます
526 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 18:33:57.06 ID:rGrJfJAw.net] こういうの https://intoli.com/blog/clear-the-chrome-browser-cache/
527 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 14:05:18.83 ID:ipEDtskL.net] Atomでコンソールから実行していて、無限ループになったりしてタスクマネージャで強制終了頻繁にしてるのですが、 見えないプロセスが残ったり、メモリーが変に残ったりすることはあるのでしょうか?
528 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 17:21:05.75 ID:tjl7Fm3+.net] マルチスレッドとか使ってて全てのプロセスが殺せてないとか
529 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 17:49:43.59 .net] Atom はプラグインのインストールに失敗する度に、そのNodeプロセスがゾンビ化する不具合があるゴミなのでVSCodeを使いましょう
530 名前:デフォルトの名無しさん [2021/02/17(水) 03:51:59.84 ID:zEY0Zwgw.net] 10万馬力も電気使っちゃうの?
531 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:17:14.64 ID:d05tkeIJ.net] matplotでグラフタイトルを下部に表示したいです。 plt.title('x-latency graph', fontname='Times New Roman', y=-0.15) とy設定をすることで一応下部に表示はされるのですが、 ウインドの大きさによってxラベルと重なってしまい、 上部に表示したときのようにきれいにはいきません。 なにかうまい方法ないでしょうか?
532 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:37:46.06 ID:ywbkeJkd.net] pad=20みたいなのを追加してみるとか
533 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:42:46.98 ID:ywbkeJkd.net] 下ならpad=-10みたいにマイナスか
534 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:57:13.47 ID:d05tkeIJ.net] pad試してみたのですが、ウインドウ小さくするとそうそうにXラベルと重なってしまいますね。 デフォルトの上部にしているとウインドウ小さくしても重ならないのですが、 こんなものなのでしょうか・・・。 でも、論文って下にタイトルって指定されるのに、なんでデフォルトが上になっているんだろう・・。
535 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 22:59:25.13 ID:ywbkeJkd.net] plt.tight_layout()なら?
536 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:01:50.01 ID:ywbkeJkd.net] 論文の図のキャプションは図をレイアウトした先で図の外側に作るものでグラフの中には作らないから、余り気にしたことないな
537 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:09:20.61 ID:d05tkeIJ.net] >>535 ありがとうございます。 さっきまでよりはだいぶ見やすくなりました。 でも、やっぱりウインドウ小さくすると破綻するのは上部より下部の方が早いですね。 上部にしといて、タイトルは割り切って別で入れるようにしたほうがいいのかな。
538 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:10:30.71 ID:d05tkeIJ.net] 実用上それで問題ないんですけど、 論文で下って教育されてると、上部タイトルがきてるといけないことをしているかのような強迫観念が・・・
539 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:09:43.11 ID:IAd8iDhz.net] そこまでこだわりがあるならsubplotで2段にして下のプロット軸とか背景を不可視にしてタイトルを下のプロットのタイトルとして描く関数を作っとくとか
540 名前:デフォルトの名無しさん [2021/02/18(木) 10:25:28.59 ID:64/LOwh9.net] >>531 https://qiita.com/renesisu727/items/24fc4cd8fa2635b00a0d https://qiita.com/0NE_shoT_/items/31a77b6228159d6feb2e https://qiita.com/nkay/items/d1eb91e33b9d6469ef51 https://qiita.com/skotaro/items/08dc0b8c5704c94eafb9 https://qiita.com/KntKnk0328/items/5ef40d9e77308dd0d0a4
541 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 18:54:08.48 ID:wTfx2HE+.net] > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^ あー、ホンッとに思い出すなあ(笑) キチガイの嘘つきの低レベルFランの、 朝鮮ゴキブリBot君は、 チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な ことはよーくわかったよ。 ホントなにもできない朝鮮ゴキブリBot君! クソチョンw Pythonさえろくにできないバカチョンのくせに できるとほざくクソチョンw 日本で強姦と窃盗を繰り返す 犯罪者在日のクソチョンw
542 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 21:54:32.87 ID:cqSbk4Yx.net] 等差数列的な1次元行列で転置を行いたい (1) a = np.array([[i for i in range(2, 5, 1)]]) a.T (2)a.T表記ではない(and ディープコピーではない) a = np.arange(2,5,1) a.shape = (1,3) (3)ワンクッション多い a = np.arange(2,5,1) a.shape = (3,1) a.T (4) a = np.array([np.arange(2,5,1)]) a.T (本音) a = np.arange(2,5,1).T
543 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:14:50.29 ID:f56ThaA4.net] np使わないとまともに配列扱えない欠陥言語だから仕方ない。
544 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:38:10.75 ID:vU7qRJsP.net] はやくjuliaが主流になるといいよね
545 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 22:48:59.15 ID:bEmrZ2Tw.net] 542認定言語 julia r 以下欠陥言語。使ってる奴も三流 python c++ java c# rust swift js
546 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:16:09.86 ID:vQ0bM4Ab.net] >>542 reshape
547 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:58:49.68 ID:cqSbk4Yx.net] >>546 reshapeという文字自体が長いというのはあるけど、まさにこれって感じのやつだったd
548 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 01:03:54.01 ID:byh433rL.net] juliaはたしかに良言語だと思う 使ったこと無いけど
549 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 02:56:37.19 ID:h/t0+GoU.net] 言語には二種類ある(ry
550 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 05:34:23.41 ID:473cJTkx.net] lispみたいなガイジが好むけど実用されない言語と pythonみたいな実用されるけどガイジから非難される言語だ
551 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 07:19:35.87 ID:dkFXvWzJ.net] >>545 配列っていうか、行列だな。 Mコード(MATLAB)やFORTRANも行列扱えるよ。 確かにnp面倒くさい。
552 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 07:19:58.87 ID:ho6TCH2V.net] 行列使うならMATLAB系 numpyじゃあ全く代わりにならんしうんざりする 計算だけで済む話にpython使うのはアホらしい
553 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 19:22:35.73 ID:UVFRc2z2.net] if 条件A: 真ならなんか処理して(if文グループの終わり)に行く if 条件B: 真ならなんか処理して(if文グループの終わり)に行く if 条件C: 真ならなんか処理して(if文グループの終わり)に行く (if文グループの終わり) ていうようなことをしたい。 elseで次のifを書いていくとインデントがどんどん右に行くんだがなんかいい方法ない? 考えたのはfor文の中にいれて真ならbreakてやったんだが、普通はどうかくの?
554 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 19:26:56.94 ID:8rw3YsL8.net] >>553 elif
555 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:00:13.10 ID:UVFRc2z2.net] >>554 レスサンクス。 if文の前に前処理があるやつだとどうする? (if文グループの始まり 条件Aの前処理 if 条件A: 真ならなんか処理して(if文グループの終わり)に行く 条件Bの前処理 if 条件B: 真ならなんか処理して(if文グループの終わり)に行く 条件Cの前処理 if 条件C: 真ならなんか処理して(if文グループの終わり)に行く (if文グループの終わり) goto文でできるが、gotoてどの言語でも推奨じゃないよね? なんかif文グループの入れ子を作って、入れ子を抜けるようなことてforでやるしかない?
556 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:19:47.88 ID:yv2d5Olu.net] インデントがわからないからはっきり分からないが 並列なifなら関数化してearly return
557 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:24:45.22 ID:dkFXvWzJ.net] >>555 何もないコードブロックって作れないよね? 無理やりifでコードブロックにして if True: 前処理A if 条件A: 処理A break 前処理B if 条件B とかやれば出来なくもない。
558 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:27:13.31 ID:yv2d5Olu.net] breakできるのはloop内だけじゃないかな
559 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:28:47.87 ID:8rw3YsL8.net] >>555 while True:で始めてbreakで抜けるのが良いだろうけど、 本質的には処理はネストしてる(前処理Cは前処理A,Bを前提としている)ことを考えると、 if文をネストさせるかもしれないな。 それか前処理がエラーチェックだったらdefで切り出してreturnするか。 Cでリソース解放を必ずしたい場合とかはgoto使うこともあるけど、定石はないというか、ケースバイケースでif文使ったりgoto使ったりしてるな。 try/catchとかも制限付きgotoみたいなものだから、濫用しなければgoto使ってもいいと思うけどね。
560 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:29:07.83 ID:dkFXvWzJ.net] >>558 for i in range(1): とかしないとだめ?
561 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:37.71 ID:fFbWPHDZ.net] if func1: if func2: if func3: if func4:
562 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:06:38.25 ID:yv2d5Olu.net] ↓これでよくない? def if_group(): __条件Aの前処理 __if 条件A: ____do_somethingA() ____return __条件Bの前処理 __if 条件B: ____do_somethingB() ____return __条件Cの前処理 __if 条件C: ____do_somethingC() ____return
563 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:02:39.45 ID:/remXlTv.net] if_group() 呼ばないと。
564 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:22:00.93 ID:N/y0hS3O.net] 即席で関数定義する方がセンスよさげだが自分なら完了済みフラグ設けて済ませたな
565 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:49:34.69 ID:1Y17sdX3.net] こういうんじゃあかんのけ? a = 4 if (lambda: [print("hello"), print("world")])() and a == 3: __print("foobar") elif (lambda: [print("kon"), print("nichiwa")])() and a == 4: __print("hogefuga")
566 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 02:07:34.86 ID:nciJ6+jd.net] >>560 552だけどオレが思いついたのはその方法。 この手の処理て模範解答的にはどうやってやるんだろう? フラグ立ててフラグが真じゃなければ次のifブロックに行かないとかやってたけど。 関数にするとコードが見にくくなるし、一回しか通らない処理を関数にするのも無駄なような。 オレが新入社員のときにやったCOBOLもどきのIDL2にはblock文てのはあって一回だけ実行するfor文みたいなものがあった。
567 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 02:40:31.51 ID:56yjs2OO.net] >>565 コードから意図が全く読めんからあかん
568 名前:デフォルトの名無しさん [2021/02/20(土) 08:48:49.94 ID:Y+RPXUXT.net] 自分なら>>562 にするな アーリーリターン
569 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:49:50.45 ID:/remXlTv.net] >>566 前処理とifがあるなら関数にまとめてもいいかも。 def processA(): 前処理A if 条件A: 処理A : processA() processB() processC() せっかくgoto追加してくれたんだから使えばいいか。
570 名前:デフォルトの名無しさん [2021/02/20(土) 09:25:41.17 ID:Y+RPXUXT.net] >>555 のいう前処理がわからんけど それぞれでif文書いて、条件に早めにFalse返す関数使えば、別にネストもする必要ないじゃん 前処理って何やってんだよ どうしても各分岐の前にがっつり処理しないとだめなんか?
571 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:42:23.67 ID:lyTdLi7+.net] >>570 コードを晒すとこういうことをやってる。 これだとif elif elseじゃ書けないよな。 関数にするにしてもそれぞれやってることが違う。 559みたいにforを使ってみた例。 #ifグループの始まり for i in range(1): --o_btn=driver.find_elements_by_xpath('//input[@class="button"]') --if len(o_btn)>0: ----f_x=f_x+1 ----break --o_btn=driver.find_elements_by_css_selector('div.btn_set>input') --if len(o_btn)>0: ----f_y=f_y+1 ----break --o_btn=driver.find_elements_by_css_selector('div.btn_back>input') --if len(o_btn)>0: ----f_z=f_z+1 ----break #ifが真だったらここに飛びたい。
572 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:57:26.42 ID:AfgxbbrB.net] 最初から変数3つ並べてif-elseでいいじゃん
573 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:58:54.20 ID:QmInm3o3.net] 同時成立でも問題なさそうだけど。
574 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 13:14:35.97 ID:QO6ABfSl.net] インデントが2つだったり、3つだったりばらばらで作ってしまったんですけど、コレを自動で整形する方法ってありますか??
575 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 13:28:03.26 ID:EQ4Fmj1U.net] >>574 ある程度の行数をまとめて選択して置いて「インデントをひとつ浅くする」なら けっこう色んなエディタでできるとおもうんだが 虎刈りになってるならあきらめろん
576 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:29:20.46 ID:56yjs2OO.net] >>574 autopep8かblackで自動整形できるよ
577 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:32:57.68 ID:TBTHb+Gp.net] black使ってるけど1行あたりの文字数だけは弄って150にしてるわ デフォだとキツすぎディスプレイ縦置き専用かよと
578 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 18:32:17.48 ID:56yjs2OO.net] >>571 “ifグループ”と呼んでるものに名前をつけて関数化するほうがベターだと思うけどif-elseでも書けるよ
579 名前:デフォルトの名無しさん [2021/02/21(日) 00:57:40.63 ID:aCzr4+Gv.net] 君たち>>571 みたとたん明らかにやる気なくしてるよね
580 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:09:16.38 ID:f0EcfH0m.net] if len(o_btn := driver.find...) > 0: elif ... 3.8以上限定
581 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 02:40:07.07 ID:G4m9GHw4.net] blackはやりすぎだなと思うことあるわ。 コードを見やすくするためのコードフォーマットなのに逆に見辛くなるとか本末転倒すぎる。
582 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:56:32.45 ID:XsukC5HX.net] そうだよなblack lives matterはやりすぎニガーは調子に乗るな!
583 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 08:27:14.13 ID:YmTCK60y.net] 構造体データて扱えるの? こういうやつ。 01 従業員. ----05 従業員番号 PIC 9(7). ----05 従業員名 PIC X(30). ----05 入社年月日. --------10 入社年 PIC 9999. --------10 入社月 PIC 99. --------10 入社日 PIC 99.
584 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 09:35:10.61 ID:VYudgr0a.net] >>583 無論おk
585 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:28:26.05 ID:/Mh4iWCM.net] >>583 年月日に20210221突っ込んで 年で2021だけ取り出すには工夫がいるかな
586 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:31:13.67 ID:UiySRn99.net] わざわざ分けなくても datatime で持てば良くない?
587 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:36:40.26 ID:9qukVfwV.net] >>583 COBOLの知識は完全に全て忘れろ。今すぐに。 Pythonでは固定長レコードは一切使わない。CSVやJSONのような可変長データを使う。
588 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 16:54:13.00 ID:3wKXGD51.net] >>583 プログラム内の表現として扱うという意味なら自分でクラスを定義するだけ 文字列、数値、日付みたいな型は標準であるけど「30文字以内の文字列」みたいな型はないので 従業員クラスに自分でバリデーションを追加するか独自の型を定義するか COBOLで書き出した構造化ファイルのデータをPythonから扱えるかという意味なら ファイルフォーマット次第だけど簡単には扱えない CSVとかのテキストフォーマットに書き出したものをPythonで読み込むほうが桁違いに簡単
589 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:11:56.12 ID:uJ/bSXez.net] pythonのデバックでプログラムが何行目を通過したかて知る方法てあるの? visual studio 2019を使っててF11でスッテプ実行てのが出来るんだけど、 1万行あったら1万行回F11叩くのか?てことになる。
590 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:34:50.69 ID:ckzMPuES.net] >>589 F11連打しかしないとそうなるな 取説嫁
591 名前:デフォルトの名無しさん [2021/02/22(月) 10:21:35.37 ID:5/ri8a+l.net] >>589 ifの質問してるのと同じ人?
592 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:43:27.55 ID:PW7vHVeo.net] フレイクホイントを使ってテハックするのじゃ
593 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:55:31.74 ID:pI5eidjw.net] 何行目を通過したか知りたいって考え方をするのはプログラムの構造に問題があるから
594 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:05:19.36 ID:RHKTrh3L.net] pythonじゃなくても普通bp貼るだろ。
595 名前:デフォルトの名無しさん [2021/02/22(月) 13:28:34.74 ID:zcTtu3Zr.net] フレイクホイントが フロントホックに見えてしまった(´・ω・`)
596 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:07:23.81 ID:aMOGcJaK.net] >>589 ストップポイント指定するんだよ んで次のステップポイントに飛ぶってのがある
597 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:07:41.17 ID:aMOGcJaK.net] ブレイクポイントかw
598 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:37:49.37 ID:tvUSsQ8P.net] 3行のコードでも1万回ループしてたら ステップオーバーを3万回叩かないと抜けられない F11はステップインなのでどんどん潜る
599 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 14:45:11.64 ID:Ag9nXfNi.net] VBAしかやったことないニワカだから、同じ疑問をずっと持ってた 自分の書いたコードの動作を一つずつ確認するために1行ずつ実行することがよくあったんだけど pythonだと、極端なこと言えば1行ごとにブレイクポイントを挟まないといけないってこと?
600 名前:デフォルトの名無しさん [2021/02/22(月) 14:59:58.20 ID:DIDXVj1p.net] 標準添付のデバッガ(PDB)やIDE(VSCodeなど)でも普通にできる。
601 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:25:22.70 ID:nmugGdcj.net] >>599 んなわけない
602 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:31:46.21 ID:PGV0X2RH.net] デバッガの使い方なんてどの言語でも一緒 ブレイクポイントの設定 ステップオーバー ステップイン ステップアウト コンティニュー この5つを理解すればいいだけ プログラミング学習の初日に習う内容
603 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:42:31.40 ID:uJ/bSXez.net] 新入社員でcobolやったときは最初から最後までトレースとったぞ。 人は意図的にバグを作り込むわけじゃないから、ストップポイント指定なんてナンセンス。 事前に指定しても、それ以外のところでエラーするのが当たり前。 事前にストップポイントやらブレイクポイントを指定なんて無駄だよ。
604 名前:デフォルトの名無しさん [2021/02/22(月) 15:47:47.63 ID:DIDXVj1p.net] なんだろう。 COBOLだってプログラミング言語のはずなんだが、こうも考え方のピントがズレるもんかね。
605 名前:デフォルトの名無しさん [2021/02/22(月) 15:49:02.61 ID:65ZJFDMb.net] Python関係ないよね デバッグのやり方教えて終わりでいいでしょ
606 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:54:55.08 ID:AYpKHnjf.net] >>603 よく分からんけど普通デバッグって ・エラー出た個所とエラーメッセージを確認する ・エラー出た個所にブレイクポイント設定しつつ、関連して怪しそうな所にもブレイクポイントを再度動作させる ・後はデバッガで変数値とか確認しながら原因付き留める 動かす度に止まる場所が変わる、とかでもない限りこれで十分じゃね? あと何行目を通過したか?っていう質問の時点で トレースされたエラーメッセージ見てないのか?っていう気はしてるけど……
607 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 15:55:51.44 ID:Xis0SD1d.net] >>604 COBOLはデータ処理のフローを小さなステップに分割して、そのステップ毎にプログラムを分割するのが普通で、 一つ一つのステップは構造化もクソもなくただ命令を平べったく羅列するだけ、というのが一般的 Pythonでいう数行から百行程度の関数一つ一つがCOBOLでは1000行くらいに膨れ上がって、それぞれが別個のプログラムになってるのを想像すれば、彼の気持ちを理解できるだろう
608 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:42:38.45 ID:hC2BZM1+.net] COBOLだってデバッガの基本的な使い方はPythonと全く同じ プログラム全体をステップ実行したいならエントリポイントにブレークポイント置いてステップ実行して行くだけ 学習目的以外では普通やらないけど Pythonでもトレースはとれる それも時間の無駄なのでまずやらない
609 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:14:24.97 ID:ckzMPuES.net] >>595 もるだーつかれてるネー
610 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:15:37.44 ID:ckzMPuES.net] >>602 それプログラミング基礎ちゃう デバッグ基礎や >>604 コボルドって基本犬頭だからね
611 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 18:24:34.17 ID:KlgM0RdP.net] COBOL奴か
612 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 18:30:34.39 ID:5xkEJHnL.net] コボおじw
613 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:53:28.96 ID:G30bzgiW.net] デバッグとかprint文挿入でいいんじゃ
614 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 22:09:55.16 ID:sB1O4QV3.net] 手軽なテキストエディタでprint()利用のデバッグはあなどれない
615 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 22:55:29.56 ID:sQpMvYPW.net] ある程度はprintデバッグで問題の発生する範囲を絞り込むよね。 データが20種10ループの処理を受けるときに200回とかステップ実行やってられないもの
616 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:07:05.13 ID:uJ/bSXez.net] >>606 これはVS2019の問題かもしれんが、関数の中で止まると何行目で止まったか表示してくれない。 だからエラーが出た個所にブレイクポイントを設定することがまず大変。 F11で追わないとどこで止まったかわからない。
617 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:08:26.38 ID:UEjjQNjA.net] エラーに行番号出てるでしょ
618 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 23:20:25.34 ID:uJ/bSXez.net] >>617 関数を呼び出したところしか出てこない
619 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:00:43.61 ID:cTQNOv+R.net] >>615 そういうのは条件付きのブレイクポイントを使う
620 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:03:58.11 ID:cTQNOv+R.net] >>618 VS使わずコマンドラインから実行してエラーメッセージを確認 VS2019の問題だと思うならまず切り分けすべき
621 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 02:07:51.55 ID:fia5nfNQ.net] 関数の切り分けがそもそも糞なんだろ。 pythonでデバッガが必要なことなんてあんまりないぞ。cみたいなメモリがぶっ壊れるものならともかく。
622 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 06:54:54.23 ID:VpyuW4/O.net] git bisectの使い方は覚えとくと便利やぞ
623 名前:デフォルトの名無しさん [2021/02/23(火) 08:54:05.78 ID:NUvCbrOs.net] ハナから全部に、「今何行目」って表示出しとけw
624 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:56:11.05 ID:P6BTUA4m.net] スレタイ嫁
625 名前:デフォルトの名無しさん [2021/02/23(火) 11:49:45.49 ID:XvdT4dfh.net] python最大の特徴はC言語やってても余り使わない__main__など特殊変数を大量に見かけることだ この奥深さはperlを超えてるが見た目の分かり易さは当然pythonに軍配が上がる
626 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:56:56.18 ID:wfTpwfxG.net] 清水の舞台から飛び降りるつもりでVS2019からpycharmに変えてみた。 pycharmてどこでエラーしたかわかるんだな。 VS2019はどこでエラーしたか不明な場合がたたある。 今までの苦労は何だったのだ?
627 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:25:37.67 ID:IRMSQgrY.net] 修行
628 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:33:34.02 ID:eeQBUcpI.net] >>625 perlを超えてはいないだろ。