[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 10/13 03:24 / Filesize : 252 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part74



1 名前:デフォルトの名無しさん [2024/09/21(土) 10:14:02.15 ID:ZHy4g+PL0.net]
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part73
https://mevius.5ch.net/test/read.cgi/tech/1717631290/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured

701 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 07:46:07.12 ID:ouE8cAfi0.net]
いきなり参照してエラーになるのは嫌なので、
いつもgetを使うようにしよう

というのは必ずしもいい考えじゃないんだよな
エラーにならない筈のものがエラーになるなら異常なので捕まえるべき
本気で何が入ってるか予想できないケースではgetを使うしかないけど、
そんな状況になるのも何か間違ってる

702 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 08:27:04.14 ID:mSxUrXXi0.net]
noneが帰るならそれキャッチしとけば同じじゃない?

703 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 09:44:18.83 ID:tY+HC/mE0.net]
新しいキーが挿入されるのはsetdefaultやcollections.defaultdictであって、getは別に新しいキーは挿入されないんじゃなかったっけ?

704 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 16:01:59.58 ID:7/rbEKea0.net]
想定していないことは例外にする
局所的に意図してフォールバックさせたいときはget
恒常的にはdefaultってだけよ

705 名前:デフォルトの名無しさん (ワッチョイ cd54-3IcV) mailto:sage [2025/02/19(水) 20:05:14.43 ID:O180uynF0.net]
継承したクラスにあった__repr__()をそのまま使って欲しいのにうまく行かない

706 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 21:58:33.63 ID:S2Edg5gIM.net]
keyerrorとかindexerrorとか事前にかわせるやつも例外にするのどうなの?
なんかコスト高そうな印象だけど

707 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:19:23.68 ID:7/rbEKea0.net]
VMといえど高いし気になるならin (__contains__)を使えばとしか
オレはコードの意図がつかみやすいかで使い分けてる

708 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:48:10.15 ID:/AQQIY230.net]
Rustとか最近の言語って例外ないらしいじゃない。そっちの方が優れているというのがコンセンサスになったらPython4とか5とかのメジャーパージョンアップのときにそちらに舵を切るということもありうるのかな? 自分は3以降でPythonを知ったので、2→3のときの大改革ってのは未経験なんだけど。

709 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:56:14.91 ID:O180uynF0.net]
3での変更点って、ええー2ではまだそんなこと考えてたのという、
3が先進的というよりは2が後進的で、
pythonなら当然そうするでしょという感じなんだよな

2の頃はまだperlをメインに使ってた



710 名前:デフォルトの名無しさん mailto:sage [2025/02/19(水) 22:59:08.90 ID:aJXoRfiD0.net]
2はprintがステートメントで
ステートメント?!と驚いた
と思ったら3でもdelがステートメントでまた驚いた

711 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 00:52:57.36 ID:laXgRgOS0.net]
パイチョンはインタプリタが全然頑張らないアホの子

712 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 04:49:24.69 ID:2izZplM70.net]
毎日が新鮮な驚きに溢れて楽しそうですね

713 名前:デフォルトの名無しさん (ベーイモ MM2b-gW//) mailto:sage [2025/02/20(木) 11:00:03.67 ID:gDWkqRFJM.net]
>>697
Pythonは、ぼくこんぴゅーたのむずかしいことわかんないけどえーあいあぷりつくるんだもん!な子を満足させる使命があるから例外は必要
彼らが例外を放置してもアプリが止まってしまわないのはフレームワークが最終的にケツを拭いてくれているおかげ

714 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 19:27:27.78 ID:qCo+divFH.net]
例外処理って必要?
書かなくてもPython自身が例外を出して止まるよね

715 名前:デフォルトの名無しさん mailto:sage [2025/02/20(木) 19:58:06.02 ID:YvSU5J1d0.net]
変な値が入力されたらエラーを表示したい
でも入力部分はずっと下の階層の処理なので、
エラーの情報を上までバトンリレーしないといけない
例外なら言語がやってくれる

