Pythonのお勉強 Part68 at TECH
[2ch|▼Menu]
[前50を表示]
650:デフォルトの名無しさん
22/11/07 14:36:29.74 ns7213lX0.net
>>634
EasyOCR は?
pytorch必須だが

651:デフォルトの名無しさん
22/11/07 14:48:18.41 a5k3bCTy0.net
使い物になるOCRはみんなAIで有料なんだよな
客はDXしたい企業だから高い

652:デフォルトの名無しさん
22/11/07 15:15:22.15 dmSTAQ160.net
料金みたことある?業務で考えたらめちゃ安いとおもうが

653:デフォルトの名無しさん
22/11/07 15:26:05.72 kmERiYaX0.net
有料OCR知ってる俺スゲー君なんて相手にすんなよ...

654:デフォルトの名無しさん
22/11/07 15:26:54.13 a5k3bCTy0.net
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる
そしたらgoogle様が無料開放してくれる筈

655:デフォルトの名無しさん
22/11/07 15:41:01.53 rtBnyCPM0.net
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
URLリンク(xtech.nikkei.com)

656:デフォルトの名無しさん
22/11/07 15:51:46.76 a5k3bCTy0.net
AIだから教育が必須で、それなりにコストがかかる
こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する
各国で自分のとこの言語についてやるのが筋だけど、
どうせ日本はやらないのでgoogleがやる

657:デフォルトの名無しさん
22/11/07 16:22:49.11 a5k3bCTy0.net
似たようなので、音声からテキストへの変換も金かかる
あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、
文化が大きく前進するだろうに金がブレーキかけてる
国の事業としてやれば一人頭の負担なんて微々たるものなのに

658:デフォルトの名無しさん
22/11/07 16:28:42.14 ns7213lX0.net
この夏whisperが公開されたやろ?

659:デフォルトの名無しさん
22/11/07 16:32:21.66 a5k3bCTy0.net
そんなのあったのか
マスク様々やな

660:デフォルトの名無しさん
22/11/07 16:46:46.72 6QND4EcV0.net
>>655
Rubyオワコン

661:デフォルトの名無しさん
22/11/07 21:52:40.91 J6xutGri0.net
>>657
つまり文字起こし言いたいんだろ?
なんかクソ認識悪いAPIだったら何かあった気がする

662:デフォルトの名無しさん
22/11/08 10:16:17.14 gvBOR9qA0.net
半島系帰化人は強姦魔ばかり
死ねよクズ帰化人!

663:デフォルトの名無しさん
22/11/08 11:03:03.92 NJ3yWFAyM.net
何でこのスレで暴れてるんだよ

664:デフォルトの名無しさん
22/11/08 11:17:25.58 Z/fTsurM0.net
壊れちゃったんだろ

665:デフォルトの名無しさん
22/11/08 14:10:32.60 SId0EMb3a.net
ランダムに書き込んでるbotだよ

666:デフォルトの名無しさん
22/11/08 19:27:53.62 h+Zmgne00.net
有料と言ってもgoogleAPIってかなり安いと思うんだけど
手持ちの本数十冊OCRして1,000円いかなかった気がする

667:デフォルトの名無しさん
22/11/09 17:03:12.36 a7tugATP0.net
某有名ゲーム会社で働いてる友人が、「Pythonではあまりクラスを使うべきではない。
それほど高度なプログラムでなければ関数を使えばいい」と言っていたんですが、
そうなんでしょうか?
皆さんの意見を聞かせて頂きたいです

668:デフォルトの名無しさん
22/11/09 17:08:46.66 F89FAkjE0.net
関数でできればいいけど、引数たくさん渡したり、グローバル変数で渡してたり、
みたいな汚いことするくらいならクラスがいい

669:デフォルトの名無しさん
22/11/09 17:30:19.69 PaG6ZUsK0.net
Javaのようになんでもかんでもクラスを作る感じじゃないというのは事実。
でも、dataclassとかnamedtupleとかは使うかな。
とはいえやることによると思う。

670:デフォルトの名無しさん
22/11/09 17:30:52.94 ugvw1ns9a.net
状態を持つオブジェクトを扱うならクラスは必然なのでは

671:デフォルトの名無しさん
22/11/09 18:12:18.95 uDSXzENKM.net
pythonはメンバ変数にself必須なのがダルい
メインプログラムまでクラス化する必要はないと思う
規模が小さければモジュール変数をグローバル変数のように使うのが便利
vscodeならインテリセンス利くし

672:デフォルトの名無しさん
22/11/09 18:40:16.27 cOB3Ubn30.net
>>667
プログラム水準(?)の高低でなく、実行速度の遅速でそう言われるのを聞いたことはある。大昔ね。
事実かは知らぬ。

673:デフォルトの名無しさん
22/11/09 18:59:13.95 2JAkKfpeM.net
>>667
使うべきでない理由をなぜ聞かなかったのか?
それを書けば話は終わる
君の友人ほどスキルのある人はここにはいないからな

674:デフォルトの名無しさん
22/11/09 20:24:05.09 FPtq7UfL0.net
>>667
必要になるまで不要なもので汚すな
シンプルに書けってことかと

675:デフォルトの名無しさん
22/11/09 20:51:46.35 yZGUhxlRM.net
>>671
だなselfを二文字くらいの別名に出来ないのかな?

676:デフォルトの名無しさん
22/11/09 20:56:49.26 F89FAkjE0.net
perlから来たからselfは当たり前だと思ってる

677:デフォルトの名無しさん
22/11/09 21:06:27.04 EoOj57gu0.net
開発者間で同意取れるなら
ただの関数の引数だから好きに変えられはする

678:デフォルトの名無しさん
22/11/09 21:10:50.26 5c+x4O200.net
>>667
理由を示さないお作法は無視していい

