Pythonのお勉強 Part68

■ このスレッドは過去ログ倉庫に格納されています
2022/09/15(木) 18:52:26.67ID:VqLViKoX0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その57
http://mevius.5ch.net/test/read.cgi/tech/1653225908/

〇前スレ〇
Pythonのお勉強 Part67
https://mevius.5ch.net/test/read.cgi/tech/1653540315/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ​
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/11/06(日) 21:15:54.96ID:2BZA6H+N0
電子工作もそうだけど、環境は整いすぎに整ってて、やりたいことがあれば何でもすぐにできる
でもやりたいことが見つからない

さてはみんな環境を整えることを目的にしているな
2022/11/07(月) 06:48:18.34ID:E9VDXcWoM
アホな質問だな~
まずやりたいことがあって、それからツールを探すものだろ
667デフォルトの名無しさん (アウアウウー Sacd-ocuO)
垢版 |
2022/11/07(月) 08:02:58.71ID:jFHCFA25a
その通りだけどやりたいことが見つからないんだわ
もしかすると勉強からの逃避のためにプログラミングという逃げ場を作りたいのかもしれない。やりたいことが自然と出てきたらやることにするよ
2022/11/07(月) 08:09:59.84ID:nVmoLWqcM
遠回りの人生それも人生
2022/11/07(月) 10:49:11.04ID:vghVm0yU0
巨大数の実数計算は最先端だぞ。
2022/11/07(月) 14:36:29.74ID:ns7213lX0
>>654
EasyOCR は?
pytorch必須だが
2022/11/07(月) 14:48:18.41ID:a5k3bCTy0
使い物になるOCRはみんなAIで有料なんだよな
客はDXしたい企業だから高い
2022/11/07(月) 15:15:22.15ID:dmSTAQ160
料金みたことある?業務で考えたらめちゃ安いとおもうが
2022/11/07(月) 15:26:05.72ID:kmERiYaX0
有料OCR知ってる俺スゲー君なんて相手にすんなよ...
2022/11/07(月) 15:26:54.13ID:a5k3bCTy0
OCRしたい書類なんて有限だから、あらかた終わったら需要が無くなる
そしたらgoogle様が無料開放してくれる筈
675デフォルトの名無しさん (ワッチョイ 8101-wRrB)
垢版 |
2022/11/07(月) 15:41:01.53ID:rtBnyCPM0
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
https://xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/
2022/11/07(月) 15:51:46.76ID:a5k3bCTy0
AIだから教育が必須で、それなりにコストがかかる
こんなもんは公共事業で、どこかが代表してやって、コスト回収できたら無料化する
各国で自分のとこの言語についてやるのが筋だけど、
どうせ日本はやらないのでgoogleがやる
2022/11/07(月) 16:22:49.11ID:a5k3bCTy0
似たようなので、音声からテキストへの変換も金かかる
あれが無料で出来たら過去の膨大な音声や動画の資料が検索したり分析可能になって、
文化が大きく前進するだろうに金がブレーキかけてる
国の事業としてやれば一人頭の負担なんて微々たるものなのに
2022/11/07(月) 16:28:42.14ID:ns7213lX0
この夏whisperが公開されたやろ?
2022/11/07(月) 16:32:21.66ID:a5k3bCTy0
そんなのあったのか
マスク様々やな
680デフォルトの名無しさん (ワッチョイ b18e-ly3j)
垢版 |
2022/11/07(月) 16:46:46.72ID:6QND4EcV0
>>675
Rubyオワコン
2022/11/07(月) 21:52:40.91ID:J6xutGri0
>>677
つまり文字起こし言いたいんだろ?
なんかクソ認識悪いAPIだったら何かあった気がする
2022/11/08(火) 10:16:17.14ID:gvBOR9qA0
半島系帰化人は強姦魔ばかり
死ねよクズ帰化人!
2022/11/08(火) 11:03:03.92ID:NJ3yWFAyM
何でこのスレで暴れてるんだよ
2022/11/08(火) 11:17:25.58ID:Z/fTsurM0
壊れちゃったんだろ
2022/11/08(火) 14:10:32.60ID:SId0EMb3a
ランダムに書き込んでるbotだよ
686デフォルトの名無しさん (ワッチョイ 5e63-xcLn)
垢版 |
2022/11/08(火) 19:27:53.62ID:h+Zmgne00
有料と言ってもgoogleAPIってかなり安いと思うんだけど
手持ちの本数十冊OCRして1,000円いかなかった気がする
2022/11/09(水) 17:03:12.36ID:a7tugATP0
某有名ゲーム会社で働いてる友人が、「Pythonではあまりクラスを使うべきではない。
それほど高度なプログラムでなければ関数を使えばいい」と言っていたんですが、
そうなんでしょうか?
皆さんの意見を聞かせて頂きたいです
2022/11/09(水) 17:08:46.66ID:F89FAkjE0
関数でできればいいけど、引数たくさん渡したり、グローバル変数で渡してたり、
みたいな汚いことするくらいならクラスがいい
689デフォルトの名無しさん (ワッチョイ 1997-OSgl)
垢版 |
2022/11/09(水) 17:30:19.69ID:PaG6ZUsK0
Javaのようになんでもかんでもクラスを作る感じじゃないというのは事実。
でも、dataclassとかnamedtupleとかは使うかな。
とはいえやることによると思う。
2022/11/09(水) 17:30:52.94ID:ugvw1ns9a
状態を持つオブジェクトを扱うならクラスは必然なのでは
2022/11/09(水) 18:12:18.95ID:uDSXzENKM
pythonはメンバ変数にself必須なのがダルい
メインプログラムまでクラス化する必要はないと思う
規模が小さければモジュール変数をグローバル変数のように使うのが便利
vscodeならインテリセンス利くし
2022/11/09(水) 18:40:16.27ID:cOB3Ubn30
>>687
プログラム水準(?)の高低でなく、実行速度の遅速でそう言われるのを聞いたことはある。大昔ね。
事実かは知らぬ。
2022/11/09(水) 18:59:13.95ID:2JAkKfpeM
>>687
使うべきでない理由をなぜ聞かなかったのか?
それを書けば話は終わる
君の友人ほどスキルのある人はここにはいないからな
2022/11/09(水) 20:24:05.09ID:FPtq7UfL0
>>687
必要になるまで不要なもので汚すな
シンプルに書けってことかと
2022/11/09(水) 20:51:46.35ID:yZGUhxlRM
>>691
だなselfを二文字くらいの別名に出来ないのかな?
2022/11/09(水) 20:56:49.26ID:F89FAkjE0
perlから来たからselfは当たり前だと思ってる
2022/11/09(水) 21:06:27.04ID:EoOj57gu0
開発者間で同意取れるなら
ただの関数の引数だから好きに変えられはする
2022/11/09(水) 21:10:50.26ID:5c+x4O200
>>687
理由を示さないお作法は無視していい
2022/11/09(水) 21:21:40.38ID:uDSXzENKM
グローバル変数用のファイルを作ってas gでインポートってのをqiitaで見たけどかなり便利
g.nameみたいにアクセスする
2022/11/09(水) 21:30:42.42ID:F89FAkjE0
それは他に影響しないというだけで、グローバル変数の欠点は何も解決しない
作って使ってすぐ捨てるならいいけど、保守が必要なら時間かけてシンプルにしとかないと
2022/11/09(水) 21:48:48.07ID:dM0Gb0+w6
>>695
すればいいじゃん
2022/11/09(水) 21:57:03.34ID:uDSXzENKM
グローバル変数はプログラム全体を通した設定値とかに使うもんじゃない?
それこそメインプログラムにとってのselfよ
変に引数取りまくるより可読性高いと思う
規模にもよるんだろうけど
2022/11/09(水) 22:03:03.05ID:F89FAkjE0
configを読んでグローバルに格納してmain()を呼ぶ
みたいな作りになってるのが多い
うちのスクリプト
2022/11/09(水) 22:10:05.03ID:EoOj57gu0
設定値の保持ならぜんぜんOK
状態を丸見えで管理できないとこに置くなってことでしょ
2022/11/09(水) 22:13:24.86ID:F89FAkjE0
関数の中に下請け関数があって、
なんかごちゃごちゃしてきたからリファクタリングだと外に出したらスコープから外れたので、
じゃあみんなグローバル化したれ、みたいにglobal付けて誤魔化す
2022/11/09(水) 22:23:48.43ID:dM0Gb0+w6
せめてconst できればいいのに
2022/11/09(水) 23:03:08.26ID:a3eCQ+jX0
>>687
どうせ、いたずらにclassを多用したゴミトランプゲームを
見せたんだろ?いつまでも練習だからって言って、設計もしないで
ゴミコードを見せ続けるから嫌われかけてるんだよ。
2022/11/10(木) 00:21:13.04ID:8bOle1Do0
クラス化するのは、言語のタイプやプロジェクトの規模ではなくて
データ同士の相関を元に、見通しをよくすることが目的だと思う
あるいは自分用ライブラリとしてカプセル化しておきたいとか
そういう話を置いて、やらない方がいいレベルの問題があるのかw
2022/11/10(木) 00:21:46.71ID:a0I25TkAM
>>687
理由を示せないお作法は取るべきでない
2022/11/10(木) 00:24:11.32ID:KkTOa1Su0
>>687
おまいは友人に言われた事を何でも信じるのか?
この洗剤飲めるの。by アム・○○ぃ
2022/11/10(木) 00:27:36.22ID:OBeQnBIU0
匿名掲示板で聞いて得た答えを信じるというのもどうかと思う
2022/11/10(木) 00:32:26.74ID:ofaAiG0L0
レスしてくれた皆さんありがとうございます
参考にさせて頂きたいと思います