716 名前:デフォルトの名無しさん [2025/02/21(金) 06:33:27.06 ID:dPC4thbz0.net]
ギャンブルのデータ分析?とai予想したいのですが、どういう環境がいいんでしょうか?
anacondaが定番のような気がしますが、ローカルだとマシンパワーがどうなのかなと。

unityみたいなゲームエンジン上でも出来たりしますか?

717 名前:デフォルトの名無しさん mailto:sage [2025/02/21(金) 10:53:50.45 ID:ebrhUf4S0.net]
GoogleのColabでええよ

718 名前:デフォルトの名無しさん [2025/02/21(金) 11:17:38.16 ID:0EY3V3nR0.net]
>>703
例外処理っていうのは例外が発生した場合にリカバリー可能な処理を書くんだぞ
その辺わかってなくて単純に例外の時にって思ってる奴が多い

具体例で言うと通信
ゲームとかのアップデート想像してみればいい
大容量データダウンロードしてる時に通信状況が悪くなった
例外処理が無ければそのまま例外吐いて失敗となる

ここで例外処理として通信状況が良い所に移動しろ的なメッセージを出して続行ボタン押させたり、数秒から数十秒間隔で通信を再開させるようにした場合は処理がスムーズになるやろ

こういう風にリカバリー可能な処理を書くのが例外処理やで

719 名前:デフォルトの名無しさん [2025/02/21(金) 11:41:35.66 ID:vI88dzmZa.net]
>>705
もちろんUnityでも出来るよ



720 名前:デフォルトの名無しさん [2025/02/21(金) 13:53:02.83 ID:dPC4thbz0.net]
>>708
一般的にデータ分析ってアナコンダとか使うんですかね?
ゲーム目的じゃないですから

721 名前:デフォルトの名無しさん [2025/02/21(金) 15:26:48.94 ID:NDdeWha40.net]
現実世界の様子やUIを理解してタスクをこなせるマルチモーダルAIエージェントの基盤モデル「Magma」をMicrosoftが発表
https://gigazine.net/news/20250221-microsoft-magma/

悪用されている

722 名前:デフォルトの名無しさん [2025/02/21(金) 17:14:00.29 ID:0EY3V3nR0.net]
>>709
anacondaというよりjupyterを使う
なのでgoogle colabでも良いしvscodeのプラグイン入れてでも良い

723 名前:デフォルトの名無しさん [2025/02/21(金) 18:41:20.24 ID:dPC4thbz0.net]
>>711
ありがとう
jupyterlってのが必要なんすね
機械学習をunityでやろうとしてましたけど、それと別途で用意します

724 名前:デフォルトの名無しさん [2025/02/21(金) 18:53:52.10 ID:YTEtnXyW0.net]
>>712
>>711みたいな馬鹿を信じるなよ

725 名前:デフォルトの名無しさん [2025/02/21(金) 19:06:12.50 ID:hCnqiwLw0.net]
LLM の推論機能を活用する新しいバックドア攻撃「DarkMind」が提唱される
https://gigazine.net/news/20250221-darkmind-chain-of-thought/

AIはチェスで負けそうになるとチートする
https://gigazine.net/news/20250221-ai-chess-cheating/

726 名前:デフォルトの名無しさん [2025/02/21(金) 23:21:50.44 ID:TllVjNz50.net]
from datetime import datetime

t_start: str = "23:00"
t_end: str = "24:00"
t_start_dt: datetime.datetime = datetime.strptime(t_start, "%H:%M")
t_end_dt: datetime.datetime = datetime.strptime(t_end, "%H:%M")
unix_t_start: float = t_start_dt.timestamp()
unix_t_end: float = t_end_dt.timestamp()

x = int(unix_t_end - unix_t_start)

print(x)

t_endが24だと以下のエラーが出ます
24時間表記の時は%Hではないんでしょうか?

ValueError: time data '24:00' does not match format '%H:%M'

727 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:07:13.49 ID:Oo9CzgQsM.net]
>>715
知らんけど時間って
00:00:00~23:59:59
ちゃうの?

728 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:28:58.03 ID:rVspP8iQ0.net]
不親切なエラーだよね