679:デフォルトの名無しさん
22/11/09 21:21:40.38 uDSXzENKM.net
グローバル変数用のファイルを作ってas gでインポートってのをqiitaで見たけどかなり便利
g.nameみたいにアクセスする

680:デフォルトの名無しさん
22/11/09 21:30:42.42 F89FAkjE0.net
それは他に影響しないというだけで、グローバル変数の欠点は何も解決しない
作って使ってすぐ捨てるならいいけど、保守が必要なら時間かけてシンプルにしとかないと

681:デフォルトの名無しさん
22/11/09 21:48:48.07 dM0Gb0+w6.net
>>675
すればいいじゃん

682:デフォルトの名無しさん
22/11/09 21:57:03.34 uDSXzENKM.net
グローバル変数はプログラム全体を通した設定値とかに使うもんじゃない?
それこそメインプログラムにとってのselfよ
変に引数取りまくるより可読性高いと思う
規模にもよるんだろうけど

683:デフォルトの名無しさん
22/11/09 22:03:03.05 F89FAkjE0.net
configを読んでグローバルに格納してmain()を呼ぶ
みたいな作りになってるのが多い
うちのスクリプト

684:デフォルトの名無しさん
22/11/09 22:10:05.03 EoOj57gu0.net
設定値の保持ならぜんぜんOK
状態を丸見えで管理できないとこに置くなってことでしょ

685:デフォルトの名無しさん
22/11/09 22:13:24.86 F89FAkjE0.net
関数の中に下請け関数があって、
なんかごちゃごちゃしてきたからリファクタリングだと外に出したらスコープから外れたので、
じゃあみんなグローバル化したれ、みたいにglobal付けて誤魔化す

686:デフォルトの名無しさん
22/11/09 22:23:48.43 dM0Gb0+w6.net
せめてconst できればいいのに

687:デフォルトの名無しさん
22/11/09 23:03:08.26 a3eCQ+jX0.net
>>667
どうせ、いたずらにclassを多用したゴミトランプゲームを
見せたんだろ?いつまでも練習だからって言って、設計もしないで
ゴミコードを見せ続けるから嫌われかけてるんだよ。

688:デフォルトの名無しさん
22/11/10 00:21:13.04 8bOle1Do0.net
クラス化するのは、言語のタイプやプロジェクトの規模ではなくて
データ同士の相関を元に、見通しをよくすることが目的だと思う
あるいは自分用ライブラリとしてカプセル化しておきたいとか
そういう話を置いて、やらない方がいいレベルの問題があるのかw

689:デフォルトの名無しさん
22/11/10 00:21:46.71 a0I25TkAM.net
>>667
理由を示せないお作法は取るべきでない

690:デフォルトの名無しさん
22/11/10 00:24:11.32 KkTOa1Su0.net
>>667
おまいは友人に言われた事を何でも信じるのか?
この洗剤飲めるの。by アム・○○ぃ

691:デフォルトの名無しさん
22/11/10 00:27:36.22 OBeQnBIU0.net
匿名掲示板で聞いて得た答えを信じるというのもどうかと思う

692:687
22/11/10 00:32:26.74 ofaAiG0L0.net
レスしてくれた皆さんありがとうございます
参考にさせて頂きたいと思います
>>669
CUIの簡単なカードゲームではどうでしょうか?
>>673
失礼しました
曰く「クラスを下手に使わない方がコードが無駄に複雑にならなくてよい」
からだそうです
>>674
まさにそんな感じです
>>678
ちょっと彼に悪いかなって…
>>687
ゴミときたもんだ
彼の人柄はそんな感じじゃないよ

693:デフォルトの名無しさん
22/11/10 10:45:10.57 S46ME7RY0.net
ねえ、openpyxlとかでオンライン上のExcelファイルを修正できないの?

694:デフォルトの名無しさん
22/11/10 10:49:29.30 +lvrwnnZ0.net
どこかのクラウド(どこ?)に置いたファイルの意味なのか
Office365で作成したファイルなのか

695:デフォルトの名無しさん
22/11/10 11:02:13.25 ci7p4+PJa.net
どっちにしても手元に持ってこないと厳しいんじゃないかねえ

696:デフォルトの名無しさん
22/11/10 11:46:55.13 rDE3wZvsM.net
関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。

697:デフォルトの名無しさん
22/11/10 11:47:43.94 rDE3wZvsM.net
>>675
好きな名前をつけていいのよ。meとか

698:デフォルトの名無しさん
22/11/10 13:09:31.60 ci7p4+PJa.net
abcを使わないとできんことはあまりやりたくないねえ

699:デフォルトの名無しさん
22/11/10 13:26:04.03 tUNuHkwK0.net
abcは知ってても

700:デフォルトの名無しさん
22/11/10 13:50:13.84 99QPf7Vaa.net
>>696
> 関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。
なら初めからそう言えや
まあそう言われたら適切な方の決め方について小一時間は問い詰めたいけどなw

701:デフォルトの名無しさん
22/11/10 15:41:21.49 avJI0YX/0.net
>>693
teamsで出来るぞ

702:デフォルトの名無しさん (アウアウウー Sacd-obsI)
22/11/10 16:33:33.24 99QPf7Vaa.net
>>701
マジで?
やり方教えて

703:デフォルトの名無しさん (ワッチョイ 09f0-Z1Pq)
22/11/10 16:41:09.55 avJI0YX/0.net
>>702
teamsに申し込んでoffice365に申し込めばクラウド上でエクセルが使えます

704:デフォルトの名無しさん
22/11/10 17:38:31.76 aw2UCTg8M.net
>>692
カードゲームならカードクラスは作ったほうがよさそう。
あとはカードゲームのルールによる。