>>689
CUIの簡単なカードゲームではどうでしょうか?

>>693
失礼しました
曰く「クラスを下手に使わない方がコードが無駄に複雑にならなくてよい」
からだそうです

>>694
まさにそんな感じです

>>698
ちょっと彼に悪いかなって…

>>707
ゴミときたもんだ
彼の人柄はそんな感じじゃないよ
2022/11/10(木) 10:45:10.57ID:S46ME7RY0
ねえ、openpyxlとかでオンライン上のExcelファイルを修正できないの?
2022/11/10(木) 10:49:29.30ID:+lvrwnnZ0
どこかのクラウド(どこ?)に置いたファイルの意味なのか
Office365で作成したファイルなのか
2022/11/10(木) 11:02:13.25ID:ci7p4+PJa
どっちにしても手元に持ってこないと厳しいんじゃないかねえ
2022/11/10(木) 11:46:55.13ID:rDE3wZvsM
関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。
2022/11/10(木) 11:47:43.94ID:rDE3wZvsM
>>695
好きな名前をつけていいのよ。meとか
2022/11/10(木) 13:09:31.60ID:ci7p4+PJa
abcを使わないとできんことはあまりやりたくないねえ
2022/11/10(木) 13:26:04.03ID:tUNuHkwK0
abcは知ってても
2022/11/10(木) 13:50:13.84ID:99QPf7Vaa
>>716
> 関数とクラス両方使えるのがpythonのメリットなのだから、常に適切な方を選べってことじゃないかと。
なら初めからそう言えや
まあそう言われたら適切な方の決め方について小一時間は問い詰めたいけどなw
2022/11/10(木) 15:41:21.49ID:avJI0YX/0
>>713
teamsで出来るぞ
2022/11/10(木) 16:33:33.24ID:99QPf7Vaa
>>721
マジで?
やり方教えて
2022/11/10(木) 16:41:09.55ID:avJI0YX/0
>>722
teamsに申し込んでoffice365に申し込めばクラウド上でエクセルが使えます
724デフォルトの名無しさん (ブーイモ MMd5-OSgl)
垢版 |
2022/11/10(木) 17:38:31.76ID:aw2UCTg8M
>>712
カードゲームならカードクラスは作ったほうがよさそう。
あとはカードゲームのルールによる。
2022/11/10(木) 18:14:06.31ID:y5PDmjdo0
>>724
687が戒めたいのがまさに724みたいな馬鹿野郎なんだろうな。
目的と手段が入れ替わってclass考えて作るのに必死になる馬鹿。
2022/11/10(木) 18:34:12.90ID:RApG3JqD0
カードクラス作ってもいいけど、同じカードが存在しない、記号4つと数字1〜13の組み合わせの
ものにクラスがいちいちいるかな。
カードクラスはカード1枚を表して、なにができればいいんだ?