729 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 00:58:09.16 ID:eBlj03Lj0.net]
境界値の問題って定番じゃね
テストケースにも必ずいれるだろ



730 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 07:44:50.26 ID:mdQ5EfsK0.net]
閏秒なんか廃止で当然だよな

731 名前:デフォルトの名無しさん [2025/02/22(土) 12:10:03.03 ID:kWiPacnr0.net]
>>716
ありがとうございます
このようにしてみましたがもっとスマートな方法ってありますか?

from datetime import datetime

t_start: str = "23:00"
t_end: str = "24:00"
if t_end[0:2] == "24":
t_end = f"00:{t_end[3:5]}"
t_start_dt: datetime.datetime = datetime.strptime(t_start, "%H:%M")
t_end_dt: datetime.datetime = datetime.strptime(t_end, "%H:%M")
unix_t_start: float = t_start_dt.timestamp()
unix_t_end: float = t_end_dt.timestamp()
if t_end[0:2] == "00":
unix_t_end += 86400 # 24時間足す
x = int(unix_t_end - unix_t_start)
print(x)

732 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:19:18.21 ID:mdQ5EfsK0.net]
何がしたいのか不明だけど、時間の計算にはtimedeltaを使う

733 名前:デフォルトの名無しさん [2025/02/22(土) 12:35:47.16 ID:kWiPacnr0.net]
>>721
ありがとうございます
調べてみます

734 名前:デフォルトの名無しさん [2025/02/22(土) 12:42:40.44 ID:kWiPacnr0.net]
やりたいことはt_startとt_endの中に入ってる文字列の時刻の差分を求めたいです

735 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:44:39.38 ID:mdQ5EfsK0.net]
といいつつ、日付ではなく時間の長さをhh:mm:ss形式で書きたい時用に、
秒単位のfloatと文字列の相互変換ライブラリを自作した
標準にはいいの無い

736 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 12:51:12.03 ID:mdQ5EfsK0.net]
うちのライブラリで書くと、
delta = str_sec(t_end)-str_sec(t_start)
print(sec_str(delta))
こんな感じになる

737 名前:デフォルトの名無しさん [2025/02/22(土) 13:11:12.71 ID:kWiPacnr0.net]
途中経過ですけど今こんな状態です

t_start: str = "23:00"
t_end: str = "24:00"

dt_now = datetime.now()
t_start_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(t_start[0:2]), minute=int(t_start[3:5]))
if t_end[0:2] == "24":
dt_d = dt_now.day + 1 # もし現在が月の最終日だとエラーになる "ValueError: day is out of range for month"
t_end_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_d, hour=0, minute=int(t_end[3:5]))
else:
t_end_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(t_end[0:2]), minute=int(t_end[3:5]))
x = t_end_dt - t_start_dt
print(t_start_dt)
print(t_end_dt)
print(x)

738 名前:デフォルトの名無しさん [2025/02/22(土) 13:58:51.98 ID:kWiPacnr0.net]
何度もすみません
とりあえずこうなりました
なんだが余計に長くなった気がします

from datetime import datetime

def strToDt(str_dt: str):
dt_now = datetime.now()
# TODO 25や26の場合があるかもしれないので24決め打ちはやめる
if str_dt[0:2] == "24":
next_dt = dt_now + timedelta(days=1)
dt_dt = datetime(year=next_dt.year, month=next_dt.month, day=next_dt.day, hour=0, minute=int(str_dt[3:5]))
else:
dt_dt = datetime(year=dt_now.year, month=dt_now.month, day=dt_now.day, hour=int(str_dt[0:2]), minute=int(str_dt[3:5]))
return dt_dt


t_start: str = "23:00"
t_end: str = "24:00"

t_start_dt = strToDt(t_start)
t_end_dt = strToDt(t_end)

x = t_end_dt - t_start_dt
print(t_start_dt)
print(t_end_dt)
print(x) # 時間:分:秒 形式
# TODO xを分形式に変換する

739 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 14:01:58.99 ID:92tqsAYeM.net]
初学者だと思うけど
end>startが保証されてるなら
>725