705:デフォルトの名無しさん
22/11/10 18:14:06.31 y5PDmjdo0.net
>>704
687が戒めたいのがまさに724みたいな馬鹿野郎なんだろうな。
目的と手段が入れ替わってclass考えて作るのに必死になる馬鹿。

706:デフォルトの名無しさん
22/11/10 18:34:12.90 RApG3JqD0.net
カードクラス作ってもいいけど、同じカードが存在しない、記号4つと数字1〜13の組み合わせの
ものにクラスがいちいちいるかな。
カードクラスはカード1枚を表して、なにができればいいんだ?
記号クラスがあって、各記号クラスがあって、ナンバークラスがあって、
is_MarkMatchとかis_NumberMatchとかもってんの?
idとprintがあればいいのかな。まあいいけど、そんだけのために
classいちいち用意するのめんどくない?
複数枚のカードを扱うcardsクラスなのかな?機能はいろいろ持てそうだけど
ゲーム固有すぎてどうなのかな?

707:デフォルトの名無しさん
22/11/10 19:12:07.27 /sng0JalM.net
可読性考えるとクラスのほうが良いわな
自分だけが使うなら好きに作ればいい

708:デフォルトの名無しさん
22/11/10 19:17:47.15 tUNuHkwK0.net
自分だけが使う場合でも後々困る
読みにくくていいのは再利用しないと判ってる場合

709:デフォルトの名無しさん
22/11/10 19:47:31.93 eS5awfmL0.net
>>705
689だが、トランプはクラスを作った方が(少なくともnamedtuple,dataclass)便利だと思うぞ
>>706
記号クラス、番号クラスなんて作らない
記号はenum、番号はそのまま1~13でいい
が、どの記号が黒だ赤だ、どの番号が絵柄か(JQKA)
みたいなのはたとえインスタンスが一個でもメソッドになってた方が便利だと思うけどなあ。
カードは内部表現とUI上の表現が異なるのが自然だし、そういう意味でもクラスにしておくのは悪くないと思うが
クラスにしすぎてもしょうがないというのは、ゲームのルールをクラスにして共通のインタフェース持たせて、バリエーションを切り替えられるようにしても大抵は仕方ないみたいなことだよ
もちろん、どんなゲームシステムを作るかによるし、ルールを共通インタフェースで入れ替えられるようにするメリットがある場合もあるけど

710:デフォルトの名無しさん
22/11/10 20:15:59.37 1wmpgP/ea.net
>>706
ちょっと発想が変だよ

711:デフォルトの名無しさん
22/11/10 20:18:11.54 TQxJo3Q4M.net
全てユースケース次第じゃね
13×4のブール配列で持っていたほうが都合がよい場合もあるだろうし

712:デフォルトの名無しさん
22/11/10 21:05:35.45 tUNuHkwK0.net
とりあえず作って、必要に応じてリファクタリングしていけばいい

713:デフォルトの名無しさん
22/11/10 22:35:47.17 SvDTIviz0.net
カード型のインスタンスを生成するデッキクラスを作りたいやん
deck.suffle()
hands = deck.draw(5)
みたいなさあ
あとは各ゲームで処理つくろ

714:デフォルトの名無しさん
22/11/10 22:41:30.18 tUNuHkwK0.net
カードのリストでよくね

715:687
22/11/10 23:28:06.08 ofaAiG0L0.net
多くのレスを頂き、ありがたく思います
ちょっと自己顕示欲が強い気もしますが、俺のGitHubを公開させて頂くので、
よろしければご覧下さい
URLリンク(github.com)
のblackjack_3.pyがそれです
これでもクラス使わないで書けるのかな…

716:デフォルトの名無しさん
22/11/11 00:15:20.89 ajyQllPs0.net
力作だね
友人のアドバイスは痛いほどよく分かる
クラス云々よりも「ここからメインの処理」以降の各処理を関数にまとめるほうがずっと大事だよ

717:デフォルトの名無しさん
22/11/11 00:21:32.63 gNt5qX/T0.net
1関数がでけえ
ということを言いたかったんだろう

718:デフォルトの名無しさん
22/11/11 00:23:24.86 Zi2NVkwv0.net
マサくん

719:デフォルトの名無しさん
22/11/11 00:52:49.95 5ErmYwLs0.net
何のためにでっかい関数の中にクラス作るのか分からん
この設計センスなら友人のアドバイスは正しいな

720:デフォルトの名無しさん
22/11/11 00:55:17.73 n0j9oGtca.net
blackjackで囲むのって意味あんのかね

721:687
22/11/11 01:14:49.41 9Wk/PRlY0.net
レスありがとうございます
>>688
クラス使った方が見通し良くなりますよね?
スッキリJavaにもそう書いてありました(Pythonの本ではないですが)
>>689
複雑にならない方がいいからだそうです
>>690
ええ、ですので皆さんの意見をお聞きしたんです
>>691
うーん、明らかにプロと思われる方の書き込みもありますし、
信じられるレスはあると思います
>>696
ただ彼の主張では、なるべくクラスは使うな、ということでした
Javaを独習した経験がある俺からすると、少し疑問符が付くのです

722:デフォルトの名無しさん
22/11/11 01:21:10.00 n0j9oGtca.net
クソクラスをクソと認識できるためにもそれなりの能力が要るからね

723:687
22/11/11 01:28:18.01 9Wk/PRlY0.net
>>704
そうですよね
カードのクラス作りました
>>706
複数枚のカードを持つCardクラスです
ブラックジャックなので、A・J・Q・Kの値は別に決める必要があります
>>707
可読性は重視したいです
>>716
そう言って頂けると大変ありがたいです
やっぱりそこは1つの関数にまとめた方がいいんですね
>>717-720
それも友人に、グローバル変数は少なければ少ないほどいい、と言われたのを
受けてのことです

