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/11(金) 15:20:48.12ID:KvbVlUc20
奥り人なんだな
2022/11/11(金) 19:48:45.92ID:acI+Bjnd0
クラスを設計するのはものすごく難しい
作り始めないとわからないことも多いし
途中で仕様が変わったりしたら
簡単に破綻する
大きなプロジェクトでは
途中でクラス構成を変えることは
困難なので
しばしば大変なことになる
2022/11/11(金) 21:01:39.50ID:BuWtLPbxM
>>759
この前も同じこと言ってる人がいたよ
作りたいものがないのでなんかアイディアないですかって

まず、何のためにPythonを勉強しているのか聞きたい
普通は作りたいものがあったり、仕事だから、課題だからという
動機があるはずなんだ
動機もなく身に着けられるものじゃないよ。プログラミングは一応専門技能だから
2022/11/11(金) 21:43:58.80ID:zIrG+C10M
自分探しして働かない奴と同じだよな
2022/11/11(金) 21:51:56.55ID:7hjsWVqY0
>>766
最初から完璧な要件・設計で開発なんて不可能だから
途中で構成変わる前提で組み立てるんだよ
クラスに限った話じゃないけど
2022/11/11(金) 22:08:17.04ID:dIH3TsNBM
インスピレーションを得るなら多くの作品に触れることでしょ
2022/11/11(金) 22:16:07.93ID:PAETAgDl0
プログラムやりたいと思った動機ってそれぞれあるだろう
2022/11/11(金) 22:26:55.54ID:6yLWq/6IM
ズボラほど上達が早いように思う
やりたくないことは全部コンピュータにやらせたい
2022/11/11(金) 23:18:07.02ID:ywa4HP4la
現実は必死に努力してQiitaにちょっとやってみたーみたいなこと書いてるやつばっかりだけどな
2022/11/11(金) 23:19:39.80ID:ywa4HP4la
部品の置き換えが利くってのは完璧なプログラムとほとんど同義だね
具体的にねっちょりと書くしか無いこともあるけど
775デフォルトの名無しさん (ワッチョイ 2389-UXd1)
垢版 |
2022/11/12(土) 11:00:15.35ID:jZf8/3In0
質問です。
これをヘッドレスモードで動かしたいのですがどうするといいでしょうか?

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
browesr = webdriver.Chrome(ChromeDriverManager().install())
776デフォルトの名無しさん (ワッチョイ 2389-UXd1)
垢版 |
2022/11/12(土) 11:41:37.67ID:jZf8/3In0
すいません。
解決しました。

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()
2022/11/12(土) 13:03:04.39ID:FJxDQgNh0
ちゃんと終わってる筈なのにタスクマネージャに残るんだよな
2022/11/12(土) 14:06:44.73ID:QoJFyqg+0
async関数の終了を2箇所で待つ方法は無いですか?
普通にawaitを2回使うと既にawaitedした処理だぜってエラーが出ます。
2022/11/12(土) 14:23:25.37ID:ToW7pe8/0
答えは持ち合わせてないけど同じことを考えたことあるな
2022/11/12(土) 14:24:45.91ID:T1+EK47n0
エラーなんか無視する
2022/11/12(土) 15:22:28.94ID:QoJFyqg+0
>>780
エラー握り潰しても、肝心な処理待ちが出来ないので駄目です。
2022/11/12(土) 15:46:37.70ID:AXYSbt7W0
メモ化する関数でラップ
頻発するならデコレータ書く
783デフォルトの名無しさん (ワッチョイ c597-AMkR)
垢版 |
2022/11/12(土) 15:58:01.40ID:pkT2sKDg0
>>756
廃れないよ。Webって広告で成り立っている基本人間向けの情報発信ツールなんだから、人間向けのデータ(文章とかね)のスクレイピングは依然として残る。
APIは有料というのは広告収入につながらないから割と当たり前の話で。
利益を目的としないデータ公開はオープンデータ化していくだろうけれど、そういうのって政府や自治体のデータ公開、大学などぐらいしか基本的にはないだろう。
2022/11/12(土) 15:59:27.93ID:QoJFyqg+0
>>782
メモ化だと結果は再利用できますが、同時に待つことができないように思います。
2022/11/12(土) 16:11:11.71ID:2L2Z04CZ0
>>778
task = asyncio.create_task(async_fn())
result = await task
result = await task
2022/11/12(土) 17:58:24.29ID:QoJFyqg+0
>>785
うまく行きました! ありがとうございます!
TaskというのがJavaScriptのPromiseみたいな事してくれるんですね!
2022/11/13(日) 15:06:45.34ID:mAjRS9pi0
なんでOpenCVはちょっとしたことでぶっ壊れるんですか?
2022/11/13(日) 19:56:00.79ID:S7gZHHW/
_max=7
_min=3
a=2
if a>_max:
 a=_max
