[表示 : 全て 最新50 1-99 101- 201- 301- 2ch.scのread.cgiへ]
Update time : 07/17 07:03 / Filesize : 103 KB / Number-of Response : 384
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【まず1嫁】くだすれPython(超初心者用) その54



1 名前:デフォルトの名無しさん mailto:age [2021/06/09(水) 21:05:44.61 ID:zRBfpo4e.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

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

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###

331 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 00:59:10.02 ID:MSe133Oz.net]
>>329
>>330
納得しました!
ありがとうございます

332 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 10:33:46.40 ID:chyfa+iT.net]
Python3.7で、pdbのtrace中とそれ以外でプログラムの挙動が異なるという問題に悩んでいます。
■現象
PySimpleGUIのpng画像をwhile True:で延々と更新し続ける処理が、
・pdb set_trace中は想定通りに画像が更新され続ける(ただし途中でpdbが止まる)
・traceを外すとそもそも画像が表示されない

■処理
"conv_image"を別関数で更新し続け、
このwindow更新行をwhileで回すだけの処理です。
window['-image-'].update(data=get_img_data(conv_image))

■pdbが止まる件
不思議なのは、通常pdbはデバッグ中に一度nで次に進むと、次行からはEnterだけでエラーのない限り進みますよね。
でもEnter押しっぱなしにしてると、この行でエラーの表示もなくpdbがいったん止まります。
nを押すと進み、画像が更新されます。
そこが問題のポイントなのかなと思いますが、それ以上の手がかりがありません。

333 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 10:43:05.45 ID:lk+ovMEl.net]
>>332
再現できる最小限のコードを提示しましょう

334 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 11:13:10.52 ID:Ai3MLyk0.net]
> get_img_data(conv_image)
この計算は一回でいいんじゃ

335 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 13:30:27.85 ID:nAGZi/ZP.net]
GUIがメッセージを処理する時間がねえんじゃねえの

336 名前:332 mailto:sage [2021/07/10(土) 14:33:07.51 ID:chyfa+iT.net]
>>333
すみませんでした…
ttps://dpaste.com/AQL5WPNUS
手元のraspbian buster python3.7.3では、ここまで削っても
後ろから4行目のpdb.set_trace()有無で、>>332に書いた現象が出ます。

>>334
window['-image-'].update(data=conv_image)
こうでいいんじゃないの?と思って最初はこう書いてたんですが、
BytesIOが生で見えてるのか何なのか、"TypeError: 'int' object is not callable"エラーが出ます。
ググったところ、get_img_data関数(割と一般的らしい)を使えとあったのでそのようにしたところ、表示できるようになりました。

>>335
試しに2ヶ所あるwindow.updateの直後にtime.sleep(1)を入れてみたんですが、変化なしでした。

337 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 16:36:24.47 ID:c5RJ/qlV.net]
>>336
PySimpleGUIでメッセージ処理させるのはwindow.read()
メッセージ無くても回したいならtimeoutを指定する

338 名前:デフォルトの名無しさん mailto:sage [2021/07/10(土) 18:01:51.33 ID:lk+ovMEl.net]
window.read()してないのでtk.update()が呼ばれず画面が更新されない
window.TKroot.update()を呼べば画面が更新されるが
直接呼ばずにwindow.read()を使ってメッセージループを作るほうがいい

デバッグセッション時はそれだと使いにくいから何か対処されてるっぽい

339 名前:332 mailto:sage [2021/07/10(土) 18:38:29.97 ID:chyfa+iT.net]
ありがとうございます。なるほど…!
どこかでサンプルプログラムをコピペしつつ、ボタンはどうでもいいから
とりあえず画像表示ループだけ回そうと適当かつ中途半場に行を削除してしまったので、
その結果イベント処理が進まない状態ということですね。
すごく良くわかりました。
どう処理するかよく考えて書き直してみます。



340 名前:デフォルトの名無しさん [2021/07/11(日) 08:30:07.56 ID:k6naGpL9.net]
ユニークな長いリスト src があって
おのれはユニークだけどsrcと重複しうるリスト reqがある
reqの要素がひとつでもsrcにあれば云々したい
速いのを探しています。外部ライブラリは使えない

test = set(req)
bool([i for i in req if i in test])
?