724:デフォルトの名無しさん
22/11/11 01:39:45.03 tK9Svk7P0.net
>>715
ざっと見た感じ、そりゃ色々言われるわ
クラス云々言ってるのに、blackjackっていうデカい関数の中にクラス切ってる時点で吹いたわ
あとクラスの役割分担というか、所属してる関数もおかしく感じるわ
プレイヤークラスっていう名前なのに、にルール関係のスコア計算、バースト判定とかが入ってるし
それこそblackjackのルールを管理をするクラスを作る方が自然だべ
あともうし自分で書くとしたら、ルールクラスにis_winっていう関数作って、そこで勝利判定してtrue/falseで返すわ
最後に全パターンで人間/CPUに対して勝利判定かけてるけど、参加プレイヤー/CPUが増えた時の勝利判定の実装とか
これベースだと面倒だろうなって思った

725:デフォルトの名無しさん
22/11/11 01:43:33.89 tK9Svk7P0.net
>>723
>グローバル変数は少なければ少ないほどいい
これはまず変数のスコープは狭い方が良い、っていう話だぞ
(グローバル変数だとそれこそスコープが広くてどこで書き変わるのかが不明瞭になるから、なるべく使うなって言われてる)
バカデカい関数を作るって何の解決にもなってねえwwwwwww

726:デフォルトの名無しさん
22/11/11 05:10:58.43 dIH3TsNBM.net
使い回さないのに関数化やクラス化する意味ってあるんだろうか

727:デフォルトの名無しさん
22/11/11 06:45:32.82 fLgBQpEC0.net
is_<動詞> ってたまに見るけどどこかで流行ってるの?

728:デフォルトの名無しさん
22/11/11 07:35:28.77 BuWtLPbxM.net
>>726
この業界には、「一処理は100行に収めるべし」という格言があってな
つまり100行以上の処理があったら、100行以内にぶった切って関数にして順次呼ぶべしってことなんだよ
理由は知らん

729:デフォルトの名無しさん
22/11/11 08:51:38.78 QYmFVFm/a.net
まあ分割っていうか処理に名前つけろやって感じだな
抽象的に書こう

730:デフォルトの名無しさん (ワッチョイ 7247-GkOZ)
22/11/11 09:56:03.89 gNt5qX/T0.net
でかい関数はあれもやってこれもやってになってるから、
それを機能毎に分割すればいいだけ
1箇所からしか呼ばれない関数がいくつもできるけど、それは問題ない

うまく作ってあれば、関数の戻り値を次の関数に渡すだけ、みたいなシンプルな構造に自然となる
それぞれの機能が変数をいろいろ共有していて切り分けられなかったら、元々の書き方が悪い

731:デフォルトの名無しさん (ワッチョイ 927e-THRA)
22/11/11 10:26:37.58 XH1qJoq+0.net
pythonではクラスをあまり作らないほうがいい、じゃなくて
お前にクラスは百年早い、って言いたかったんだろその友人は。
碌に関数も作れないのだからクラスなんて無用の長物。

732:デフォルトの名無しさん (ワッチョイ 9263-zlm6)
22/11/11 10:31:34.23 PAETAgDl0.net
昔、関数ごとに仕様書作成が必要な現場があって、それを嫌って
ほとんどの関数が200行を超えるサイズで書かれる様になった

733:デフォルトの名無しさん (ワッチョイ 7247-GkOZ)
22/11/11 11:00:27.63 gNt5qX/T0.net
テストができんやろ

734:デフォルトの名無しさん (ワントンキン MM62-76so)
22/11/11 11:32:04.24 dIH3TsNBM.net
文書をアウトライン化するような感じで使うのね
メンテのときに不要な部分を読み飛ばせるのがメリットか

735:デフォルトの名無しさん (ワッチョイ 36a6-BGGY)
22/11/11 11:49:07.64 VSBKZoKf0.net
何か楽をするためのプログラムを作るのはいけるけど、
サイトの仕様変更で動かなくなったときの修正が苦痛だな、、
そのまま放置になりがち、、

736:デフォルトの名無しさん
22/11/11 11:59:14.38 gNt5qX/T0.net
スクレイピングはそのうち廃れる気がする
元データがあって人間用に加工して表示したものをまた元データに戻さなくても、
最初から元データで公開した方がお互い楽なことに気づき始めた

737:デフォルトの名無しさん
22/11/11 12:00:41.38 L/uUC/Rw0.net
C++でキー処理が数百行で、しかもファンクションキー毎に少しづつ違う
という構成のものを改修させれて辟易したことある
もしや、行数で成果が評価される現場だったのか

738:デフォルトの名無しさん
22/11/11 13:05:05.34 XH1qJoq+0.net
>>736
人間向けのHTMLを解析すれば無料なのにAPI経由は有料ってのも多いしな。

739:デフォルトの名無しさん
22/11/11 13:20:52.45 wT5HNNmtr.net
Python勉強してるけどどうやって初心者の粋を超えたらいいのかが分からない
何か作りたいけどその何かが思い浮かばないし
自動で巡回してエロビDLするとか電子書籍自動でスクショとかできるんだっけ?

740:デフォルトの名無しさん
22/11/11 13:23:31.34 RyfBFStrM.net
やってから聞けばいいのに

741:デフォルトの名無しさん
22/11/11 14:22:12.06 Pyb1B8zp0.net
>>739
早速思い浮かんでるじゃん
誰かができないと言うからやらないというなら何の勉強にもならない
明確な目的が無く勉強自体が目的なら機能しないゴミしか作れなくても意味があるし思い浮かんだもの全部作ればいい

