Pythonのお勉強 Part68

レス数が900を超えています。1000を超えると表示できなくなるよ。
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/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 で解決
865デフォルトの名無しさん (アウアウウー Saa9-FFna)
垢版 |
2022/11/16(水) 17:39:41.33ID:z+sJwdsYa
アンカ間違ってた >>854
2022/11/17(木) 17:09:06.64ID:HF5V3LeY0
import re
str = 'abc123456defg'
s = 'bc'
m = re.search(f'{s}(\d{2})', str)
if m:
 print(m.groups()[0])

\d{2}だと12が表示される
\d{1}とか\d{6}だと想定と違う
なんで?
2022/11/17(木) 17:18:01.85ID:AwlB4ADs0
そりゃ、想定が間違えているから、以外になんか考えられるのかい?
何を想定していてどうなったかも説明しないで、想定と違う!って
言われてもね、人に説明する気も無けりゃ教えを乞う態度でもないし
何したいの?日記ならよそでやってくれる?
2022/11/17(木) 17:57:04.97ID:WlhESVTj0
>>> f'{s}(¥d{2})'
'bc(¥d2)'
2022/11/17(木) 18:01:06.12ID:F2Az3Gmh0
インデントが全角スペースなのが全てを表してる
2022/11/17(木) 18:02:37.66ID:HF5V3LeY0
f文字列の中で{m,n}を使うにはどうすれば
2022/11/17(木) 18:20:55.05ID:OILH8ycX0
口のきき方覚えてから出直せ
2022/11/17(木) 18:28:04.25ID:qm+2WY7I0
まあまあ、お勉強スレなんだし未熟者同士で問題解決していくスタンスで良いんじゃないの
2022/11/17(木) 18:31:28.74ID:p1aORMOX0
そんなイライラしなくても{{´·ω·`}}
2022/11/17(木) 18:42:18.14ID:HF5V3LeY0
>>873
できた
2022/11/17(木) 19:51:50.25ID:SY2MYyO/0
f文字列で¥とか/区切りの一部だけを取るような事出来ないのかな?
splitしてスライスで取るのはどうも好かん
876デフォルトの名無しさん (ワッチョイ c533-BvCT)
垢版 |
2022/11/17(木) 21:45:06.27ID:SeoZPm6s0
>>1>>866
> ★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
>   ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
> ttps://techiedelight.com/compiler/  Run Code機能あり。
> ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
> ttp://pastebin.com/     まずまずシンプル。
> ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
2022/11/17(木) 21:54:06.61ID:HF5V3LeY0
それも必要悪だな
貼った先が無くなった後でログを見た人に何の知見も残せない
2022/11/17(木) 23:08:46.05ID:kmneQuTyH
>>876
>デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
一回 python を選択すれば、あとはずっと選択したpythonのままになりますよ
2022/11/17(木) 23:09:37.45ID:kmneQuTyH
>>877
いまのところ ideone はずっと消えずに残っていますよ
https://mevius.5ch.net/test/read.cgi/tech/1434079972/
2022/11/17(木) 23:12:16.09ID:lsW0mIad0
何年くらい残れば良いんですかい?
2022/11/17(木) 23:18:26.59ID:HF5V3LeY0
外部を利用する根拠がインデントの崩壊だけなら、崩壊していないのだから不要
なるべく単体で完結していた方がいい

コードが長いとか、修正後のコードと比較したいとかになると、
さすがに掲示板の機能を超える
2022/11/17(木) 23:37:59.57ID:lsW0mIad0
そういうのは公開する本人が決めれば良いのでは
2022/11/17(木) 23:48:46.20ID:mPrTa5cw0
今更ここで議論する課題でもない
この件はペンディングとして、運用時に自己判断でよいだろう
884デフォルトの名無しさん (ブーイモ MM4b-5kBA)
垢版 |
2022/11/18(金) 01:00:39.04ID:pHizXfulM
短いコードなら直接貼ったほうが断然いいわな
885デフォルトの名無しさん (ワッチョイ ad2c-WM47)
垢版 |
2022/11/18(金) 01:14:15.49ID:E2GzXrNb0
日付(○年○月○日 ○時○分)を抽出してクリップボードにコピーするのってどんな感じでやればいいですかね…
2022/11/18(金) 01:26:07.35ID:wTg9qmzl0
何からだよ
2022/11/18(金) 02:58:16.10ID:q5cRZ16n0
コピーはコマンドでできるから
Windowsならcopy、Macならpbcopy
テキスト抽出して外部コマンド実行するだけ
2022/11/18(金) 09:55:43.93ID:Wj1K/ZC10
例えば、Ruby でクリップボードを使うなら、

あらかじめ、クリップボードへ「 あい 」を入れておいてから、
以下のスクリプトを実行すると、
文字列の前後にある、空白類が削除されて「あい」となる

ただし、RubyはUTF-8 だから、Windows のCP932 と変換する必要がある

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
2022/11/18(金) 11:23:40.68ID:P6oHPIQ5M
ググったらpyperclipって便利なモジュールがあるらしいよ
前レスから予想するにウィジェットの日付けをメモ帳に貼り付ける感じかな
ウィジェットからのデータ取得はウィジェット作成時にStringVarを関連付けてget,setで取得すれば良い
ログを残すならファイル入出力でやるべきではと思うけど
2022/11/18(金) 12:03:10.69ID:r5yXYIm80
>>888
2022/11/18(金) 12:36:54.85ID:xtaMWlke0
このrubyの人はpython使ってるの?
892デフォルトの名無しさん (ワッチョイ 4b5f-4ilx)
垢版 |
2022/11/19(土) 00:25:37.14ID:GBhwsA7a0
すみません、質問いいですか?
2022/11/19(土) 00:47:22.64ID:UL/detO70
rubyの人最近見なくなったと思ったら
また自己主張してきたな
2022/11/19(土) 11:12:56.68ID:mOhQy7yjM
半島人は日本人女性を強姦しまくってる!
895デフォルトの名無しさん (ワッチョイ 0610-zeL/)
垢版 |
2022/11/19(土) 11:38:44.50ID:N2zY4TUb0
千葉県民に喧嘩売ってんのかコラ
896デフォルトの名無しさん (ワッチョイ 5701-kfYZ)
垢版 |
2022/11/19(土) 12:30:11.97ID:o7Lf802R0
千葉県は恐ろしい田舎なうえ、今もドンドン衰退してる最中。
でも、関東以外の人はそんなこと知らないから、東京の一部みたいな顔できるよ。
2022/11/19(土) 12:31:01.14ID:xRYqKE7Q0
横須賀市民 「東京原人と一緒にしないでくれ」
898デフォルトの名無しさん (ワッチョイ 5701-kfYZ)
垢版 |
2022/11/19(土) 12:43:32.19ID:o7Lf802R0
逆に考えることもできるよ。
電車一本で東京に出れる田舎って最強。
みたいな。
899デフォルトの名無しさん (JP 0H43-NYGE)
垢版 |
2022/11/19(土) 13:00:44.68ID:A7QHTxNqH
ぶぼぼ
2022/11/19(土) 13:04:21.61ID:zkXQWCUr0
沿線の人だけやん
901デフォルトの名無しさん (アウアウウー Sa3b-kfYZ)
垢版 |
2022/11/19(土) 16:23:26.89ID:F8GIHVyHa
久里浜も上総一ノ宮も似たようなもんやろ
2022/11/20(日) 02:18:52.83ID:Wzaj0Q6e0
すみません、python超初心者なのですが
ttps://github.com/ihopenot/LpkUnpackerのpython LpkUnpacker.py /path/to/lpk outputdir /path/to/config.jsonのコードを使いたいのですが、何回やっても

python LpkUnpacker.py "C:\11302997995514316369.lpk" "C:\aaaa" "C:\config.json"
^^^^^^^^^^^
SyntaxError: invalid syntaxのエラーが出てできません。

どうかご教授の程よろしくお願いいたしますm(__)m
2022/11/20(日) 02:34:00.03ID:TRWjspKo0
>>902
そのコードをpythonから読み込んでいますか?
2022/11/20(日) 04:33:04.83ID:ehdgoKhb0
>>902
SyntaxErrorなんで構文に間違いがあるんだけど、ここじゃ正確なコードが貼り付けられないから、自力解決を目指すか、外部サービスを利用してコードを晒すかしてください
2022/11/20(日) 06:11:26.69ID:ZkE4F4/w0
>>902
ファイルパスの¥を2個つけないとエスケープ文字になるんじゃ
2022/11/20(日) 09:38:29.85ID:f5Y3Vp3X0
Cドライブのルートなんかに置くなよ
907デフォルトの名無しさん (ワッチョイ 6290-kfYZ)
垢版 |
2022/11/20(日) 12:40:41.69ID:zjEDBX2J0
うろ覚えで関数名だけわかってるような状態で
関数の使い方がよくわからなくなることがある
たまにドットが前に来るやつあるじゃん

kansu(引数)
.kansu(引数)
aaa.kansu()

モジュールがどうとかいう話なんだろうけど
こういうのみんなどうやって覚えてるの?
2022/11/20(日) 12:46:02.71ID:+Dw5cfeT0
組み込み関数は全部覚える
そこに無ければオブジェクトのメソッド
.sort()とsorted()みたいに両方にあったりもする
2022/11/20(日) 13:01:55.30ID:7a4yJys50
IDEを頼るのです
ここかここがええんかと関数名をちょっとタイプしてみてああんそこはダメぇ(OKという意味)と出たシグネチャを使えばよい
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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