elif a<_min:
 a=_min
print(a)

これってもっとスマートに書けませんでしたっけ
2022/11/13(日) 20:10:07.19ID:S7gZHHW/
ちなみに0を含む自然数で
range(_min,_max,1)
です
これの範囲外は判定できるのですが
_minより小さく外したのか、_maxより大きく外したのか
って一行で短く書けなかったかな、と。
記憶違いかもしれません、無かったような気がしてきました
790デフォルトの名無しさん (ワッチョイ 4b10-TWxH)
垢版 |
2022/11/13(日) 20:12:10.16ID:cgKyROyF0
a=max(min(a,_max),_min)
2022/11/13(日) 20:16:44.58ID:S7gZHHW/
>>790
できました!!
そうですこれです!

_max=7
_min=3
for i in range(10):
 print(i,max(min(i,_max),_min))

ありがとうございます!!
2022/11/13(日) 20:31:52.48ID:J0JT7kUN0
>>787
それ依存関係が壊れてるからじゃね?
2022/11/13(日) 20:32:48.89ID:xH4HHaxN0
最近excelで、答えがマイナスなら0にする、という処理がめんどくさいと思ったけど、
max(0,x)でシンプルに書けた
2022/11/13(日) 20:47:55.89ID:ZI0YVyVbM
>>790は一見何をやっているのか、やりたいのかわからんし
メンテナンス性が悪そうだ
>>788の方はわかるし改造しやすい
コードは短ければ良いというものではないな
2022/11/13(日) 21:04:49.96ID:xH4HHaxN0
やりたいことをまず自然言語で書く
minとmaxの範囲内ならそのまま出力
範囲外ならばminとmaxでガードする

これだけの情報量があるので、コードがそれなりの長さになって当然
2022/11/13(日) 21:55:42.10ID:tnJyg4LP0
コードゴルフは面白いけどコミットはしないで欲しい
2022/11/13(日) 22:26:40.02ID:0j2qr49h0
>>788
np.clip(array, _min, _max)
798デフォルトの名無しさん (ブーイモ MM69-AMkR)
垢版 |
2022/11/13(日) 22:58:00.99ID:6O/r8caVM
何がコードゴルフかはジャンルにもよるよなあ。シェーダーなんかだとminmaxみたいなのは常套句みたいなものだし、
pythonの内包表記もちょっと凝り出すとコードゴルフ的になる。コーディングガイドラインがあればいいけどね。
2022/11/13(日) 23:21:42.99ID:m9TsWVuY6
>>794
さすがにこのくらいはグラフ考えて分かってよ
800デフォルトの名無しさん (ブーイモ MM69-AMkR)
垢版 |
2022/11/13(日) 23:47:29.33ID:6O/r8caVM
まあ、minmaxの良くないところは、慌てて順番反転させたりする事故が起きると何もクリップしてくれなくなるところなんだけど(良く使うなら関数化しておくべき)
とはいえ、minmax的なのNGって、関数型言語全否定に近いものがあると思うんで、その立場でいいのかは考えるべきだと思うけど。
もちろん手続き型メインのPython使ってるんだからPythonではそんなのお門違いだという意見も否定はしないけど
2022/11/14(月) 00:16:33.72ID:RdGM128m0
maxとminでもいいと思うけど
頻繁に使うならclamp(val,lo,hi)みたいな関数作ればいい
802デフォルトの名無しさん (ワッチョイ ad2c-WM47)
垢版 |
2022/11/14(月) 02:35:12.38ID:Msnzn9MH0
初コメです。質問させてください。
ウィジェットに、押すとnotepad.exeを起動するボタンを作ったのですが、起動したテキストに文字を書き込む(テンプレート)ボタンを作りたいのですが、どのようにすれば良いでしょうか…
2022/11/14(月) 06:45:05.17ID:gWXr0Wl00
>>802
PyAutoGUI
内容次第ではPythonやめてAutoItだけの方が楽
2022/11/14(月) 08:17:37.42ID:z4y/4erZ0
AutoItとかAutoHotKeyとかキーボードやマウスをプログラムから操作して
自動化するツールはいろいろあるけど、
どれが最強なのか今ひとつ判らない