742:デフォルトの名無しさん
22/11/11 14:23:36.91 JQ5LhQOs0.net
>>736
もしかして、APIが存在しない世界から来た方ですか?

743:デフォルトの名無しさん
22/11/11 14:29:46.62 JQ5LhQOs0.net
別に既にあるものでも構わないから、何か作りたいというモチベーションがある内に色んなものを作った方がいい
独学は特に大事

744:デフォルトの名無しさん
22/11/11 14:34:12.48 JQ5LhQOs0.net
途中で奥ちゃった
そしたら、次に何か新しいもの作りたくなった時に何が足りないか自分で調べられるぐらいにはなってると思う

745:デフォルトの名無しさん
22/11/11 15:20:48.12 KvbVlUc20.net
奥り人なんだな

746:デフォルトの名無しさん
22/11/11 19:48:45.92 acI+Bjnd0.net
クラスを設計するのはものすごく難しい
作り始めないとわからないことも多いし
途中で仕様が変わったりしたら
簡単に破綻する
大きなプロジェクトでは
途中でクラス構成を変えることは
困難なので
しばしば大変なことになる

747:デフォルトの名無しさん
22/11/11 21:01:39.50 BuWtLPbxM.net
>>739
この前も同じこと言ってる人がいたよ
作りたいものがないのでなんかアイディアないですかって
まず、何のためにPythonを勉強しているのか聞きたい
普通は作りたいものがあったり、仕事だから、課題だからという
動機があるはずなんだ
動機もなく身に着けられるものじゃないよ。プログラミングは一応専門技能だから

748:デフォルトの名無しさん
22/11/11 21:43:58.80 zIrG+C10M.net
自分探しして働かない奴と同じだよな

749:デフォルトの名無しさん
22/11/11 21:51:56.55 7hjsWVqY0.net
>>746
最初から完璧な要件・設計で開発なんて不可能だから
途中で構成変わる前提で組み立てるんだよ
クラスに限った話じゃないけど

750:デフォルトの名無しさん
22/11/11 22:08:17.04 dIH3TsNBM.net
インスピレーションを得るなら多くの作品に触れることでしょ

751:デフォルトの名無しさん
22/11/11 22:16:07.93 PAETAgDl0.net
プログラムやりたいと思った動機ってそれぞれあるだろう

752:デフォルトの名無しさん
22/11/11 22:26:55.54 6yLWq/6IM.net
ズボラほど上達が早いように思う
やりたくないことは全部コンピュータにやらせたい

753:デフォルトの名無しさん
22/11/11 23:18:07.02 ywa4HP4la.net
現実は必死に努力してQiitaにちょっとやってみたーみたいなこと書いてるやつばっかりだけどな

754:デフォルトの名無しさん
22/11/11 23:19:39.80 ywa4HP4la.net
部品の置き換えが利くってのは完璧なプログラムとほとんど同義だね
具体的にねっちょりと書くしか無いこともあるけど

755:デフォルトの名無しさん
22/11/12 11:00:15.35 jZf8/3In0.net
質問です。
これをヘッドレスモードで動かしたいのですがどうするといいでしょうか?
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
browesr = webdriver.Chrome(ChromeDriverManager().install())

756:デフォルトの名無しさん (ワッチョイ 2389-UXd1)
22/11/12 11:41:37.67 jZf8/3In0.net
すいません。
解決しました。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
browesr = webdriver.Chrome(ChromeDriverManager().install(), options=options)
browesr.quit()

757:デフォルトの名無しさん
22/11/12 13:03:04.39 FJxDQgNh0.net
ちゃんと終わってる筈なのにタスクマネージャに残るんだよな

758:デフォルトの名無しさん
22/11/12 14:06:44.73 QoJFyqg+0.net
async関数の終了を2箇所で待つ方法は無いですか?
普通にawaitを2回使うと既にawaitedした処理だぜってエラーが出ます。

759:デフォルトの名無しさん
22/11/12 14:23:25.37 ToW7pe8/0.net
答えは持ち合わせてないけど同じことを考えたことあるな

760:デフォルトの名無しさん
22/11/12 14:24:45.91 T1+EK47n0.net
エラーなんか無視する

761:デフォルトの名無しさん
22/11/12 15:22:28.94 QoJFyqg+0.net
>>760
エラー握り潰しても、肝心な処理待ちが出来ないので駄目です。

762:デフォルトの名無しさん
22/11/12 15:46:37.70 AXYSbt7W0.net
メモ化する関数でラップ
頻発するならデコレータ書く

763:デフォルトの名無しさん
22/11/12 15:58:01.40 pkT2sKDg0.net
>>736
廃れないよ。Webって広告で成り立っている基本人間向けの情報発信ツールなんだから、人間向けのデータ(文章とかね)のスクレイピングは依然として残る。
APIは有料というのは広告収入につながらないから割と当たり前の話で。
利益を目的としないデータ公開はオープンデータ化していくだろうけれど、そういうのって政府や自治体のデータ公開、大学などぐらいしか基本的にはないだろう。

764:デフォルトの名無しさん
22/11/12 15:59:27.93 QoJFyqg+0.net
>>762
メモ化だと結果は再利用できますが、同時に待つことができないように思います。

765:デフォルトの名無しさん
22/11/12 16:11:11.71 2L2Z04CZ0.net
>>758
task = asyncio.create_task(async_fn())
result = await task
result = await task

766:デフォルトの名無しさん
22/11/12 17:58:24.29 QoJFyqg+0.net
>>765
うまく行きました! ありがとうございます!
TaskというのがJavaScriptのPromiseみたいな事してくれるんですね!