740 名前:
みたいに秒に変換して引き算が正解じゃない?
[]
[ここ壊れてます]

741 名前:デフォルトの名無しさん [2025/02/22(土) 14:16:15.84 ID:kWiPacnr0.net]
>>728
Endが24までなのか25や26もあるのか、それとも24の次は1なのか確実じゃないのでその辺考えて修正してみます
やっぱりタイムスタンプに変換した方が短くなりますか?
あと、727のインポートでtimedeltaが抜けてました

742 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 14:22:19.90 ID:mdQ5EfsK0.net]
print(datetime.now())
これの出力が
2025-02-22 14:20:40.735896
これになるのが嫌
秒を整数にしてくれたらそのまま使えるのに

743 名前:デフォルトの名無しさん [2025/02/22(土) 15:29:44.08 ID:kWiPacnr0.net]
何度もすみません
こうなりました
今のところt_startよりもt_endが小さいとエラーになります

https://techiedelight.com/compiler/?119b

744 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 18:46:10.84 ID:/k68f2f30.net]
pandasなら+“:00”してHH:mm:ss形式に揃えれば25:00や26:00でもパースできるけど簡単な処理だから自分で計算すればいいんじゃないかと思う

def parse_as_minutes(hhmm):
 hours, minutes = [int(x) for x in hhmm.split(':')]
 return hours * 60 + minutes

745 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 18:52:17.77 ID:mdQ5EfsK0.net]
そんなのを毎回作ってられない
2回くらいは作る
3回目あたりで、本腰入れて部品化する

746 名前:デフォルトの名無しさん (ワッチョイ 43ce-qk/j) [2025/02/22(土) 23:02:04.13 ID:eBlj03Lj0.net]
>>731
https://techiedelight.com/compiler/?96ec
これじゃ駄目なのか?

747 名前:デフォルトの名無しさん mailto:sage [2025/02/22(土) 23:31:26.22 ID:d1IFpLYA0.net]
劣化しとるやないかーい

748 名前:デフォルトの名無しさん (ワッチョイ 6e9a-1YEc) [2025/02/23(日) 09:47:38.74 ID:BUMkVt7f0.net]
個人レベルで機械学習学んでも意味無いですかね?
例えば競馬予想aiを作りたいとして
しかし、けっきょくのところデータがないと、学習モデルだけあっても意味ないですもんね

競馬なら馬場状態を数値化したデータというのがないと、学習させられないですよね

749 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 10:33:41.64 ID:2+mAKcn80.net]
>>730
そのくらいは標準で簡単に出来るだろ



750 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 10:36:52.09 ID:foL9AaqB0.net]
>>736
自分で学習すりゃいいじゃん
データなんていくらでもあるんだし

751 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 11:58:59.62 ID:uSqDrBD8M.net]
>>736
他人の後追いするぐらいなら他人のシステム使えばよい

競輪なんて放送でAI予想の倍率出しながら中継してる

752 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 12:29:42.21 ID:TNVZaLWv0.net]
オッズの計算に投票だけではなくAI予想も加味したら、
面白さと利益率が上がるのでは

753 名前:デフォルトの名無しさん [2025/02/23(日) 13:11:05.65 ID:BUMkVt7f0.net]
>>739
例えばバンクのホコリっぽさとか、選手の体調とか、そういった不確定要素ってデータがないですよね
なので、公式のデータ以外ないとするなら、あまりやる意味がないのかなと

754 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 13:17:20.60 ID:TNVZaLWv0.net]
確率が計算できて、オッズがその確率通りならば、どこに賭けても期待値は同じ
実際には、確率とオッズに乖離が発生する
そこに着目して、確率の高いところではなく、期待値の高いところに掛けると儲かるかもしれない

755 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 14:34:58.45 ID:uSqDrBD8M.net]
>>741
競輪AIだと雨が降ってると硬い結果になる

選手が雨の中危険な勝負して事故ったりしたくないんだろ