341 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 09:23:01.16 ID:FD6lxZ3g.net]
any()かfor-loopのearly breakを使う

srcは長くて固定的、reqは短くて毎回変わるなら
srcのほうをsetにして管理したほうがいい

342 名前:デフォルトの名無しさん [2021/07/11(日) 10:48:10.63 ID:k6naGpL9.net]
いや冷静に考えたら
フツーにset(src)&set(req)か

343 名前:デフォルトの名無しさん [2021/07/11(日) 10:50:02.39 ID:BLRKNf/m.net]
共通要素を全て調べ上げる必要が無いなら>>341の方が速いな

344 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 11:14:07.88 ID:k3ZSGeVZ.net]
>>340
速いかどうかは知らん
not set(src).isdisjoin(set(req))

345 名前:デフォルトの名無しさん [2021/07/11(日) 12:26:28.31 ID:k6naGpL9.net]
>>341
set(src10万)
req300 重複0〜5
ではany()と&はほぼ誤差
bool([i in set])がわずかに遅い感じでした
センキュー

346 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 12:57:32.61 ID:xAgoNPlJ.net]
>>258
分かりやすい

347 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 19:05:49.41 ID:akfEDp81.net]
違和感というのは[]を()のように捉えてるから
リストや文字列に対する*は数学の掛け算とは無関係
要素数を増やせという機能


> [3*3] -> [9]
数学の掛け算
> [3]*3 -> [3, 3, 3]
リスト内の要素3を数で3つに増やせ
> [[3*3]] -> [[9]]
掛け算
> [[3]*3] -> [[3, 3, 3]]
内側のリストの要素3の数を3つに増やせ
> [[3]]*3 -> [[3], [3], [3]]
リストの要素[3]を3つに増やせ

348 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 20:54:53.44 ID:yIl0mON7.net]
どうした急に

349 名前:デフォルトの名無しさん mailto:sage [2021/07/11(日) 21:15:21.80 ID:BeeJLMuH.net]
発作よ
お薬を忘れたみたいね



350 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 00:05:06.94 ID:hfOyhNhX.net]
サブクラスからスーパークラスのメソッドを呼び出す場合、次の@とAは同じ意味ですか?
同じならどちらで書いた方がいいとかありますか?

class MyClass1:
def __init__(self, name):
self.name = name

class MyClass2(MyClass1):
def __init__(self, name):
@ super().__init__(name)
A MyClass1.__init__(self, name)

351 名前:デフォルトの名無しさん [2021/07/12(月) 00:29:53.14 ID:2Zpr4/N8.net]
わざわざsuper というキーワードが用意されているのだから使わない理由ないだろ
クラス名を変更した際の影響範囲を考えてみよう

352 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 11:10:07.04 ID:4WArcuIG.net]
>>350
その例だと同じだけど複数から継承するようなクラスを使う場合は
super()が返すものが普通に想像するものとは違ってくるケースもあるので注意が必要
https://fuhm.net/super-harmful/

353 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 19:50:10.58 ID:QV5M7VnV.net]
>>347
数学と無関係ではないよ、加群としてとらえても矛盾のない演算になってるでしょ

354 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 20:27:18.44 ID:HIUYKm1A.net]
それは*3が同じものを3つ足し合わせなさいという
常識的な意味合いをわかりやすさのために利用してるだけで
数学的なことなら割り算もあるでしょ

355 名前:デフォルトの名無しさん mailto:sage [2021/07/12(月) 21:40:52.58 ID:4WArcuIG.net]
常識的な意味合いかぁ・・・
演算子オーバーロードの悪い見本にしか見えない

356 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 01:00:18.86 ID:o9TqNFAF.net]
>>351
>>352
ありがとうございました
ある本に説明もなく両方の記載があったので悩んでました
この機会に多重継承も勉強しようと思います

357 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 05:15:40.15 ID:eWSxSU0S.net]
数学っぽくやるなら
[3]*3->[9]
[1, 2]*3->[3, 6]
のほうがより直感的だった気はする

358 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 05:42:16.34 ID:QsXB5/qu.net]
numpyはそうなってるね