767:デフォルトの名無しさん
22/11/13 15:06:45.34 mAjRS9pi0.net
なんでOpenCVはちょっとしたことでぶっ壊れるんですか?

768:デフォルトの名無しさん
22/11/13 19:56:00.79 S7gZHHW/.net
_max=7
_min=3
a=2
if a>_max:
 a=_max
elif a<_min:
 a=_min
print(a)
これってもっとスマートに書けませんでしたっけ

769:デフォルトの名無しさん
22/11/13 20:10:07.19 S7gZHHW/.net
ちなみに0を含む自然数で
range(_min,_max,1)
です
これの範囲外は判定できるのですが
_minより小さく外したのか、_maxより大きく外したのか
って一行で短く書けなかったかな、と。
記憶違いかもしれません、無かったような気がしてきました

770:デフォルトの名無しさん
22/11/13 20:12:10.16 cgKyROyF0.net
a=max(min(a,_max),_min)

771:デフォルトの名無しさん
22/11/13 20:16:44.58 S7gZHHW/.net
>>770
できました!!
そうですこれです!
_max=7
_min=3
for i in range(10):
 print(i,max(min(i,_max),_min))
ありがとうございます!!

772:デフォルトの名無しさん
22/11/13 20:31:52.48 J0JT7kUN0.net
>>767
それ依存関係が壊れてるからじゃね?

773:デフォルトの名無しさん
22/11/13 20:32:48.89 xH4HHaxN0.net
最近excelで、答えがマイナスなら0にする、という処理がめんどくさいと思ったけど、
max(0,x)でシンプルに書けた

774:デフォルトの名無しさん
22/11/13 20:47:55.89 ZI0YVyVbM.net
>>770は一見何をやっているのか、やりたいのかわからんし
メンテナンス性が悪そうだ
>>768の方はわかるし改造しやすい
コードは短ければ良いというものではないな

775:デフォルトの名無しさん
22/11/13 21:04:49.96 xH4HHaxN0.net
やりたいことをまず自然言語で書く
minとmaxの範囲内ならそのまま出力
範囲外ならばminとmaxでガードする
これだけの情報量があるので、コードがそれなりの長さになって当然

776:デフォルトの名無しさん
22/11/13 21:55:42.10 tnJyg4LP0.net
コードゴルフは面白いけどコミットはしないで欲しい

777:デフォルトの名無しさん
22/11/13 22:26:40.02 0j2qr49h0.net
>>768
np.clip(array, _min, _max)

778:デフォルトの名無しさん
22/11/13 22:58:00.99 6O/r8caVM.net
何がコードゴルフかはジャンルにもよるよなあ。シェーダーなんかだとminmaxみたいなのは常套句みたいなものだし、
pythonの内包表記もちょっと凝り出すとコードゴルフ的になる。コーディングガイドラインがあればいいけどね。

779:デフォルトの名無しさん
22/11/13 23:21:42.99 m9TsWVuY6.net
>>774
さすがにこのくらいはグラフ考えて分かってよ

780:デフォルトの名無しさん
22/11/13 23:47:29.33 6O/r8caVM.net
まあ、minmaxの良くないところは、慌てて順番反転させたりする事故が起きると何もクリップしてくれなくなるところなんだけど(良く使うなら関数化しておくべき)
とはいえ、minmax的なのNGって、関数型言語全否定に近いものがあると思うんで、その立場でいいのかは考えるべきだと思うけど。
もちろん手続き型メインのPython使ってるんだからPythonではそんなのお門違いだという意見も否定はしないけど

781:デフォルトの名無しさん
22/11/14 00:16:33.72 RdGM128m0.net
maxとminでもいいと思うけど
頻繁に使うならclamp(val,lo,hi)みたいな関数作ればいい

782:デフォルトの名無しさん
22/11/14 02:35:12.38 Msnzn9MH0.net
初コメです。質問させてください。
ウィジェットに、押すとnotepad.exeを起動するボタンを作ったのですが、起動したテキストに文字を書き込む(テンプレート)ボタンを作りたいのですが、どのようにすれば良いでしょうか…

783:デフォルトの名無しさん
22/11/14 06:45:05.17 gWXr0Wl00.net
>>782
PyAutoGUI
内容次第ではPythonやめてAutoItだけの方が楽

784:デフォルトの名無しさん
22/11/14 08:17:37.42 z4y/4erZ0.net
AutoItとかAutoHotKeyとかキーボードやマウスをプログラムから操作して
自動化するツールはいろいろあるけど、
どれが最強なのか今ひとつ判らない
簡単にする為に出来ることを減らしていたり、
いろいろできるけど言語仕様が原始的すぎたり
pythonと同じ書き方ができて出来ないことがないのが理想

785:デフォルトの名無しさん
22/11/14 11:56:34.09 EWF0SvAna.net
対象のプログラムやウィンドウが背面に行ったり最小化されててもちゃんと動くかどうかで選べばいい

786:デフォルトの名無しさん (アウアウウー Saa9-OAfI)
22/11/14 12:07:38.76 K3emCbowa.net
対象プログラムが背面にあっても動くってウインドウハンドルにSendMessageを直接送る感じ?

787:デフォルトの名無しさん
22/11/14 13:25:46.58 99fRleugr.net
windowsのアプリをバックグラウンドで起動して動かすようなのが出来たらなぁ
マウス取られるから他の作業できないんだよね

788:デフォルトの名無しさん
22/11/14 15:23:33.25 yiG7YfVR6.net
WindowsをVMに入れるか、リモートデスクトップ複数人ログイン対応のWindowsならフォアグラウンドでも実質バックグラウンドにできるから困らなさそうだ
Win32APIを直で叩きまくればバックグラウンドでも動かせるような気がしないでもないけど、イベント処理のメインループが回るかは謎だね。全然詳しくないや。