簡単にする為に出来ることを減らしていたり、
いろいろできるけど言語仕様が原始的すぎたり
pythonと同じ書き方ができて出来ないことがないのが理想
2022/11/14(月) 11:56:34.09ID:EWF0SvAna
対象のプログラムやウィンドウが背面に行ったり最小化されててもちゃんと動くかどうかで選べばいい
2022/11/14(月) 12:07:38.76ID:K3emCbowa
対象プログラムが背面にあっても動くってウインドウハンドルにSendMessageを直接送る感じ?
2022/11/14(月) 13:25:46.58ID:99fRleugr
windowsのアプリをバックグラウンドで起動して動かすようなのが出来たらなぁ
マウス取られるから他の作業できないんだよね
808デフォルトの名無しさん (ガックシ 0669-AMkR)
垢版 |
2022/11/14(月) 15:23:33.25ID:yiG7YfVR6
WindowsをVMに入れるか、リモートデスクトップ複数人ログイン対応のWindowsならフォアグラウンドでも実質バックグラウンドにできるから困らなさそうだ
Win32APIを直で叩きまくればバックグラウンドでも動かせるような気がしないでもないけど、イベント処理のメインループが回るかは謎だね。全然詳しくないや。
2022/11/14(月) 21:26:19.81ID:LuassWmg0
>>790 がメンテ性悪いとか言う人は
プログラマー向いてないと思うの
2022/11/14(月) 21:33:59.91ID:z4y/4erZ0
temp = min(input, upper_limit)
output = max(temp ,lower_limit)
これを合体させただけなんだけどな
2022/11/14(月) 21:55:04.23ID:aUHlXgrZ0
関数化せずにインラインでそれ書いてきたらレビューでハネる
2022/11/14(月) 21:57:02.78ID:CWXyQGgF0
頻度次第
2022/11/14(月) 22:11:36.21ID:gxurLVtj0
>>809
まあ適宜空白入れろよとは思う
a = max(min(a, _max), _min)
2022/11/14(月) 22:20:44.64ID:xHaIXgz6M
>>810
そもそもmaxの中にminがある時点で頭がおかしくなる俺の場合
2022/11/14(月) 22:25:56.00ID:SUeRZblV0
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

>>806
こんな感じかな
どのみち、どう処理されるかは相手次第になってしまうけど
背面とか最小化とか、最悪トップに出てきたり
816デフォルトの名無しさん (ワッチョイ 4b10-TWxH)
垢版 |
2022/11/14(月) 22:50:26.22ID:dRHiUVHI0
>>813
それは自動整形機能の仕事で人間が気遣うことではない
817デフォルトの名無しさん (スップ Sd03-WM47)
垢版 |
2022/11/14(月) 23:20:28.77ID:XZXiqJkqd
>>803
pyautoguiで一歩進みました!ありがとうございます!
2022/11/15(火) 01:47:11.37ID:qykSWSRkM
>>810
その2行なら受け入れるけど合体させるのは意味はないじゃんって思うよ
2022/11/15(火) 01:54:09.53ID:JTzzJATw0
関数名と変数名を工夫すれば良いと思う
_付けるだけでそれを区別するのはちょっと
820デフォルトの名無しさん (ワッチョイ c597-AMkR)
垢版 |
2022/11/15(火) 01:57:43.67ID:7joAI/8k0
>>818
それは、+=や、f.write(','.join([若干長い内包表記]))が許されるかみたいな話とも繋がっていて、
ぶっちゃけ何度も出て来ればこんな簡単なのは1行にしたくなると思うよ
内包表記だって1行で書きたいから書くって側面もあるわけじゃない。
2022/11/15(火) 04:53:39.40ID:Ohwd0nE10
>>816
掲示板に書く時におまえが気遣えよって言う指摘だぞw
2022/11/15(火) 05:06:14.63ID:9j9A/xThM
a = range_ni_osameru(_min, a, _max)