359 名前:デフォルトの名無しさん [2021/07/13(火) 11:39:29.89 ID:Oq4/PEVt.net]
pythonバージョン3.8.1で次のようなことをしようとしていますが、関数の配置に困っています。

次にするイベントを抽選する

イベントを実行する

イベント終了後にイベント抽選へ戻る

しかし、これだとイベントを抽選する関数をイベントの関数より上に置くとイベント抽選の関数がイベントの関数を認識してくれず、
下に置くと、各イベントの関数がイベント抽選の関数を認識してくれません。
なんとか動かす方法はないものでしょうか?



360 名前:デフォルトの名無しさん [2021/07/13(火) 11:45:58.98 ID:uAPVX+Xy.net]
5chのこの板のAndroid版のスレタイトル一覧を取得したいのですが、スレタイトル部分だけ抜けてしまいます。
htmlを見ると、スレタイトル部分はjava scriptを呼び出して(?)表示しているようです。
このような別から呼び出す仕組みの検索語だけでも知りたいです。

実行環境はWindows10のcolabです。
何卒よろしくお願いします。

以下がソースとhtml抜粋です。

https://pastebin.com/dq4FFsM3

361 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:52:22.48 ID:eWSxSU0S.net]
相互参照は常に避けるよう心がけるべき。
回避する方法はいろいろあるけど、
イベント抽選関数はイベントの関数に引数として渡してあげるとか、
イベントの関数はすべて同じ引数、戻り値にしておいて、イベント抽選システムへ予め登録しておく方式にするとか

362 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:55:28.21 ID:I5G4+d/9.net]
知らんけどmain関数のなかにwhile True: 抽選関数()
みたいにしてループさせて抽選されたイベント自体は抽選関数を呼ばなければいいだけじゃないの

363 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 11:59:46.95 ID:0QNuXsy/.net]
ttps://mevius.5ch.net/tech/subject.txt
> スレタイトル一覧を取得したい
> このような別から呼び出す仕組みの検索語だけでも知りたい
どっち?
スレタイ取得ならsubject.txt読ませればいいじゃん
わざわざしかもitestのhtmlをスクレイピングする理由あるの?

364 名前:デフォルトの名無しさん [2021/07/13(火) 12:22:40.44 ID:WUJYnH4r.net]
>>354-355
*3がどう展開されるかより
もっと深刻な問題は
[[?]]*Nの内側の[?]はコピーされていないということだろ

365 名前:デフォルトの名無しさん [2021/07/13(火) 12:24:59.10 ID:WUJYnH4r.net]
>>359
前方参照でぐぐれ

366 名前:デフォルトの名無しさん [2021/07/13(火) 12:26:33.03 ID:WUJYnH4r.net]
>>360
5chはスクレイピング禁止

367 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 12:31:27.78 ID:QsXB5/qu.net]
>>359
イベントの関数定義と、抽選・実行をする処理とはファイルを分けて
前者を後者のファイルでimportして使う

1ファイルでできなくもないけど
モジュール分割を早めに覚えておいたほうが散らかりにくい

368 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 12:43:35.25 ID:dtNqNBdW.net]
>>360
Ruby, selenium-webdriver では、
execute_script で、そのまま、JavaScript ソースコードを実行できる

ただし、5ch で頻繁にスクレイピングすると、アク禁にされるかも

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り放す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout

url = "サイトのURL"
driver.navigate.to url # 移動する

js_code = <<"EOT"
var elem = document.getElementById( 'abc' );
EOT

driver.execute_script js_code # JavaScript を実行

369 名前:368 mailto:sage [2021/07/13(火) 13:03:34.95 ID:dtNqNBdW.net]
5ch は最初に、空のHTML を送ってきてから、
その後、JavaScript(Ajax)で通信して、内容を取り込む

だから単に、Ruby のNokogiri などでスクレイピングをしても、
空のHTML が取れるだけで、まだ内容が読み込まれていない

だから、15秒ぐらいスリープして、内容が読み込まれるまで待つ必要がある

または、selenium-webdriver で、ブラウザを自動操作して、
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout
みたいに、要素が存在しない場合に、何秒待つか指定する