789:デフォルトの名無しさん
22/11/14 21:26:19.81 LuassWmg0.net
>>770 がメンテ性悪いとか言う人は
プログラマー向いてないと思うの

790:デフォルトの名無しさん
22/11/14 21:33:59.91 z4y/4erZ0.net
temp = min(input, upper_limit)
output = max(temp ,lower_limit)
これを合体させただけなんだけどな

791:デフォルトの名無しさん
22/11/14 21:55:04.23 aUHlXgrZ0.net
関数化せずにインラインでそれ書いてきたらレビューでハネる

792:デフォルトの名無しさん
22/11/14 21:57:02.78 CWXyQGgF0.net
頻度次第

793:デフォルトの名無しさん
22/11/14 22:11:36.21 gxurLVtj0.net
>>789
まあ適宜空白入れろよとは思う
a = max(min(a, _max), _min)

794:デフォルトの名無しさん (テテンテンテン MM4b-SGX1)
22/11/14 22:20:44.64 xHaIXgz6M.net
>>790
そもそもmaxの中にminがある時点で頭がおかしくなる俺の場合

795:デフォルトの名無しさん (ワッチョイ 2379-zDZ1)
22/11/14 22:25:56.00 SUeRZblV0.net
import ctypes
SendMessage = ctypes.windll.user32.SendMessageW
hWnd = ごにょごにょ
pos = (y << 16) + x
SendMessage(hWnd, 513, 0, pos) # WM_LBUTTONDOWN
SendMessage(hWnd, 514, 0, pos) # WM_LBUTTONUP

>>786
こんな感じかな
どのみち、どう処理されるかは相手次第になってしまうけど
背面とか最小化とか、最悪トップに出てきたり

796:デフォルトの名無しさん (ワッチョイ 4b10-TWxH)
22/11/14 22:50:26.22 dRHiUVHI0.net
>>793
それは自動整形機能の仕事で人間が気遣うことではない

797:デフォルトの名無しさん
22/11/14 23:20:28.77 XZXiqJkqd.net
>>783
pyautoguiで一歩進みました!ありがとうございます!

798:デフォルトの名無しさん
22/11/15 01:47:11.37 qykSWSRkM.net
>>790
その2行なら受け入れるけど合体させるのは意味はないじゃんって思うよ

799:デフォルトの名無しさん
22/11/15 01:54:09.53 JTzzJATw0.net
関数名と変数名を工夫すれば良いと思う
_付けるだけでそれを区別するのはちょっと

800:デフォルトの名無しさん
22/11/15 01:57:43.67 7joAI/8k0.net
>>798
それは、+=や、f.write(','.join([若干長い内包表記]))が許されるかみたいな話とも繋がっていて、
ぶっちゃけ何度も出て来ればこんな簡単なのは1行にしたくなると思うよ
内包表記だって1行で書きたいから書くって側面もあるわけじゃない。

801:デフォルトの名無しさん
22/11/15 04:53:39.40 Ohwd0nE10.net
>>796
掲示板に書く時におまえが気遣えよって言う指摘だぞw

802:デフォルトの名無しさん
22/11/15 05:06:14.63 9j9A/xThM.net
a = range_ni_osameru(_min, a, _max)
どや!

803:デフォルトの名無しさん
22/11/15 07:01:01.67 +rxWDVlZ0.net
def range_ni_osameru(_min, a, _max):
 return _min if a < _min else a if a < _max else _max
こうかな!

804:デフォルトの名無しさん
22/11/15 07:23:39.25 GEd0aXfXa.net
>>803
俺なら
return _min if a < _min else _max if _max < a else a
って書くかな

805:デフォルトの名無しさん
22/11/15 07:58:14.56 gBqAZwZY0.net
行数というよりは、中間の変数を登場させたくない
合体させるにしても、後ろに繋げていく方式とネストを深くしていく方式があって、
ネストだとどうしても可読性を損なう

806:デフォルトの名無しさん
22/11/15 09:57:28.98 8PAOVKkjr.net
普段可読性重視だけどリスト内包表記だけは速度変わりすぎるから超複雑にしちゃう

807:デフォルトの名無しさん
22/11/15 10:05:08.85 gBqAZwZY0.net
100倍変わるなら考えるけど、倍程度ならどうでもいい

808:デフォルトの名無しさん
22/11/15 10:09:34.58 UuLVn12M0.net
内包表記も+=も三項演算子もlambdaも、(言語設計者に対して)日和って半端なもん入れてんじゃねーよって思う。

809:デフォルトの名無しさん
22/11/15 11:23:10.48 kX2rkZkfM.net
lambdaは1.0からあったような

810:デフォルトの名無しさん
22/11/15 11:40:36.69 f326q+3ca.net
ごてごて書けるラムダを入れないのは良心を感じるけどなあ

811:デフォルトの名無しさん
22/11/15 11:49:44.03 Hm3rex5D6.net
>>807
処理時間がめちゃ長くて100倍速くしたいならそもそもCythonとか考える
処理時間ちょっとイラッとするぐらいだったら内包表記で倍速くなれば十分なので内包表記止まりかな

812:デフォルトの名無しさん
22/11/15 12:21:34.90 8tiGCKxN0.net
サンプルコードがlambdaで書かれがちなのもあって
その場で関数定義できるの知らずにごてごて書くケースよく見かける
悲しい

813:デフォルトの名無しさん
22/11/15 12:29:38.05 UuLVn12M0.net
なるほどlambdaに関しては色々意見あるな。半端な知識で物言った俺が悪かったわ。

814:デフォルトの名無しさん
22/11/15 12:41:30.32 LyOwpv5bM.net
ランバダはアローより判りやすいとは思う