記号クラスがあって、各記号クラスがあって、ナンバークラスがあって、
is_MarkMatchとかis_NumberMatchとかもってんの?
idとprintがあればいいのかな。まあいいけど、そんだけのために
classいちいち用意するのめんどくない?
複数枚のカードを扱うcardsクラスなのかな?機能はいろいろ持てそうだけど
ゲーム固有すぎてどうなのかな?
2022/11/10(木) 19:12:07.27ID:/sng0JalM
可読性考えるとクラスのほうが良いわな
自分だけが使うなら好きに作ればいい
2022/11/10(木) 19:17:47.15ID:tUNuHkwK0
自分だけが使う場合でも後々困る
読みにくくていいのは再利用しないと判ってる場合
729デフォルトの名無しさん (ワッチョイ 1997-OSgl)
垢版 |
2022/11/10(木) 19:47:31.93ID:eS5awfmL0
>>725
689だが、トランプはクラスを作った方が(少なくともnamedtuple,dataclass)便利だと思うぞ
>>726
記号クラス、番号クラスなんて作らない
記号はenum、番号はそのまま1~13でいい
が、どの記号が黒だ赤だ、どの番号が絵柄か(JQKA)
みたいなのはたとえインスタンスが一個でもメソッドになってた方が便利だと思うけどなあ。