370 名前:359 [2021/07/13(火) 13:16:57.35 ID:Oq4/PEVt.net]
ご回答ありがとうございました。
私があまりに初心者過ぎて、せっかくの具体的なご回答をほぼ理解できませんでしたが、
この状態を相互参照と呼ぶことが分かってようやくググることができ、
>>362さんのレスから着想を得て、main関数を作ってプログラムを全部括れば動くということが判明しました。
以上ご報告と御礼申し上げます。

371 名前:360 [2021/07/13(火) 17:54:03.79 ID:28i3hfQd.net]
>>368
ありがとうございます。
Ajaxという技術なのですね。
webdriverでwaitを入れたところ取得できました。


>>363
すいません説明不足でした。
実はPC版はシンプルなため取得できていました。
勉強のためにAndroid版も見てみようと思いやってみたところ、取得できなかったためお聞きしました。

皆様、勉強になりました。
ありがとうございました。

372 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 18:33:25.76 ID:KwvhlQcy.net]
>>354
そのツッコミをするなら、群と体の違いについて理解しようか。
掛け算があっても、割り算が必ずしも定義できるとは限らない。

373 名前:デフォルトの名無しさん mailto:sage [2021/07/13(火) 20:54:54.99 ID:4WrY8hy5.net]
何このruby基地外の自作自演
きっしょ

374 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 02:12:23.66 ID:0WF/Cs9d.net]
スクレイピングでrequestsで上手く取得できないサイトはSeleniumで取得するようにしてるんだけどこれにThreadPoolExecutorを使用するとしたらどういう書き方すればいいの
今までは複数のサイトのURLが入ったリストをfor文で回しつつif文でドメインが一致するかどうかでrequestsとSeleniumを使い分けていたけど非同期にするとなるとさっぱりわからん

375 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:00:52.16 ID:Rdfymp1t.net]
クラスのメンバをforループのように回す方法はないですか?イメージは、
class Test:
a=0
b=0
c=0
def _print(self):
for member in self:
print(member)

みたいなことをやりたいです。

376 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:05:26.72 ID:erbvpp8v.net]
__iter__か__getitem__を定義すればいけるはず

377 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 12:46:48.66 ID:82cJAwkj.net]
試してないけど、
for v in vars(self):
print(getatter(self, v))

378 名前:デフォルトの名無しさん [2021/07/15(木) 15:25:55.52 ID:ygp86UHP.net]
https://docs.python.org/ja/3/library/inspect.html
https://www.atmarkit.co.jp/ait/articles/1612/09/news030_3.html

379 名前:デフォルトの名無しさん [2021/07/15(木) 16:37:18.28 ID:0u9iXN8m.net]
そういうクラスのためのdataclass
astuple, asdictでイテレートもできる。
自分で用意できないクラスのオブジェクトの時は、dir()で列挙した後にごにょごにょしていく必要があるけど。



380 名前:デフォルトの名無しさん [2021/07/15(木) 16:50:42.66 ID:TtIRjd2i.net]
この度pyinstallerでどのshell環境でも動作するコマンドを作成しました。

しかし5年前くらいのIntelMacでさえ快適に動作しますが、
M1macbookではかなりもっさりして遅いのです。

これはarm64アーキテクチャのせいで遅い可能性はありますか??
またこういったケースでの改善策などありますか??
arm64用にコンパイル方法などありましたら教えてください。

コマンドはスクレイピングした結果を別ファイルに落とす
シンプルなコマンドです。
shellscriptだとちょい面倒だったのでpythonで書きました。

381 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 20:50:47.41 ID:Rdfymp1t.net]
ありがとうございますが、
>>377だと順番が毎回ランダムになる
>>378だと順番がアルファベット順になる?(多分)
csvの要素と対応付けたいので定義順に出てくれないと困ってしまうのです・・
>>379はバージョン不足で不可。(3.5系)
1番目が順不定になるのも多分dictの順番が保持されてないせいだと思いますしやっぱり素直にアプデですかねぇ。。。こんな仕様にしたのほんとに誰ですか

382 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 21:02:10.64 ID:gFOIdhYR.net]
>>374
AWS なら、Lambda, SQS などを使えば?

383 名前:デフォルトの名無しさん mailto:sage [2021/07/15(木) 21:48:55.17 ID:NjXHl1NW.net]
>>381
for v in sorted(vars(self))でどう?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<103KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef