Pythonのお勉強 Part69

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ c733-stRS)
垢版 |
2022/11/24(木) 21:39:44.67ID:A6xfpKBe0
!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(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/

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

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ?
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2023/01/16(月) 14:12:45.24ID:HxFrHGTf0
原文が更新されてまだ追従してないだけじゃない?
内容が古くなるけどバージョン下げたら日本語になるはず
2023/01/16(月) 23:28:41.70ID:ieLY1UIo0
英語の勉強すればおk
2023/01/17(火) 00:11:36.79ID:mKywsyCg0
ただの独り言だが以前は原著原文読めって言われてもなーと思ってたが糞機械翻訳のドキュメントがあふれるようになってからは原文読むようになったな
2023/01/17(火) 08:49:29.93ID:86vhjnqQ0
今のAIなら原文が間違ってても修正してくれるかもしれん
2023/01/18(水) 00:14:37.02ID:hk0QW4ON0
python環境自体をパッケージングして配布する方法ってあります?
ソースコードだけだと各自のローカルのライブラリのバージョン次第で動かないとかありそうなので、dockerみたいに環境丸ごとやり取りしたいんですが。
2023/01/18(水) 01:07:09.81ID:ZQLfTfm70
>>670
「あなたが本当にやりたいのはA案ではありませんか?
もしあなたが提案するB案を採用すると以下のような
ごく特殊なケースだけをしょりすることになります。
それでよろしいですか?」
673デフォルトの名無しさん (ワッチョイ c633-w88e)
垢版 |
2023/01/18(水) 01:16:21.29ID:O4NvFfr90
>>671
デプロイ先で実行環境を構築したいとかそういう話?
674デフォルトの名無しさん (ワッチョイ c633-w88e)
垢版 |
2023/01/18(水) 01:24:34.07ID:O4NvFfr90
>>671
最初にPythonをインストールしてくださいってできないの?
2023/01/18(水) 06:05:50.40ID:jSahhEMI0
>>671
pyinstallerかな?
2023/01/18(水) 07:46:04.02ID:j8aICGQQ0
依存パッケージのバージョンの話なら requirements.txt 用意することになるんだろうけど、
ユーザーの環境にインストールさせるのがうざいよなぁ。
スクリプト本体とバンドルして配布できればいいのに。
2023/01/18(水) 09:05:48.70ID:/pnBak0/0
ちゃんと判ってる人向けならrequirements.txtで足りるんだろうな
何も判らない人でもダブルクリックするだけで全てインストールされる仕組みは大変そう
2023/01/18(水) 11:48:52.72ID:cgIxykua0
使ったことないけどembeddable pythonは?
2023/01/18(水) 12:32:41.36ID:hYVfYEsja
すみません説明不足だったかも。pythonの開発環境自体を、ライブラリを含めて配布したいのです。
調べたらWinpythonがそれっぽい?
2023/01/18(水) 12:48:14.85ID:liJuFOIB0
ターゲットがLinuxならコンテナ一択やがWinアプリ書きたいん?
681デフォルトの名無しさん (ワッチョイ c633-w88e)
垢版 |
2023/01/18(水) 13:18:57.48ID:O4NvFfr90
>>679
どういう開発環境かもわからんし、pipが使えない理由もわからんけど
実行環境と開発環境をごっちゃにしてるのはわかる
よくわからんからとりあえずやってみたらいいんじゃね
682デフォルトの名無しさん (ワッチョイ 954f-3xOh)
垢版 |
2023/01/18(水) 14:04:46.70ID:s0ETZiMG0
x = 1
y = 2
l = [x, y]

l[x > y] = 1
l[x < y] = 10

先日、このアクセス初めて見たんだけど
こういう使い方できますってどこに書いてるん?
というかこれ何? 何をしてるの?
2023/01/18(水) 14:17:53.69ID:XUj03KlL0
>>682
print(int(True)) してみればわかる
2023/01/18(水) 15:13:41.38ID:+ZuSWnJO0
>>679
ソースからインストールするのが良いと思う
特定のディレクトリにインストールして
pipモジュールも全部そこに入れる
PYTHONPATH環境変数さえ切り替えればディレクトリ丸ごとzip化して展開するだけで動く
685デフォルトの名無しさん (ワッチョイ 954f-3xOh)
垢版 |
2023/01/18(水) 15:36:42.94ID:s0ETZiMG0
>>683
ああ0か1でインデックスアクセスしとるだけか…
2023/01/18(水) 15:51:40.32ID:jMlJSS1Fa
>>685
それだと2番目で10帰るのはおかしくない?
2023/01/18(水) 15:51:50.72ID:/pnBak0/0
何に使うの?
それで元のxとかも変更されたら面白いけど
688デフォルトの名無しさん (ワッチョイ 8646-powr)
垢版 |
2023/01/18(水) 17:55:01.69ID:6kj4tnJC0
>>686
以下が全て同じ事ならおかしくないのでは。
l[x < y] = 10
l[True] = 10
l[1] = 10
2023/01/18(水) 17:56:51.65ID:4G0iEoXva
>>688
これって l == [1,2] でしょう?
2023/01/18(水) 18:00:03.67ID:CSuoG/Pca
どうみても [1,10]
2023/01/18(水) 18:01:25.91ID:vDmewWjV0
ワロタ
2023/01/18(水) 18:02:02.81ID:4G0iEoXva
x = 1
y = 2
l = [x, y]
って代入してますよね。

>>690
2023/01/18(水) 18:05:03.53ID:CSuoG/Pca
>>692
その下で再代入してますよね?
2023/01/18(水) 18:07:51.72ID:guU+fOES0
>>687
だいたいゴルフ
2023/01/18(水) 18:11:56.58ID:cgb3Ru010
682じゃないけど、
l[x < y]実行すると確かに10って出るんだけど、l[x < y]て何?変数?
2023/01/18(水) 18:13:34.26ID:XUj03KlL0
ttps://wandbox.org/permlink/COIBSt4ZBZn69DsP

(´・ω・`)
2023/01/18(水) 18:24:19.05ID:cgb3Ru010
なるほど、そこは式でもいいんだw
l[1]ね
2023/01/18(水) 19:16:40.41ID:4G0iEoXva
>>693
本当だ……
すみません
699デフォルトの名無しさん (アウアウエー Sab2-eHNm)
垢版 |
2023/01/18(水) 20:20:20.43ID:Hw+b6smNa
リストのインデックスやろ
2023/01/18(水) 21:56:26.72ID:1WHyH76r0
test
701デフォルトの名無しさん (ワッチョイ ad7d-3xOh)
垢版 |
2023/01/19(木) 00:54:56.11ID:5JSgYA5N0
682だけどみんなすまん
再代入ではなくコメントアウトしたつもりだっただけだ

x = 1
y = 2
l = [x, y]

l[x > y] # 1
l[x < y] # 2

インデックスアクセスって式でもいいんだね
その仕様って公式ドキュメントかどこかに書いとるのかな?

_list[getStart() : getEnd()]
は見たことある
702デフォルトの名無しさん (ワッチョイ 9576-8egj)
垢版 |
2023/01/19(木) 08:00:24.00ID:cvaqY+KJ0
l[i+1]-l[i]
みたいなことは普通にやるでしょ

l[True]が許されてるのは知らんかったが
2023/01/19(木) 08:45:06.76ID:tHxF2dx+0
普通に考えてエラーだよな
2023/01/19(木) 10:18:38.24ID:Np1e/hbpM
cだとTrue==1,False==0
2023/01/19(木) 10:35:05.16ID:jZEAJEvg0
>>701
おそらくオリジナルのコードはもっと違うものだろう
a=[1,2,3,4,5]
a[a>3]
みたいな書き方ではないかと予想
2023/01/19(木) 10:49:25.55ID:tHxF2dx+0
Cにもよるけど、本来は0か0以外
1に限定してしまうとじゃあ2だったら?になる
0以外なら何でもいいけど1に限定するルールが追加されたりもする
2023/01/19(木) 11:10:27.46ID:Np1e/hbpM
numpyのコードでも見たんかな
2023/01/19(木) 13:45:08.48ID:O9Pu7UCm0
2択ならif文使わずにリスト+真偽値でこういう風に書けるけどこういうのってバグ誘発とかします?

print(["不合格", "合格"][a > 70])
2023/01/19(木) 13:49:31.35ID:tHxF2dx+0
print("不合格" if a <= 70 else "合格")
普通はこうするかな
そのまま文章として読める
2023/01/19(木) 14:07:07.89ID:KyLvYp+m0
>>708
自分だけが使うコードならそれでいいよ (競プロとかね)
複数人が触るコードでトリッキーなことをするのはやめたほうがいい
2023/01/19(木) 14:07:26.78ID:tUp9S1Vn0
https://twitter.com/JeroenFrijters/status/1615204074588180481?t=Nlkhxbmh050Nn6J689j40A&s=19
https://twitter.com/5chan_nel (5ch newer account)
2023/01/19(木) 14:41:58.83ID:lMPY/6+kr
>>711
2023/01/19(木) 14:50:57.06ID:tUp9S1Vn0
https://twitter.com/TyrannoSaurav/status/1615492525997035521?t=KAdJgmcRHQdgUAMSWG5mhg&s=19
https://twitter.com/5chan_nel (5ch newer account)
2023/01/19(木) 15:06:12.24ID:tHxF2dx+0
いやいやいや
2023/01/19(木) 15:21:56.82ID:UZ8Yv+jk0
って二部探索するんかい
2023/01/19(木) 16:25:33.10ID:upxAw0UEd
二分
2023/01/19(木) 17:50:13.85ID:QVFjggvT0
一部分の探索で済まそう
2023/01/19(木) 18:56:11.00ID:TNs8/XJ0a
リスト内で複数行にまたがる正規表現って可能なもんですかね?

0 りんごが1個うれた
1 りんご
2 が2個
3 売れた

りんご.*れた みたいな感じのパターンを使って最初にマッチする行位置が取りたいっす。
2023/01/19(木) 19:14:50.90ID:tHxF2dx+0
特殊な文字でjoinしたものを検索してから、特殊な文字の個数を数える

りん

みたいに行を跨いでいるものは無理
2023/01/19(木) 19:22:45.59ID:5ZAVTiSz0
特殊な文字なしでjoinして位置変換の情報は別途生成でいいんでは
2023/01/19(木) 19:29:53.07ID:tHxF2dx+0
一つずつ長くしながら比較、でも判るけど時間かかりそう
一旦文字数のテーブルに変換しておけば文字列比較はしなくて済む
2023/01/19(木) 19:50:54.78ID:TNs8/XJ0a
719
720
721
やっぱりリスト内は難しいですよね。
joinで考えます!!
2023/01/19(木) 21:09:54.59
AIに聞いた結果 >>718
https://i.imgur.com/WseDWPs.jpg
https://ideone.com/S6X4NB
2023/01/19(木) 21:26:15.66ID:tHxF2dx+0
文字列内に改行が含まれないことが明らかなら、特殊な文字として改行を使ってAIと同じ答えになる
にしてもAIすげーな
725デフォルトの名無しさん (ワッチョイ 9576-8egj)
垢版 |
2023/01/19(木) 21:34:15.13ID:cvaqY+KJ0
リストに分割されてない"\n"区切りの1本の文字列なら、
reのDOTALL使っていい感じにできそう?
2023/01/19(木) 21:37:12.72ID:tHxF2dx+0
flags=re.DOTALL は不要な時はわざわざ付けないだけで、
あって困ることはあんまりないのでむしろデフォルトにして欲しい
2023/01/21(土) 01:57:46.01ID:hmuMvNyB0
一連の処理が関数化されたライブラリサイト探してるんだけど、検索しても関数の使い方ばかりヒットする。どっかいいところある?
2023/01/21(土) 02:03:09.47ID:NCV4+yjc6
その関数を使えばいいのでは
2023/01/21(土) 02:08:14.13ID:8Gumyjw80
ChatGPTがいいよ
730デフォルトの名無しさん (ワッチョイ cf46-l+ta)
垢版 |
2023/01/21(土) 02:58:00.85ID:Bxvmrygr0
>>723
その ideone.com/S6X4NB の実行結果は match line: 4 になっている。
4行目しか、/りんご.*れた/ にマッチしてないのでは。

「複数行にまたがる正規表現」ということなら、2~5行目にかけた
"りんごが1個3 りんご4 りんごが2個うれた5 売れた"
にマッチし、match line: 2 が返りそうな気がする。
2023/01/21(土) 04:51:17.18ID:+3UW7oH80
ほんとだ
re.MULTILINEじゃなくてre.DOTALLが正解でしたね
2023/01/21(土) 13:38:37.90ID:5rRYrQvt0
みんな引数書くとき型ヒントつけてる?
Intelicenseのためになるべくつけるようにしたいんだけど
あえてつけない方がいいって意見あったりする?
2023/01/21(土) 14:01:26.32ID:fUOngKcuM
>>732
使ってないなあ
使わなくても動くものは使わなくていい
シンプルイズベスト
2023/01/21(土) 14:32:39.33ID:A7VrgYN70
俺は書く。
引数の型なんて昔からコメントに書いてたしなぁ。
2023/01/21(土) 16:32:06.79
AIで勝手につけてもらったほうが楽だったりして
https://i.imgur.com/EyAlxnO.jpg
2023/01/21(土) 17:06:12.97ID:EhE1HfEs0
>>732
書ける型は必ず書くかな
なくても理解できるなんてまやかしだからね
一人で数百行のスクリプト書くだけなら好きにすればいいけど
2023/01/21(土) 17:54:45.51ID:N4/N+WFUd
俺も書く
明日の自分は別人だとおもってるから
2023/01/21(土) 18:03:08.29ID:6NqTTwhj0
必要そうだと思えば書く
一律には決めない
739デフォルトの名無しさん (ワッチョイ a397-xFde)
垢版 |
2023/01/21(土) 18:29:49.08ID:vxlp1VLj0
分析用のコードとか簡単なアルゴリズム検証用のプロトでは書かないけど、
それなりに運用される前提のコードなら書くかなあ。
2023/01/21(土) 21:58:12.42ID:CGLAOxtya
コメントもアノテーションも書いたら負け
書かなくとも直感的に頭の中に入ってくるコードを書くのは必然
2023/01/21(土) 22:05:29.47ID:qRfy1PGha
変数名は6文字以下
2023/01/21(土) 22:32:25.46ID:8msiXC4t0
コメントはわかるが型書くのはバグ、デグレ回避だからな
2023/01/22(日) 00:43:00.91ID:alhRdr+00
皆さんありがとうごおざいます。
強く忌避される理由もなさそうなので遠慮なく使っていこうかと思います。
2023/01/22(日) 09:46:38.39ID:mu8Nl5mu0
昔はコメントは1行ごとに書けと言われていたがな。
コメントのみ抽出してテスト項目書にするから。
2023/01/22(日) 10:25:05.16ID:sXfLTPHJ0
昔の人ってバカだったんですね
2023/01/22(日) 10:36:24.49ID:mu8Nl5mu0
テスト担当は本来自分じゃないんだぞ。
2023/01/22(日) 10:56:53.83ID:Z9h86Jnh0
本文のコメントをテスト項目書に書くってどいうことだろ
2023/01/22(日) 11:07:16.38ID:Dp7umTA90
まだ網羅とかの概念が無かった頃かな
2023/01/22(日) 11:20:11.52ID:mu8Nl5mu0
そうだね。ちょうどカバレッジ(率)という用語が出てきてプログラム化されてきたかなという頃だな。
2023/01/22(日) 11:26:46.20ID:dLuJ8Aewd
>>744
言われてないぞ
2023/01/22(日) 11:39:32.26ID:vp80yT++0
>>744
コードの行数とコメントの行数が同じになるの?
2023/01/22(日) 13:19:21.37ID:Z9h86Jnh0
逆になんでコメントなんだろうと思った。
コードそのまま写した方が手間も間違いも無くてよさそうに思うが。
2023/01/22(日) 14:08:53.41ID:mu8Nl5mu0
言われていないなら言われていないでいいよ。
別に書かなくても誰も困ってないんだろ。

コードで行っている処理を日本語などの言語で表現できないような状態はバグの温床だな。
2023/01/22(日) 14:36:52.28ID:CeTBqGTsd
>>753
生産性の悪い、規約でがんじがらめの現場しか経験してないのかな
コメントは処理の内容じゃなく、なぜその処理かを記述するんだよ
何やってるかなんてコード読めば済むだろ
2023/01/22(日) 14:46:00.56ID:lD3V8UVm
こういうことをしたいんだがもっと上手く書けないもんかな・・
https://ideone.com/QYEWI4
等分割ではなくて等比的に分割していく、みたいな

微妙にsum結果が合ってないのも気になる
2023/01/22(日) 15:08:55.72ID:mu8Nl5mu0
floatだからじゃないの?decimal使ったら?
757デフォルトの名無しさん (ブーイモ MM1f-/qsW)
垢版 |
2023/01/22(日) 15:36:21.63ID:++gHrjAvM
おあつらえ向きに何がやりたいかわからんコメントが必要なコードが出てきたぞ
2023/01/22(日) 15:57:16.18ID:Z9h86Jnh0
ふつうはその関数の仕様や期待動作をコメントに書くんだよ
759デフォルトの名無しさん (ワッチョイ 4376-gzmJ)
垢版 |
2023/01/22(日) 16:15:50.88ID:6lZDc9UV0
sideとexの意図がわからんから無視したが、
だいたいこんな感じになれば満足か?

def divisionor(source, ratio, maxcount):
for _ in range(maxcount):
yield source
source*=ratio

def step_values(sumvalue, ratio, step):
firstvalue = sumvalue * (1-ratio) / (1-ratio**step)
return list(divisionor(firstvalue, ratio, step))

print(step_values(11111, 0.1, 5))
2023/01/22(日) 17:26:38.16ID:KzI8pxO80
この行は何をしたいのか
なぜこの選択肢を取ったのか
この選択肢を試してみたがこういう方法でうまくいかない

とかをコメントで残しておいてくれると
後々助かる
2023/01/22(日) 17:57:02.93ID:tbxzfOk70
そもそもそういうコメントが不要なコードのがよくない?
ちゃんとレビューしよう
2023/01/22(日) 19:17:12.88ID:Dp7umTA90
関数名や変数名から想像した通りに動作をするならコメントは要らない
予想を裏切る行動をする箇所だけコメントが必要

そんな書き方するなという話だけど、そうしないといけない時もある
外部のバグに合わせて仕方なく変なことするとか
再帰呼び出しもコメントが無いとパッと見て判らない
763デフォルトの名無しさん (ワッチョイ cf46-l+ta)
垢版 |
2023/01/22(日) 21:39:41.12ID:rHuBFYoH0
>>761
> そもそもそういうコメントが不要なコードのがよくない?

それ、ドキュメント書きを怠けたい人の方便だからね。
誰に聞いたか知らないが、真に受けるのはやめよう。
そもそも、そうのたまう人が説明不要なコードを書いた試し無いでしょ。
2023/01/22(日) 21:50:50.32ID:HMT2GUgc0
コメントは悪、という思想は悪
その正体は怠慢と傲慢
2023/01/22(日) 21:56:14.88ID:nZDUyUTud
>>760の言ってる内容はコードとして残せないから残す意味がある
処理の内容を書く奴は処理とコメントに矛盾が生じたときに困るし、
コードとコメントの双方を直すことになる奴だから残すべきじゃない
2023/01/22(日) 21:58:28.48ID:mu8Nl5mu0
>>765
同じことをいうヤツが何人もいるが、それは仕様自体を正しく把握してない状態では?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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