カードは内部表現とUI上の表現が異なるのが自然だし、そういう意味でもクラスにしておくのは悪くないと思うが

クラスにしすぎてもしょうがないというのは、ゲームのルールをクラスにして共通のインタフェース持たせて、バリエーションを切り替えられるようにしても大抵は仕方ないみたいなことだよ
もちろん、どんなゲームシステムを作るかによるし、ルールを共通インタフェースで入れ替えられるようにするメリットがある場合もあるけど
2022/11/10(木) 20:15:59.37ID:1wmpgP/ea
>>726
ちょっと発想が変だよ
2022/11/10(木) 20:18:11.54ID:TQxJo3Q4M
全てユースケース次第じゃね
13×4のブール配列で持っていたほうが都合がよい場合もあるだろうし
2022/11/10(木) 21:05:35.45ID:tUNuHkwK0
とりあえず作って、必要に応じてリファクタリングしていけばいい
733デフォルトの名無しさん (ワッチョイ b12c-rDMU)
垢版 |
2022/11/10(木) 22:35:47.17ID:SvDTIviz0
カード型のインスタンスを生成するデッキクラスを作りたいやん

deck.suffle()
hands = deck.draw(5)

みたいなさあ
あとは各ゲームで処理つくろ
2022/11/10(木) 22:41:30.18ID:tUNuHkwK0
カードのリストでよくね
2022/11/10(木) 23:28:06.08ID:ofaAiG0L0
多くのレスを頂き、ありがたく思います
ちょっと自己顕示欲が強い気もしますが、俺のGitHubを公開させて頂くので、
よろしければご覧下さい
https://github.com/masa-gh/practice
のblackjack_3.pyがそれです
これでもクラス使わないで書けるのかな…
2022/11/11(金) 00:15:20.89ID:ajyQllPs0
力作だね