756 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 15:42:44.26 ID:TNVZaLWv0.net]
early continue 便利だな
行は増えるけどネストは浅い方がいいので積極的に使おう

757 名前:デフォルトの名無しさん [2025/02/23(日) 16:11:59.81 ID:r171NbV30.net]
>>744
横からだけどサンクスこれいい

758 名前: []
[ここ壊れてます]

759 名前:デフォルトの名無しさん (ワッチョイ cd79-Ro5/) mailto:sage [2025/02/23(日) 16:59:33.82 ID:SH8eoGXi0.net]
そんな言い方があるんだな
同じように関数で場合分けごとにさっさとreturnしてるけど
これもearly returnっていうのを知らなかった



760 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 17:13:57.05 ID:TNVZaLWv0.net]
例えばループで文字列を処理していて
m = re.search(pattern, str)
found = m.groups()[0]
これだと見つからない時にエラーになる

で、
if m :=
にしたりするけど、見つからなかったら飛ばしたいなら、
else:
 continue
になって、なんか変

最初から m = のままで、
if not m:
 continue
を付ければすっきりする
セイウチは絶滅の方向で

761 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 18:43:24.49 ID:ap5ufkCU0.net]
それ最初からelse: continue必要ないじゃん

762 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 19:01:50.10 ID:TNVZaLWv0.net]
elseをほっとくと、foundの中身が不定になってしまう
事前にNoneを入れておいたりして、後の処理でNoneなら飛ばす
みたいなことになる
そんなことするくらいなら、continueしてしまった方が後腐れない

763 名前:デフォルトの名無しさん (アウアウウー Sa39-c/TO) [2025/02/23(日) 19:46:23.76 ID:CZU86cpwa.net]
>>709
Unityがゲームしか造れないという考え方は改めるべき

764 名前:デフォルトの名無しさん (アウアウウー Sa39-c/TO) [2025/02/23(日) 19:48:54.69 ID:CZU86cpwa.net]
re.findall(pattern, str)

765 名前:デフォルトの名無しさん (ワッチョイ 0154-ePnC) mailto:sage [2025/02/23(日) 20:05:27.12 ID:TNVZaLWv0.net]
もしかしてfindallって全ての点でsearchに勝ってる?

766 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 20:54:18.71 ID:ap5ufkCU0.net]
なんでだよw
めちゃくちゃ要領悪いな

767 名前:デフォルトの名無しさん [2025/02/23(日) 22:37:16.02 ID:R0b4DHIEd.net]
>>749
gotoを多用しそうな人発見

768 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 23:03:58.66 ID:LVu8ljPH0.net]
pythonのreはAPI設計に難があるよね
他の言語から戻って来るたびに仕様の確認が必要

769 名前:デフォルトの名無しさん mailto:sage [2025/02/23(日) 23:09:23.71 ID:TNVZaLWv0.net]
perlから来たからsearchばっかり使ってるけど、
findallの方がこなれてそうだな