どや!
2022/11/15(火) 07:01:01.67ID:+rxWDVlZ0
def range_ni_osameru(_min, a, _max):
 return _min if a < _min else a if a < _max else _max

こうかな!
2022/11/15(火) 07:23:39.25ID:GEd0aXfXa
>>823
俺なら
return _min if a < _min else _max if _max < a else a
って書くかな
2022/11/15(火) 07:58:14.56ID:gBqAZwZY0
行数というよりは、中間の変数を登場させたくない
合体させるにしても、後ろに繋げていく方式とネストを深くしていく方式があって、
ネストだとどうしても可読性を損なう
2022/11/15(火) 09:57:28.98ID:8PAOVKkjr
普段可読性重視だけどリスト内包表記だけは速度変わりすぎるから超複雑にしちゃう
2022/11/15(火) 10:05:08.85ID:gBqAZwZY0
100倍変わるなら考えるけど、倍程度ならどうでもいい
2022/11/15(火) 10:09:34.58ID:UuLVn12M0
内包表記も+=も三項演算子もlambdaも、(言語設計者に対して)日和って半端なもん入れてんじゃねーよって思う。
2022/11/15(火) 11:23:10.48ID:kX2rkZkfM
lambdaは1.0からあったような
2022/11/15(火) 11:40:36.69ID:f326q+3ca
ごてごて書けるラムダを入れないのは良心を感じるけどなあ
831デフォルトの名無しさん (ガックシ 0669-AMkR)
垢版 |
2022/11/15(火) 11:49:44.03ID:Hm3rex5D6
>>827
処理時間がめちゃ長くて100倍速くしたいならそもそもCythonとか考える
処理時間ちょっとイラッとするぐらいだったら内包表記で倍速くなれば十分なので内包表記止まりかな
2022/11/15(火) 12:21:34.90ID:8tiGCKxN0
サンプルコードがlambdaで書かれがちなのもあって
その場で関数定義できるの知らずにごてごて書くケースよく見かける
悲しい
2022/11/15(火) 12:29:38.05ID:UuLVn12M0
なるほどlambdaに関しては色々意見あるな。半端な知識で物言った俺が悪かったわ。
2022/11/15(火) 12:41:30.32ID:LyOwpv5bM
ランバダはアローより判りやすいとは思う
835デフォルトの名無しさん (アウアウウー Saa9-hD5E)
垢版 |
2022/11/15(火) 15:38:19.98ID:0yW3pQONa
Pythonやるならまず「多重継承」な!

なぜ多重継承かというと、自然言語処理において語句の意味は「文脈」によって異なるからだ!

随意筋  不随意筋
  ↖   ↗
   チンポ

チンコの随意筋と不随意筋
http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650

https://mobile.twitter.com/daikidomon/status/1385368820240437248

土門大貴/Daiki Domon
@daikidomon
Pythonの多重継承がわかりづらい。
継承クラスの左のクラス名を指定とかあたおか。
https://twitter.com/5chan_nel (5ch newer account)
836デフォルトの名無しさん (アウアウウー Saa9-FFna)
垢版 |
2022/11/15(火) 16:33:43.21ID:QGmQMBHUa
>>827
30分かかるループの中心で何度も使われてたら
倍速になったら15分短縮出来るし
100分の1なら数秒で終わるんだが
837デフォルトの名無しさん (アウアウウー Saa9-FFna)
垢版 |
2022/11/15(火) 16:35:27.51ID:QGmQMBHUa
>>828
内包表記: あり
+=: あり
lambda: あり

三項演算子: お前は遺憾
2022/11/15(火) 17:03:46.50ID:gBqAZwZY0
とりあえず読みやすいように書いて、速度で困ったら考える
2022/11/15(火) 21:46:19.64ID:9SlnRoJw0
>>837
内包表記? あり
:+= ? あり
:lambda ?あり
:三項演算子?お前は遺憾
:以下略
ということですね
2022/11/15(火) 21:56:48.23ID:gBqAZwZY0
C言語とかの伝統的な三項演算子と違って、
pythonのはなかなかいけてると思うけど
2022/11/15(火) 21:57:19.12ID:UuLVn12M0
他の言語なら三項演算子は大好きなんだけどPythonだと異物感がある
842デフォルトの名無しさん (ワッチョイ 4b10-TWxH)
垢版 |
2022/11/15(火) 22:05:16.10ID:1JRqHGzu0
並びが
(Trueの場合) (条件) (Falseの場合)
になるのが気に食わん
2022/11/15(火) 22:26:23.67ID:5Bygj+p/0
わかる
慣れだろうけどさ
2022/11/15(火) 22:38:17.97ID:Ohwd0nE10
英文的には違和感無いのかもしれないけどねぇ...
2022/11/15(火) 22:47:36.70ID:gBqAZwZY0
if <condition> then <val1> else <val2>
も英語として不自然さは無い
それを、?と:にするのは無理がある