友人のアドバイスは痛いほどよく分かる
クラス云々よりも「ここからメインの処理」以降の各処理を関数にまとめるほうがずっと大事だよ
2022/11/11(金) 00:21:32.63ID:gNt5qX/T0
1関数がでけえ
ということを言いたかったんだろう
2022/11/11(金) 00:23:24.86ID:Zi2NVkwv0
マサくん
739デフォルトの名無しさん (ワッチョイ 5e10-420S)
垢版 |
2022/11/11(金) 00:52:49.95ID:5ErmYwLs0
何のためにでっかい関数の中にクラス作るのか分からん
この設計センスなら友人のアドバイスは正しいな
2022/11/11(金) 00:55:17.73ID:n0j9oGtca
blackjackで囲むのって意味あんのかね
2022/11/11(金) 01:14:49.41ID:9Wk/PRlY0
レスありがとうございます

>>708
クラス使った方が見通し良くなりますよね?
スッキリJavaにもそう書いてありました(Pythonの本ではないですが)

>>709
複雑にならない方がいいからだそうです

>>710
ええ、ですので皆さんの意見をお聞きしたんです

>>711
うーん、明らかにプロと思われる方の書き込みもありますし、
信じられるレスはあると思います

>>716
ただ彼の主張では、なるべくクラスは使うな、ということでした
Javaを独習した経験がある俺からすると、少し疑問符が付くのです
2022/11/11(金) 01:21:10.00ID:n0j9oGtca
クソクラスをクソと認識できるためにもそれなりの能力が要るからね
2022/11/11(金) 01:28:18.01ID:9Wk/PRlY0
>>724
そうですよね
カードのクラス作りました

>>726
複数枚のカードを持つCardクラスです
ブラックジャックなので、A・J・Q・Kの値は別に決める必要があります

>>727
可読性は重視したいです

>>736
そう言って頂けると大変ありがたいです
やっぱりそこは1つの関数にまとめた方がいいんですね

>>737-740
それも友人に、グローバル変数は少なければ少ないほどいい、と言われたのを
受けてのことです
2022/11/11(金) 01:39:45.03ID:tK9Svk7P0
>>735
ざっと見た感じ、そりゃ色々言われるわ
クラス云々言ってるのに、blackjackっていうデカい関数の中にクラス切ってる時点で吹いたわ

あとクラスの役割分担というか、所属してる関数もおかしく感じるわ
プレイヤークラスっていう名前なのに、にルール関係のスコア計算、バースト判定とかが入ってるし
それこそblackjackのルールを管理をするクラスを作る方が自然だべ

あともうし自分で書くとしたら、ルールクラスにis_winっていう関数作って、そこで勝利判定してtrue/falseで返すわ
最後に全パターンで人間/CPUに対して勝利判定かけてるけど、参加プレイヤー/CPUが増えた時の勝利判定の実装とか
これベースだと面倒だろうなって思った
2022/11/11(金) 01:43:33.89ID:tK9Svk7P0
>>743
>グローバル変数は少なければ少ないほどいい
これはまず変数のスコープは狭い方が良い、っていう話だぞ
(グローバル変数だとそれこそスコープが広くてどこで書き変わるのかが不明瞭になるから、なるべく使うなって言われてる)
バカデカい関数を作るって何の解決にもなってねえwwwwwww
2022/11/11(金) 05:10:58.43ID:dIH3TsNBM
使い回さないのに関数化やクラス化する意味ってあるんだろうか
2022/11/11(金) 06:45:32.82ID:fLgBQpEC0
is_<動詞> ってたまに見るけどどこかで流行ってるの?
2022/11/11(金) 07:35:28.77ID:BuWtLPbxM
>>746
この業界には、「一処理は100行に収めるべし」という格言があってな
つまり100行以上の処理があったら、100行以内にぶった切って関数にして順次呼ぶべしってことなんだよ
理由は知らん
2022/11/11(金) 08:51:38.78ID:QYmFVFm/a
まあ分割っていうか処理に名前つけろやって感じだな
抽象的に書こう
2022/11/11(金) 09:56:03.89ID:gNt5qX/T0
でかい関数はあれもやってこれもやってになってるから、
それを機能毎に分割すればいいだけ
1箇所からしか呼ばれない関数がいくつもできるけど、それは問題ない