815:デフォルトの名無しさん
22/11/15 15:38:19.98 0yW3pQONa.net
Pythonやるならまず「多重継承」な!
なぜ多重継承かというと、自然言語処理において語句の意味は「文脈」によって異なるからだ!
随意筋  不随意筋
  ↖   ↗
   チンポ
チンコの随意筋と不随意筋
URLリンク(d.hatena.ne.jp)
URLリンク(mobile.twitter.com)
土門大貴/Daiki Domon
@daikidomon
Pythonの多重継承がわかりづらい。
継承クラスの左のクラス名を指定とかあたおか。
(deleted an unsolicited ad)

816:デフォルトの名無しさん
22/11/15 16:33:43.21 QGmQMBHUa.net
>>807
30分かかるループの中心で何度も使われてたら
倍速になったら15分短縮出来るし
100分の1なら数秒で終わるんだが

817:デフォルトの名無しさん
22/11/15 16:35:27.51 QGmQMBHUa.net
>>808
内包表記: あり
+=: あり
lambda: あり
三項演算子: お前は遺憾

818:デフォルトの名無しさん
22/11/15 17:03:46.50 gBqAZwZY0.net
とりあえず読みやすいように書いて、速度で困ったら考える

819:デフォルトの名無しさん
22/11/15 21:46:19.64 9SlnRoJw0.net
>>817
内包表記? あり
:+= ? あり
:lambda ?あり
:三項演算子?お前は遺憾
:以下略
ということですね

820:デフォルトの名無しさん
22/11/15 21:56:48.23 gBqAZwZY0.net
C言語とかの伝統的な三項演算子と違って、
pythonのはなかなかいけてると思うけど

821:デフォルトの名無しさん
22/11/15 21:57:19.12 UuLVn12M0.net
他の言語なら三項演算子は大好きなんだけどPythonだと異物感がある

822:デフォルトの名無しさん
22/11/15 22:05:16.10 1JRqHGzu0.net
並びが
(Trueの場合) (条件) (Falseの場合)
になるのが気に食わん

823:デフォルトの名無しさん
22/11/15 22:26:23.67 5Bygj+p/0.net
わかる
慣れだろうけどさ

824:デフォルトの名無しさん
22/11/15 22:38:17.97 Ohwd0nE10.net
英文的には違和感無いのかもしれないけどねぇ...

825:デフォルトの名無しさん
22/11/15 22:47:36.70 gBqAZwZY0.net
if <condition> then <val1> else <val2>
も英語として不自然さは無い
それを、?と:にするのは無理がある
冒頭からifで始まるとif文と区別が付かないので、少し倒置して、
<val1> if <condition> else <val2>
も一応文として読める
C言語よりはまし

826:デフォルトの名無しさん
22/11/15 22:59:00.88 9SlnRoJw0.net
通常のif文でも処理(結果)を先に書く新しい言語を作るか

827:デフォルトの名無しさん
22/11/15 23:05:11.16 1JRqHGzu0.net
プログラミング言語に英文的な自然さとか求めて無いんだわ
読む順と評価順が入れ替わってんのがセンス無いと思う

828:デフォルトの名無しさん
22/11/15 23:08:14.86 gBqAZwZY0.net
処理をifで修飾するというのは既にある
elseは知らん

829:デフォルトの名無しさん
22/11/15 23:10:56.55 JTzzJATw0.net
~よりはましって、自信がないみたいな感じ

830:デフォルトの名無しさん
22/11/15 23:17:01.94 gBqAZwZY0.net
C言語よりは遥かにましである、ふはははは

831:デフォルトの名無しさん
22/11/15 23:20:26.27 JTzzJATw0.net
そうする合理的理由を説明すれば納得するものじゃないの?
そういうのを聞きたいんだよ

832:デフォルトの名無しさん
22/11/16 02:18:10.64 +BRGBknF0.net
英語だと if が後置されることもあるからなあ
内包表現は数学の集合の書き方からすれば普通
ラムダは lisp のラムダ関数から考えれば普通
一応理屈はあるけど

833:デフォルトの名無しさん
22/11/16 06:47:02.50 hZtfMd7O0.net
三項演算子だけじゃなくて、Perlみたいに後置ifを実装してれば違和感ないんだろうね
(Trueの場合) if (条件)
Falseの場合はなにもしないけど、Pythonだとpassがあるから三項演算子だけで十分って判断かな

834:デフォルトの名無しさん
22/11/16 07:48:59.49 Mu0tRvhG0.net
そうか結構、式である三項演算子や内包表記やlambdaも受け入れられてるんだなぁ。そうなるとなんでmatchを式にしなかったのか。コレガワカラナイ

835:デフォルトの名無しさん
22/11/16 08:23:43.73 kn7mTN5OM.net
>>827
これ正解

836:デフォルトの名無しさん
22/11/16 08:33:48.92 16ZvLDN40.net
後置ifは文だから値を返す必要がない(=elseは不要)。三項演算子は式だから値を返すのに必要。
なんでこの2つを混ぜたような文法にしたのかなんとも不思議。

837:デフォルトの名無しさん
22/11/16 10:19:45.94 8bWIhcn5a.net
どこが変なのかわからん
俺の英語スキルが高杉なせいか…

838:デフォルトの名無しさん
22/11/16 11:29:27.97 hZGrSsPO0.net
lambdaといっしょでゴチャゴチャ書きづらいのが良心
実際は構文解析が楽だとか余計な()が不要とかあるんだろうけど

839:デフォルトの名無しさん
22/11/16 11:35:19.24 OkTwZqPda.net
lambda calculus のif then else combinatorの語順やろ
URLリンク(ja.m.wikipedia.org)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

479日前に更新/241 KB
担当:undef