冒頭からifで始まるとif文と区別が付かないので、少し倒置して、
<val1> if <condition> else <val2>
も一応文として読める
C言語よりはまし
2022/11/15(火) 22:59:00.88ID:9SlnRoJw0
通常のif文でも処理(結果)を先に書く新しい言語を作るか
847デフォルトの名無しさん (ワッチョイ 4b10-TWxH)
垢版 |
2022/11/15(火) 23:05:11.16ID:1JRqHGzu0
プログラミング言語に英文的な自然さとか求めて無いんだわ
読む順と評価順が入れ替わってんのがセンス無いと思う
2022/11/15(火) 23:08:14.86ID:gBqAZwZY0
処理をifで修飾するというのは既にある
elseは知らん
2022/11/15(火) 23:10:56.55ID:JTzzJATw0
~よりはましって、自信がないみたいな感じ
2022/11/15(火) 23:17:01.94ID:gBqAZwZY0
C言語よりは遥かにましである、ふはははは
2022/11/15(火) 23:20:26.27ID:JTzzJATw0
そうする合理的理由を説明すれば納得するものじゃないの?
そういうのを聞きたいんだよ
2022/11/16(水) 02:18:10.64ID:+BRGBknF0
英語だと if が後置されることもあるからなあ
内包表現は数学の集合の書き方からすれば普通
ラムダは lisp のラムダ関数から考えれば普通

一応理屈はあるけど
2022/11/16(水) 06:47:02.50ID:hZtfMd7O0
三項演算子だけじゃなくて、Perlみたいに後置ifを実装してれば違和感ないんだろうね

(Trueの場合) if (条件)

Falseの場合はなにもしないけど、Pythonだとpassがあるから三項演算子だけで十分って判断かな
2022/11/16(水) 07:48:59.49ID:Mu0tRvhG0
そうか結構、式である三項演算子や内包表記やlambdaも受け入れられてるんだなぁ。そうなるとなんでmatchを式にしなかったのか。コレガワカラナイ
2022/11/16(水) 08:23:43.73ID:kn7mTN5OM
>>847
これ正解
2022/11/16(水) 08:33:48.92ID:16ZvLDN40
後置ifは文だから値を返す必要がない(=elseは不要)。三項演算子は式だから値を返すのに必要。
なんでこの2つを混ぜたような文法にしたのかなんとも不思議。
2022/11/16(水) 10:19:45.94ID:8bWIhcn5a
どこが変なのかわからん
俺の英語スキルが高杉なせいか…
2022/11/16(水) 11:29:27.97ID:hZGrSsPO0
lambdaといっしょでゴチャゴチャ書きづらいのが良心
実際は構文解析が楽だとか余計な()が不要とかあるんだろうけど
2022/11/16(水) 11:35:19.24ID:OkTwZqPda
lambda calculus のif then else combinatorの語順やろ

https://ja.m.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97
2022/11/16(水) 11:56:49.17ID:g3qERw/e0
lambdaは綴りが覚えられないから嫌だ
2022/11/16(水) 12:13:16.57ID:8bWIhcn5a
ランバダっておぼえとけ
2022/11/16(水) 12:27:19.92ID:U3lBmIjhM
全部英単語でつなげるから、エディタで色変えたとしても見づらいってのはすごく感じる
863デフォルトの名無しさん (アウアウウー Saa9-FFna)
垢版 |
2022/11/16(水) 17:37:03.73ID:z+sJwdsYa
>>846
uby
864デフォルトの名無しさん (アウアウウー Saa9-FFna)
垢版 |
2022/11/16(水) 17:39:14.54ID:z+sJwdsYa
>>845
findall で解決
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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