うまく作ってあれば、関数の戻り値を次の関数に渡すだけ、みたいなシンプルな構造に自然となる
それぞれの機能が変数をいろいろ共有していて切り分けられなかったら、元々の書き方が悪い
2022/11/11(金) 10:26:37.58ID:XH1qJoq+0
pythonではクラスをあまり作らないほうがいい、じゃなくて
お前にクラスは百年早い、って言いたかったんだろその友人は。
碌に関数も作れないのだからクラスなんて無用の長物。
2022/11/11(金) 10:31:34.23ID:PAETAgDl0
昔、関数ごとに仕様書作成が必要な現場があって、それを嫌って
ほとんどの関数が200行を超えるサイズで書かれる様になった
2022/11/11(金) 11:00:27.63ID:gNt5qX/T0
テストができんやろ
2022/11/11(金) 11:32:04.24ID:dIH3TsNBM
文書をアウトライン化するような感じで使うのね
メンテのときに不要な部分を読み飛ばせるのがメリットか
2022/11/11(金) 11:49:07.64ID:VSBKZoKf0
何か楽をするためのプログラムを作るのはいけるけど、
サイトの仕様変更で動かなくなったときの修正が苦痛だな、、
そのまま放置になりがち、、
2022/11/11(金) 11:59:14.38ID:gNt5qX/T0
スクレイピングはそのうち廃れる気がする
元データがあって人間用に加工して表示したものをまた元データに戻さなくても、
最初から元データで公開した方がお互い楽なことに気づき始めた
2022/11/11(金) 12:00:41.38ID:L/uUC/Rw0
C++でキー処理が数百行で、しかもファンクションキー毎に少しづつ違う
という構成のものを改修させれて辟易したことある
もしや、行数で成果が評価される現場だったのか
2022/11/11(金) 13:05:05.34ID:XH1qJoq+0
>>756
人間向けのHTMLを解析すれば無料なのにAPI経由は有料ってのも多いしな。
2022/11/11(金) 13:20:52.45ID:wT5HNNmtr
Python勉強してるけどどうやって初心者の粋を超えたらいいのかが分からない
何か作りたいけどその何かが思い浮かばないし
自動で巡回してエロビDLするとか電子書籍自動でスクショとかできるんだっけ?
2022/11/11(金) 13:23:31.34ID:RyfBFStrM
やってから聞けばいいのに
2022/11/11(金) 14:22:12.06ID:Pyb1B8zp0
>>759
早速思い浮かんでるじゃん
誰かができないと言うからやらないというなら何の勉強にもならない
明確な目的が無く勉強自体が目的なら機能しないゴミしか作れなくても意味があるし思い浮かんだもの全部作ればいい
762デフォルトの名無しさん (ワッチョイ 1933-pSqO)
垢版 |
2022/11/11(金) 14:23:36.91ID:JQ5LhQOs0
>>756
もしかして、APIが存在しない世界から来た方ですか?
763デフォルトの名無しさん (ワッチョイ 1933-pSqO)
垢版 |
2022/11/11(金) 14:29:46.62ID:JQ5LhQOs0
別に既にあるものでも構わないから、何か作りたいというモチベーションがある内に色んなものを作った方がいい
独学は特に大事
764デフォルトの名無しさん (ワッチョイ 1933-pSqO)
垢版 |
2022/11/11(金) 14:34:12.48ID:JQ5LhQOs0
途中で奥ちゃった
そしたら、次に何か新しいもの作りたくなった時に何が足りないか自分で調べられるぐらいにはなってると思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況