770 名前:デフォルトの名無しさん (ワッチョイ 6e9a-1YEc) [2025/02/24(月) 05:49:40.37 ID:ujJrcFED0.net]
>>750
tensorflowとかunityで使えるんすか(´・ω・`)

771 名前:デフォルトの名無しさん (ワッチョイ 752a-xrb0) [2025/02/24(月) 08:23:49.32 ID:TCszVRfv0.net]
>>747
> 最初から m = のままで、
> if not m:
>  continue
> を付ければすっきりする
> セイウチは絶滅の方向で

話題をよく理解していないのだけれど、
コロンイコールを使って、そのように論理を逆転してやればすっきりする、というハナシとも違うの?

if not (m := re.search(pattern, str)):
 continue

772 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 12:12:57.30 ID:4WrA9fgL0.net]
>>758
747じゃないがセイウチはどうもPythonicじゃない感ある
他言語のletみたいにスコープも閉じてないし

773 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 14:57:43.47 ID:d83yxTtH0.net]
いくつかのパターンのどれかに合致する、みたいな時は
if m :=
elif m :=
elif m :=
みたいにしか書きようがない
パターン検査と結果取得を同時に書かないと、同じことを2回書くことになる

774 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:09:39.96 ID:Jwc6B7rV0.net]
>>756
ほんとにperl使ってた?
gフラグ + リストコンテキストを真似したのがfindallなんだが

775 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:27:48.14 ID:d83yxTtH0.net]
だからこそ、1行で決まった数キャプチャーする時はsearchで、
全体からいくつあるか判らないけどあるだけ取ってくる時はfindallという使い分け

という設計だったけど、
1回しかマッチしないと判っててもfindallして[0]だけ使う方が使いやすいっていう

776 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 15:29:10.34 ID:4WrA9fgL0.net]
>>760
人それぞれではあるけども
検査先を単一にしてパターンマッチングに持ち込めないんなら
一緒くたにしないで個別のifと必要なら早期return/continueにする
Pythonの簡潔さって表現力があって強力な他言語とは趣がちがう

777 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 16:51:44.97 ID:Jwc6B7rV0.net]
>>762
pythonでも使い分けできてないみたいだな
自分の不出来をperlのせいにしたらだめだぞ

778 名前:デフォルトの名無しさん [2025/02/24(月) 17:00:02.49 ID:qXEt7oPpr.net]
C#のLINQは優秀だよな
async/awaitみたいにあれも貰ってきてくれよ

779 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 18:19:27.76 ID:xkCGwjl20.net]
>>760
そういうのはパターンとアクションをコレクションにまとめる



780 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 18:26:57.10 ID:d83yxTtH0.net]
具体的に何してるか書くと、日付や時刻をファイル名に含んだいろんなファイルを時系列ソートする
日付時刻の表記方法は10種類あって、どれでもない場合はタイムスタンプで代用する
日付は必ず含むが、時刻は無い場合もある

なかなか統一的には書けないので、if m := elifのかたまりになる

781 名前:デフォルトの名無しさん [2025/02/24(月) 18:37:53.69 ID:qXEt7oPpr.net]
都度ファイル名を解析して時系列ソートするんじゃなくて一発バッチでファイル名を統一してしまうわけにはいかんのか

782 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 19:03:25.46 ID:Ts/aFZR80.net]
>>767
そういうのこそコレクションにまとめるべき
10個もif-elseで同じことしない

783 名前:デフォルトの名無しさん mailto:sage [2025/02/24(月) 22:53:00.73 ID:Wgnd8zr+0.net]
本人は同じ処理を繰り返し書いてる認識自体がないんじゃないかな
すごくベーシックなリファクタリング方法だけどメソッド抽出やクラス分割や統合に比べて認識できない人が多い印象がある

784 名前:デフォルトの名無しさん [2025/02/25(火) 09:13:08.75 ID:DokSK96w0.net]
>>770
コードを例示してあげなよ。
プログラム板でコードで話さないのもどうかと思うよ。ベーシックならそうマル秘でもないのでしょう。

785 名前:デフォルトの名無しさん [2025/02/25(火) 09:54:29.03 ID:XzpdRQ1Sa.net]
769がwinprocのWM_hogehogeのifelse観ると卒倒するだろうな

786 名前:デフォルトの名無しさん mailto:sage [2025/02/25(火) 17:56:27.99 ID:PjrSO8Sc0.net]
コンテキストが全然違うから比べる意味がない

787 名前:デフォルトの名無しさん mailto:sage [2025/02/25(火) 19:31:30.09 ID:z5mNSc8+0.net]
数百個のswitch caseは別に見にくいとは思わんのよな
むしろ追加が簡単だからわかりやすい

788 名前:デフォルトの名無しさん (ワッチョイ cd01-p51G) mailto:sage [2025/02/25(火) 23:57:48.17 ID:xhjdbHGf0.net]
>>771
わざわざ例示するのもちょっと恥ずかしいが一例を書いておく

for (pattern, func) in rules:
 if m := re.search(pattern, string):
  return func(m)

他言語でstatic dispatchが求められる用途ではもちろん使わない

789 名前:デフォルトの名無しさん (ワッチョイ 0154-ePnC) mailto:sage [2025/02/26(水) 00:09:16.17 ID:wJOChXEu0.net]
各funcがそれぞれ違う内容の筈という前提があるけど、
殆どそっくりなfuncが延々と並んだら、もう少し頭いいやり方があるのでは、と思うだろう



790 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 00:50:58.38 ID:xhjdbHGf0.net]
うーん
そっくりじゃないから違う処理をしてる(と思ってる)
違う処理をしてるから統一的に書けない(と思ってる)
というのがまさに「本人は同じ処理を繰り返し書いてる認識自体がない」状態なんだがなぁ

791 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 01:45:33.67 ID:TQg7w7Pj0.net]
argparseとかUIのイベント処理がそんな感じだけど
数が増えたらボイラープレートだらけで美しくないんだよな

792 名前:デフォルトの名無しさん [2025/02/26(水) 02:08:13.92 ID:O0INS9IK0.net]
日付のパターン 正規表現にして その日付部分を引っ張り出してきて 戻り値にすればいいのでは

793 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 07:46:22.98 ID:EieBhFTu0.net]
あー、それだ
30時間制でhourが23を超えてたら、24引いて1日足す、みたいな処理もあって、
それを各関数でやってられない
最終的に欲しいのはdatetimeのオブジェクトで、その変換も一括でやりたい
で、全体を一つの処理にしてたけど、一番プリミティブな抽出部分だけ関数化すればいいのか
日付と時刻をバラバラで返すのは嫌すぎるのでclassにする

794 名前:デフォルトの名無しさん [2025/02/26(水) 09:52:35.13 ID:z2nMevLL0.net]
>>776
もう少し頭いいコードを示すと良いのでは。
10パターンの日時表現を1パターンに収斂、統一させる。殆どそっくりなfuncも収斂させるのだろうか。

795 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 12:34:12.97 ID:RZQSvPw/0.net]
実際のパターン提示されてないし
一般化したい欲求から来てるのにそんな冗長なコード書くか?

796 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 13:24:03.55 ID:XqJTS5Fa0.net]
実際でなくていいよ。適当にググったこんなので。
2025-02-26T23:45:12.34.txt
Wed 02-26-2025.dat
Wed 26 Feb 2025 11:45:12 PM.txt

797 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 16:51:32.29 ID:w6olCj090.net]
その例だけならarrow使えば正規表現使わなくても簡単にできるよ
25時とかは守備範囲外なので別途事前処理が必要

798 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 17:07:33.10 ID:n89P36ao0.net]
ubuntu22.04,python3.10.12でUSBカメラ繋いで撮った動画を保存するプログラム作ろうとしたんだけど保存した動画が再生出来ないや
静止画を結合して動画にする事はできたからコーデック的な問題ではないと思うんだけど
import cv2

cap=cv2.VideoCapture(0)
width,height=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out=cv2.VideoWriter("/home/taro/Videos/result.avi,cv2.VideoWriter.fourcc(*"DIVX"),30.0,(width,height),isColor=True)
print("録画を開始します")
try:
  while cap.isOpened():
    ret, frame=cap.read()
    if ret:
      out.write(frame)
      cv2.imshow("frame",frame)
      if cv2.waitkey(1) & 0xFF ==ord("q"):

        break
    else:
      break

except KeyboardInterrupt:
  print("録画を終了します")
finally:
  cap.release()
  out.release()
  cv2.destroyAllwindows()

799 名前:デフォルトの名無しさん mailto:sage [2025/02/26(水) 19:37:57.30 ID:j/LMUKKxa.net]
aiに聞けよ



800 名前:デフォルトの名無しさん (ワッチョイ 8d59-D2xv) [2025/02/27(木) 11:58:07.92 ID:80QDg94G0.net]
jsonファイルが開けません。何が原因でしょうか?

https://techiedelight.com/compiler/?b14b6e
24行目以降はスクリプトの出力結果です
TextIOWrapper型はダメと書いてあるようなんですけどどうしたらいいのか分かりません

https://jsonlint.com
jsonファイルの中はここで念のためチェックしました






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef