当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。
このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。
★エラーを解決したい場合は、
表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
実行環境(Pythonのバージョン・OSとIDEの種類とバージョン)をシッカリ書くこと。
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★
5chの仕様【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】のため、どうにもなりましぇん。
↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 くだすれPython(超初心者用) その52【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1610137345/
次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
【まず1嫁】くだすれPython(超初心者用) その53
■ このスレッドは過去ログ倉庫に格納されています
2021/03/16(火) 07:19:44.36ID:PfTIXkDh
510デフォルトの名無しさん
2021/05/03(月) 12:48:07.42ID:TDKc9ux4 >>507
なるほど
今回はpyinstaller使いたくて、そうするとwin32apiとの相性が悪いっつーかショートパスが危険球っぽいんで
もうロングパスは受け付けないことにします。ありがとうございました
なるほど
今回はpyinstaller使いたくて、そうするとwin32apiとの相性が悪いっつーかショートパスが危険球っぽいんで
もうロングパスは受け付けないことにします。ありがとうございました
511デフォルトの名無しさん
2021/05/03(月) 12:52:29.86ID:YjR4A9Iz512デフォルトの名無しさん
2021/05/03(月) 18:53:48.47ID:YjR4A9Iz >>510追記
ところで、相対パス/絶対パス/フルパス/短縮(ショート)パスの違いはわかってるんだよな???
ところで、相対パス/絶対パス/フルパス/短縮(ショート)パスの違いはわかってるんだよな???
513デフォルトの名無しさん
2021/05/03(月) 23:59:09.62ID:9/VcaNVK その情報要る?
たぶん抜本的には裏で構造体を丸ごと短い名前でコピーして、それを処理して返すようにするとかいう話じゃね
たぶん抜本的には裏で構造体を丸ごと短い名前でコピーして、それを処理して返すようにするとかいう話じゃね
514デフォルトの名無しさん
2021/05/04(火) 00:11:11.66ID:MueeR1Ae まあショートネームは避けたい
そもそも超ロングパスがあり得る環境だとショートパス化できない文字列がぶち込まれそうだし
長いのはエラー吐くか
コピー→リネーム→処理→置き換え たい
そもそも超ロングパスがあり得る環境だとショートパス化できない文字列がぶち込まれそうだし
長いのはエラー吐くか
コピー→リネーム→処理→置き換え たい
515デフォルトの名無しさん
2021/05/04(火) 00:59:43.45ID:Zkcb+r3V Windowsの場合はPythonのインストールの最後に260文字制限を解除するか
聞かれたような気がする
聞かれたような気がする
516デフォルトの名無しさん
2021/05/04(火) 11:15:39.91ID:MTtoo9am win上のpythonて32767文字扱えないのか
517デフォルトの名無しさん
2021/05/04(火) 12:20:24.62ID:g/PMv139518デフォルトの名無しさん
2021/05/04(火) 14:21:30.25ID:QySiaJ1m 以下のようなデータセットのリストがあり、例えば各nameごとに、valueが最大となるものだけ抽出したい場合に内包表記や関数などで簡単に書ける方法はありますか?
[
{'name': 'a', 'value': 100},
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 50},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]
↓こういうリストとして抽出したいです。
[
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]
valueはタイムスタンプ等で最新のものだけ抽出する、といった使い方をしたいです。
[
{'name': 'a', 'value': 100},
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 50},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]
↓こういうリストとして抽出したいです。
[
{'name': 'a', 'value': 200},
{'name': 'b', 'value': 105},
{'name': 'c', 'value': 150}
]
valueはタイムスタンプ等で最新のものだけ抽出する、といった使い方をしたいです。
519デフォルトの名無しさん
2021/05/04(火) 14:46:49.13ID:7YaPXlVC 聞く限りだとfor name, value in data:とかで回して
out[name] = max(out[name], value)
みたいな感じで処理したら良さそうだけど
out[name] = max(out[name], value)
みたいな感じで処理したら良さそうだけど
520デフォルトの名無しさん
2021/05/04(火) 15:14:35.45ID:E49Bjnaf df.groupby('name').max()
521デフォルトの名無しさん
2021/05/04(火) 15:16:48.68ID:QySiaJ1m >>519
ありがとうございます。
後出しで申し訳ないのですが、各データはvalue以外にも複数の属性値をもった辞書データになってます。
nameは抽出後は当然ユニークになりますが、抽出後もリストのままで並びも元の並びはキープしておきたいです。
SQLで言う、GROUP BYしてMAX関数適用するような感じの抽出方法はないかなと思いまして。
ありがとうございます。
後出しで申し訳ないのですが、各データはvalue以外にも複数の属性値をもった辞書データになってます。
nameは抽出後は当然ユニークになりますが、抽出後もリストのままで並びも元の並びはキープしておきたいです。
SQLで言う、GROUP BYしてMAX関数適用するような感じの抽出方法はないかなと思いまして。
522デフォルトの名無しさん
2021/05/04(火) 15:20:08.13ID:QySiaJ1m523デフォルトの名無しさん
2021/05/04(火) 15:35:54.90ID:LRawq6Xg 一応pythonの組み込みライブラリにもgroupbyってあったよね
pandasでやるのが一番手っ取り早いと思うけど
pandasでやるのが一番手っ取り早いと思うけど
524デフォルトの名無しさん
2021/05/04(火) 16:05:52.03ID:Z3Fw33AT Ruby なら、
input = [ {'name': 'a', 'value': 100}, {'name': 'c', 'value': 150}, {'name': 'a', 'value': 200} ]
result = input.group_by{ |hash| hash[ :name ] }.map do |ary|
ary[ 1 ].max_by{ |hash| hash[ :value ] }
end
p result #=> [{:name=>"a", :value=>200}, {:name=>"c", :value=>150}]
input = [ {'name': 'a', 'value': 100}, {'name': 'c', 'value': 150}, {'name': 'a', 'value': 200} ]
result = input.group_by{ |hash| hash[ :name ] }.map do |ary|
ary[ 1 ].max_by{ |hash| hash[ :value ] }
end
p result #=> [{:name=>"a", :value=>200}, {:name=>"c", :value=>150}]
525デフォルトの名無しさん
2021/05/04(火) 16:52:55.89ID:sM9M0m2z >>524
グロ
グロ
526デフォルトの名無しさん
2021/05/04(火) 16:53:31.46ID:plXKAz40 おっルビおじw
527デフォルトの名無しさん
2021/05/04(火) 17:23:42.38ID:5sA+/wAg >>518
愚直に内包表記
[
{‘name’:name, ‘value’:max(record[‘value’] for record in data if record[‘name’]==name)}
for name in set(r[‘name’] for r in data)
]
ただしnameの並びは崩れる
愚直に内包表記
[
{‘name’:name, ‘value’:max(record[‘value’] for record in data if record[‘name’]==name)}
for name in set(r[‘name’] for r in data)
]
ただしnameの並びは崩れる
528デフォルトの名無しさん
2021/05/04(火) 19:52:15.91ID:ns0mTqm6 pathlib.iterdir()の読み込み順ってどういう仕組みで制御されてるのかな
windowsは昇順001>0001なんだけど、natsortとかos_sortedでも0001>001になるのが
pathlibのジェネレーターはOSソートに追従してる気がする…偶然?
windowsは昇順001>0001なんだけど、natsortとかos_sortedでも0001>001になるのが
pathlibのジェネレーターはOSソートに追従してる気がする…偶然?
529デフォルトの名無しさん
2021/05/05(水) 08:36:34.57ID:/UG/+rZL ちょっと試してみたんだけど
01.txt
1.txt
2.txt
0010.txt
a.a.01.txt
a.a001.txt
explolerの名前の昇順でこう表示されるディレクトリを
同じ並びで出力するソート形式はないような気がする
natsortもos_sortedも効かないw
すごいなwindowsどうなってんだ
01.txt
1.txt
2.txt
0010.txt
a.a.01.txt
a.a001.txt
explolerの名前の昇順でこう表示されるディレクトリを
同じ並びで出力するソート形式はないような気がする
natsortもos_sortedも効かないw
すごいなwindowsどうなってんだ
530デフォルトの名無しさん
2021/05/05(水) 08:55:12.40ID:XnkETAr1 [natsorted[数字だけのファイル], sorted[文字あり]]
うーん……
うーん……
531デフォルトの名無しさん
2021/05/05(水) 09:20:35.28ID:szdX8X2R windowsのファイル名ソートアルゴリズムが謎
532デフォルトの名無しさん
2021/05/05(水) 09:30:37.39ID:wUp61E7s その謎、前からあるやで
533デフォルトの名無しさん
2021/05/05(水) 10:06:42.44ID:0XQqNpVi Win32APIのStrCmpLogicalW
534デフォルトの名無しさん
2021/05/05(水) 11:25:44.55ID:/UG/+rZL535デフォルトの名無しさん
2021/05/05(水) 11:29:21.21ID:9+xzMV/Q うわぁ…
536デフォルトの名無しさん
2021/05/05(水) 12:30:31.81ID:gzgZcJa9 OSリリースごとに結果が変わる可能性があるので正規化に使用してはいけませんとか注意書きが書あるAPI
537デフォルトの名無しさん
2021/05/05(水) 13:00:05.01ID:kj6fybeU >>531
つ https://web.archive.org/web/19990224184613/http://www.asahi-net.or.jp/~ez3k-msym/comp/acccoll.htm
つ https://web.archive.org/web/19990224184613/http://www.asahi-net.or.jp/~ez3k-msym/comp/acccoll.htm
538デフォルトの名無しさん
2021/05/05(水) 14:28:38.34ID:wUp61E7s >>536
XP→10で変わって戸惑ったきおく
XP→10で変わって戸惑ったきおく
539デフォルトの名無しさん
2021/05/05(水) 15:35:37.41ID:dvz+9Kky 定期的にこの話題でるな
540デフォルトの名無しさん
2021/05/05(水) 16:25:24.24ID:7m6bX2W0 >>534
__le__, __ge__, __ne__がそれぞれ1, -1, 0と比較してるのって間違ってない?
使われなくて影響ないのかもだけど
functoolsのcmp_to_keyを使えば
sorted(paths, key=cmp_to_key(win_cmp))で済むよ
同じAPI使ってるのにソート結果が違うのは
os_sortedのバグだと思うのでissueあげとくといいかも
__le__, __ge__, __ne__がそれぞれ1, -1, 0と比較してるのって間違ってない?
使われなくて影響ないのかもだけど
functoolsのcmp_to_keyを使えば
sorted(paths, key=cmp_to_key(win_cmp))で済むよ
同じAPI使ってるのにソート結果が違うのは
os_sortedのバグだと思うのでissueあげとくといいかも
541デフォルトの名無しさん
2021/05/05(水) 18:38:45.20ID:sGblmxZ3 from functools import cmp_to_key
import ctyps
def win_sort(obj):
__def win_cmp(s1, s2):
____shlw = ctypes.windll.LoadLibrary("SHLWAPI.dll")
____return shlw.StrCmpLogicalW(str(s1), str(s2))
__return sorted(obj, key=cmp_to_key(win_cmp))
なるほど
import ctyps
def win_sort(obj):
__def win_cmp(s1, s2):
____shlw = ctypes.windll.LoadLibrary("SHLWAPI.dll")
____return shlw.StrCmpLogicalW(str(s1), str(s2))
__return sorted(obj, key=cmp_to_key(win_cmp))
なるほど
542デフォルトの名無しさん
2021/05/05(水) 19:54:48.41ID:MgJEgPkj543デフォルトの名無しさん
2021/05/06(木) 03:36:21.23ID:Za2B/gSh tkinterでMVCに挑戦してるんですが
例えばapp.verとかicon用base64文字列とかの定数?はどこに書くんでしょうか
アプリケーション(root)固有の情報は全部Cに書いてる人もいれば
非画像データはM、画像関係はVに置いてる人もいて
どう考えたらいいのか教えてください
例えばapp.verとかicon用base64文字列とかの定数?はどこに書くんでしょうか
アプリケーション(root)固有の情報は全部Cに書いてる人もいれば
非画像データはM、画像関係はVに置いてる人もいて
どう考えたらいいのか教えてください
544デフォルトの名無しさん
2021/05/06(木) 10:33:21.16ID:84/gBo5v >>540
母胎osの仕様が変わるんだから手に負えない
母胎osの仕様が変わるんだから手に負えない
545デフォルトの名無しさん
2021/05/06(木) 10:34:55.21ID:84/gBo5v546デフォルトの名無しさん
2021/05/06(木) 19:28:22.80ID:yKLn4IC5 tkinterで応答なしを回避するには
別スレッドに処理投げるしかない?
できればthreading使いたくない
別スレッドに処理投げるしかない?
できればthreading使いたくない
547デフォルトの名無しさん
2021/05/06(木) 19:30:05.47ID:1p3Rvf0Y Winならレジストリいじってタイムアウトと判断する秒数を変える
548デフォルトの名無しさん
2021/05/06(木) 20:30:14.34ID:v54vsLS/ import pandas as pd
df = pd.DataFrame([['ia','ib','ic'],['id','ie','if']],columns=['a','b','c'])
if not df==None:
_print(df)
ってやると
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
というエラーが出ましたが
仮にdf=Noneだった場合にdf.all()とかやると今度はNoneはallを持ってません的なエラーがでます
こういうときってどう対応すればよいでしょうか
df = pd.DataFrame([['ia','ib','ic'],['id','ie','if']],columns=['a','b','c'])
if not df==None:
_print(df)
ってやると
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
というエラーが出ましたが
仮にdf=Noneだった場合にdf.all()とかやると今度はNoneはallを持ってません的なエラーがでます
こういうときってどう対応すればよいでしょうか
549デフォルトの名無しさん
2021/05/06(木) 20:33:45.39ID:v54vsLS/ ちなみに今は
if not str(df)=='None':
ってやってます
if not str(df)=='None':
ってやってます
550デフォルトの名無しさん
2021/05/06(木) 20:54:15.24ID:yh3xJpCx >>548
そもそもNone判定したい場合は==じゃなくてisを使う
if df is Not None:
みたいな書き方にする必要がある
で、注意点として
df = pd.DataFrame()
みたいに、空のデータフレームで初期化してる場合はNoneではない(is Noneで判定してもFalseで返ってくる)
空かどうかを判定したい場合はemptyを使う
そもそもNone判定したい場合は==じゃなくてisを使う
if df is Not None:
みたいな書き方にする必要がある
で、注意点として
df = pd.DataFrame()
みたいに、空のデータフレームで初期化してる場合はNoneではない(is Noneで判定してもFalseで返ってくる)
空かどうかを判定したい場合はemptyを使う
551デフォルトの名無しさん
2021/05/06(木) 20:54:36.39ID:PCWSPh5c if df is not None:
に変える
理屈は込み入っているので他の人にお任せする
に変える
理屈は込み入っているので他の人にお任せする
552デフォルトの名無しさん
2021/05/06(木) 20:59:03.00ID:yh3xJpCx 間違ってNotが大文字になってた……notが正しい
553デフォルトの名無しさん
2021/05/06(木) 21:14:18.42ID:v54vsLS/554515
2021/05/06(木) 22:01:24.30ID:DEG1F9Nj >>506
pythonの初回インストール時に以下の英文が表示されるので
この英文部分をクリック
Disable path length limit
Changes your machine configuration to allow programs,including Python,
to bypass the 260 character”MAX_PATH” limitation.
pythonのアップデートもかねて
今使ってるバージョンの最新版インストーラーを公式からダウンロードして実行し
最後のダイアログに上の英文が表示されたらクリックしてみて
pythonの初回インストール時に以下の英文が表示されるので
この英文部分をクリック
Disable path length limit
Changes your machine configuration to allow programs,including Python,
to bypass the 260 character”MAX_PATH” limitation.
pythonのアップデートもかねて
今使ってるバージョンの最新版インストーラーを公式からダウンロードして実行し
最後のダイアログに上の英文が表示されたらクリックしてみて
555デフォルトの名無しさん
2021/05/07(金) 00:28:15.35ID:TdDivYCp >>554
配布用なのでロングパスは許さんマンにしました…
配布用なのでロングパスは許さんマンにしました…
556デフォルトの名無しさん
2021/05/07(金) 05:18:06.85ID:yOYKTU3u if df:
じゃだめなの
じゃだめなの
557デフォルトの名無しさん
2021/05/07(金) 05:30:41.77ID:FZBmU73W 一連の作業のなかで
2回同じ相手にループ処理をします
一回は存在確認、もう一回はデータ取得
処理の距離が結構離れてるんだけど、一回目のときにデータ取得もして放置しておくことはできます
こういうとき、きちんと2回に分けた方がいいですか?
一回でガバっとやっていいですか?
2回同じ相手にループ処理をします
一回は存在確認、もう一回はデータ取得
処理の距離が結構離れてるんだけど、一回目のときにデータ取得もして放置しておくことはできます
こういうとき、きちんと2回に分けた方がいいですか?
一回でガバっとやっていいですか?
558デフォルトの名無しさん
2021/05/07(金) 10:57:12.07ID:O1URPzeE559デフォルトの名無しさん
2021/05/07(金) 11:37:20.61ID:fHTm+yKw >>546
after() after_cancel() を多用するイメージ
after() after_cancel() を多用するイメージ
560デフォルトの名無しさん
2021/05/07(金) 11:39:40.44ID:fHTm+yKw >>557
2回目までに消えてる可能性が無いと保証されてるならいつでもいい
2回目までに消えてる可能性が無いと保証されてるならいつでもいい
561デフォルトの名無しさん
2021/05/07(金) 12:31:30.97ID:MaAf4oEf 現在のバージョンがPython 3.8.7 - Dec. 21, 2020とした場合
同じ3.8系の中から現時点で最新のPython 3.8.10 - May 3, 2021をインストール
3.8系から3.9とか3.10に変えると、pipを使ってインストールしたパッケージが動かないことがある
かもしれないので変えないほうが良いと思う
how to Update Python to the Latest Version
https://www.youtube.com/watch?v=UXSxBx8eG28
同じ3.8系の中から現時点で最新のPython 3.8.10 - May 3, 2021をインストール
3.8系から3.9とか3.10に変えると、pipを使ってインストールしたパッケージが動かないことがある
かもしれないので変えないほうが良いと思う
how to Update Python to the Latest Version
https://www.youtube.com/watch?v=UXSxBx8eG28
562デフォルトの名無しさん
2021/05/07(金) 20:02:05.37ID:StgLFl94 コールバック関数の説明は、
公式ドキュメントのどこに書いてありますか?
公式ドキュメントのどこに書いてありますか?
563デフォルトの名無しさん
2021/05/07(金) 20:42:35.41ID:HcCkNDs0 bindで探せば情報はある
bindの実装をソースで見れば
わかるんじゃ
コールバック関数自体はただの関数が
コールバックで呼ばれてるだけなので
説明とかあるかな
bindの実装をソースで見れば
わかるんじゃ
コールバック関数自体はただの関数が
コールバックで呼ばれてるだけなので
説明とかあるかな
564デフォルトの名無しさん
2021/05/07(金) 22:32:12.12ID:TdDivYCp max(0, 10)
で10が返るのはなぜですか?
で10が返るのはなぜですか?
565デフォルトの名無しさん
2021/05/07(金) 22:32:58.62ID:TdDivYCp あ、もうしわけない
これkeyじゃないんですね
早とちりしました…
これkeyじゃないんですね
早とちりしました…
566デフォルトの名無しさん
2021/05/08(土) 08:55:22.68ID:DE4arKCM 全体的に人がいないね。
567デフォルトの名無しさん
2021/05/09(日) 17:43:20.28ID:29Yn0Nuv ttps://techiedelight.com/compiler/?AUYY
こういう練習問題があるんだが、こういうアルゴリズム?をぱっと思いつくようになるにはどうしたらいいんだろうか
何度も挑戦したからもはや覚えてしまったんだが、似たような問題出されても答えられる気がしないし
ゴールとしては問題形式ではなく自分のプログラミングで出てくる必要があるんだろうし
こういう練習問題があるんだが、こういうアルゴリズム?をぱっと思いつくようになるにはどうしたらいいんだろうか
何度も挑戦したからもはや覚えてしまったんだが、似たような問題出されても答えられる気がしないし
ゴールとしては問題形式ではなく自分のプログラミングで出てくる必要があるんだろうし
568デフォルトの名無しさん
2021/05/09(日) 17:52:07.18ID:E0SRP95C 自分の手でやるとしたらどうするか考える
その手順をフローチャートに書き出す
それを素直にコードに落とす
それをイケてる感じにリファクタリングする
まあ実際そんなのできなくてもモノは作れるし、特にPythonはそういうアルゴリズム書ける人は少ないと思うよ
その手順をフローチャートに書き出す
それを素直にコードに落とす
それをイケてる感じにリファクタリングする
まあ実際そんなのできなくてもモノは作れるし、特にPythonはそういうアルゴリズム書ける人は少ないと思うよ
569デフォルトの名無しさん
2021/05/09(日) 18:07:38.33ID:E0SRP95C あとは、問題の細分化だな
これはアルゴリズムの実装に限らずプログラミングにおいて常に有効な考え方だ
例えば、str1の指定した位置iから始まる位置に文字列str2があるかどうかを調べて返す関数 submatch(str1, str2, i) があれば、
この submatch を i を増やしながら str1 全体にわたって適用すれば解けるだろ?
で次はこの submatch をさらに細分化する、それを自分が簡単に実装できる十分簡単な問題になるまで繰り返す
これはアルゴリズムの実装に限らずプログラミングにおいて常に有効な考え方だ
例えば、str1の指定した位置iから始まる位置に文字列str2があるかどうかを調べて返す関数 submatch(str1, str2, i) があれば、
この submatch を i を増やしながら str1 全体にわたって適用すれば解けるだろ?
で次はこの submatch をさらに細分化する、それを自分が簡単に実装できる十分簡単な問題になるまで繰り返す
570デフォルトの名無しさん
2021/05/09(日) 18:08:31.75ID:lcdfGCto まず条件を満たしているということはどういうことかを考える
判定する方法がわかったら脳死で実装する
どれだけクソなコードが出来上がったかを観察してまともにする
判定する方法がわかったら脳死で実装する
どれだけクソなコードが出来上がったかを観察してまともにする
571デフォルトの名無しさん
2021/05/09(日) 19:04:21.95ID:CGDxHqdD 自分が頭の中でどうやってその問題を解いてるかをコードに落とし込むのが一番単純かもね
問題が簡単じゃないとこの方法は難しいけど
問題が簡単じゃないとこの方法は難しいけど
572デフォルトの名無しさん
2021/05/09(日) 19:22:45.44ID:LMLrHz7X 答えはこうじゃないの
def simple_match(str1,str2)
return str1.find(str2)
def simple_match(str1,str2)
return str1.find(str2)
573567
2021/05/09(日) 19:47:04.83ID:29Yn0Nuv574デフォルトの名無しさん
2021/05/09(日) 19:48:52.28ID:E0SRP95C575デフォルトの名無しさん
2021/05/09(日) 20:01:01.07ID:6ong4OY9576567
2021/05/09(日) 20:16:54.70ID:29Yn0Nuv >>575
問題文と実装が正しいかどうかを把握する能力がないので具体的に教えてもらえると助かる
一応、答えとして掲載されているから正しいとは思うが
問題分もコピペしただけ
文字列のメソッドやモジュール(正規表現など)使うなとも書いてあったが
https://utokyo-ipp.github.io/3/3-2.html
while文による繰り返し、の下の方の練習問題
問題文と実装が正しいかどうかを把握する能力がないので具体的に教えてもらえると助かる
一応、答えとして掲載されているから正しいとは思うが
問題分もコピペしただけ
文字列のメソッドやモジュール(正規表現など)使うなとも書いてあったが
https://utokyo-ipp.github.io/3/3-2.html
while文による繰り返し、の下の方の練習問題
577デフォルトの名無しさん
2021/05/09(日) 20:35:42.76ID:Fj+EbY4X578デフォルトの名無しさん
2021/05/09(日) 21:06:48.89ID:6ong4OY9 >>576
や、ほぼ日本語だけの問題
> str2 が str1 を部分文字列として含むかどうか判定する関数
例だとstr1がlocation、str2がcat、これで期待される戻り値が2なんでしょ?
str1がstr2を部分文字列として含むかどうか、あるいは、str2がstr1に部分文字列として含まれるかどうか、が関数の仕様として適切だと思うけど
こっちの頭が狂ってる? なんか不安になってきた
や、ほぼ日本語だけの問題
> str2 が str1 を部分文字列として含むかどうか判定する関数
例だとstr1がlocation、str2がcat、これで期待される戻り値が2なんでしょ?
str1がstr2を部分文字列として含むかどうか、あるいは、str2がstr1に部分文字列として含まれるかどうか、が関数の仕様として適切だと思うけど
こっちの頭が狂ってる? なんか不安になってきた
579デフォルトの名無しさん
2021/05/09(日) 21:20:07.31ID:MVBjVGaC 問題文の日本語が間違ってるね
str1やstr2みたいな悪い命名の見本
これほんとに東大の人間が作ってるんだとしたらヤバいな
str1やstr2みたいな悪い命名の見本
これほんとに東大の人間が作ってるんだとしたらヤバいな
580567
2021/05/09(日) 22:08:42.45ID:29Yn0Nuv581デフォルトの名無しさん
2021/05/09(日) 22:43:11.51ID:4LY/LzCs >>580
変数名とかの良い付け方とかは、基本的には誰が見ても分かるってのが大前提だね
(この辺の話は、リーダブルコード、ベタープログラマ、達人プログラマーみたいなコーディング作法本に詳しく書いてある)
自分が付けるならsrc_strとtarget_strって付けちゃうかな……
(自分も勉強中なのでこれ最善かは知らん、もっと一般的に良い名前があるかもしれないけど)
変数名とかの良い付け方とかは、基本的には誰が見ても分かるってのが大前提だね
(この辺の話は、リーダブルコード、ベタープログラマ、達人プログラマーみたいなコーディング作法本に詳しく書いてある)
自分が付けるならsrc_strとtarget_strって付けちゃうかな……
(自分も勉強中なのでこれ最善かは知らん、もっと一般的に良い名前があるかもしれないけど)
582デフォルトの名無しさん
2021/05/09(日) 23:17:56.42ID:MVBjVGaC >>580
簡単なものならtext, patternとか
とにかく意味の違いを名前に反映させる
str1とstr2じゃどっちがどっちか全然わからない
意図を伝えるのが大事
命名で参考にするのはその言語の標準ライブラリと
使い方がわかりやすいようなライブラリ
(str.find(sub, start, end)を参考にすればsimple_match(string, sub_string)とか)
簡単なものならtext, patternとか
とにかく意味の違いを名前に反映させる
str1とstr2じゃどっちがどっちか全然わからない
意図を伝えるのが大事
命名で参考にするのはその言語の標準ライブラリと
使い方がわかりやすいようなライブラリ
(str.find(sub, start, end)を参考にすればsimple_match(string, sub_string)とか)
583デフォルトの名無しさん
2021/05/09(日) 23:29:01.12ID:MVBjVGaC >>567
算数と同じで問題や解き方を図で捉えるようにすれば理解が捗るし応用も効きやすい
その解答例は2つの配列の単純な総当たりと根本は同じ
文字列(配列)のインデックスをそれぞれ進めたりリセットしながら比較する様子を
図にして脳内アニメーションで再生できれば似たような問題にも対応できる
算数と同じで問題や解き方を図で捉えるようにすれば理解が捗るし応用も効きやすい
その解答例は2つの配列の単純な総当たりと根本は同じ
文字列(配列)のインデックスをそれぞれ進めたりリセットしながら比較する様子を
図にして脳内アニメーションで再生できれば似たような問題にも対応できる
584デフォルトの名無しさん
2021/05/09(日) 23:42:28.80ID:yYD7w3ek Cをやってみれば良いんじゃね?
585デフォルトの名無しさん
2021/05/09(日) 23:50:37.41ID:uTd1VsWW Bから始めよう
586567
2021/05/10(月) 03:25:25.87ID:oDeb4Nzy 模範解答を使わず、自分の実力ならこんな感じに作るだろうなってのを改めて作ってみた
https://techiedelight.com/compiler/?~0jNN
2重ループの中で str1[ i ] と str2[ J ] をくらべりゃいいんだろ
みたいなことをやって不具合を小手先で正した
模範解答の
https://techiedelight.com/compiler/?AUYY
while j < len(str2) and str1[i+j] == str[j]
なんて一生かかっても思いつけない気がする……
あとここの掲示板のせいだと思うんだけど
自宅の回線でこのスレにURL付きの投稿しようとすると、数時間書き込み規制になる
だからずっとスマホで書き込みしてる
https://techiedelight.com/compiler/?~0jNN
2重ループの中で str1[ i ] と str2[ J ] をくらべりゃいいんだろ
みたいなことをやって不具合を小手先で正した
模範解答の
https://techiedelight.com/compiler/?AUYY
while j < len(str2) and str1[i+j] == str[j]
なんて一生かかっても思いつけない気がする……
あとここの掲示板のせいだと思うんだけど
自宅の回線でこのスレにURL付きの投稿しようとすると、数時間書き込み規制になる
だからずっとスマホで書き込みしてる
587デフォルトの名無しさん
2021/05/10(月) 04:11:00.85ID:HXPAQUt8 文字単位の処理方法を考える前にこんなのを考えちゃうなぁ
def f(a, b):
____ la, lb = len(a), len(b)
____ for i in range(la - lb + 1):
________ if a[i : i + lb] == b: return i
____ return -1
print(f("hello","el"))
def f(a, b):
____ la, lb = len(a), len(b)
____ for i in range(la - lb + 1):
________ if a[i : i + lb] == b: return i
____ return -1
print(f("hello","el"))
588デフォルトの名無しさん
2021/05/10(月) 07:25:33.08ID:ZcdY0167 ここにいる人に言うまでもないとは思うけれど、KMP法など使うと時間計算量をO(S1*S2)ではなくO(S1+S2)で解くことができます
589デフォルトの名無しさん
2021/05/10(月) 11:17:21.89ID:hyNFKJLf >>586
正しく動作するのかなぁ。jのループの中でiを加算しちゃってるけど。
正しく動作するのかなぁ。jのループの中でiを加算しちゃってるけど。
590デフォルトの名無しさん
2021/05/10(月) 11:37:45.73ID:giJ6lOgz >>586
模範解答を使わないやつを少し圧縮するとこういう感じになる
def simple_match(str1, str2):
____for i in range(len(str1) - len(str2) + 1):
________a = 0
________for j in range(len(str2)):
____________if str1[i+j] == str2[j]:
________________a += 1
________________if a == len(str2):
____________________return i
____return -1
5行目のif文は実質的にはloopの継続判定だけど
pythonのfor-loopでは直接それを表現できないのでwhileに置き換えたのが模範解答
アルゴリズムそのものを理解するということと
アルゴリズムを特定の言語で表現する方法を知るということとは少し分けて考えたほうがいいかも
模範解答を使わないやつを少し圧縮するとこういう感じになる
def simple_match(str1, str2):
____for i in range(len(str1) - len(str2) + 1):
________a = 0
________for j in range(len(str2)):
____________if str1[i+j] == str2[j]:
________________a += 1
________________if a == len(str2):
____________________return i
____return -1
5行目のif文は実質的にはloopの継続判定だけど
pythonのfor-loopでは直接それを表現できないのでwhileに置き換えたのが模範解答
アルゴリズムそのものを理解するということと
アルゴリズムを特定の言語で表現する方法を知るということとは少し分けて考えたほうがいいかも
591デフォルトの名無しさん
2021/05/10(月) 13:22:46.52ID:QDSNEet8 基本的なものでもあらかじめ知ってた方が早い
高速文字列解析の世界 - 岩波書店
https://www.iwanami.co.jp/book/b257894.html
こういうのも読んで>>567の言う通りに暗記したものを思い出すしかない
なので思い付いてるのは1割未満
高速文字列解析の世界 - 岩波書店
https://www.iwanami.co.jp/book/b257894.html
こういうのも読んで>>567の言う通りに暗記したものを思い出すしかない
なので思い付いてるのは1割未満
592デフォルトの名無しさん
2021/05/10(月) 15:11:13.59ID:lCZGOQhN str1 とか str2 とかはともかく
変数名に str や string を使う香具師は筋が悪い
変数名に str や string を使う香具師は筋が悪い
593デフォルトの名無しさん
2021/05/10(月) 16:45:53.24ID:auO1c8Ib 関数が汎用的になればなるほど変数名も抽象化されてしまうのは仕方がない
仮にstrlen関数がpythonにあったら、分かりやすい仮引数名はstrかstringしか思いつかんわ
仮にstrlen関数がpythonにあったら、分かりやすい仮引数名はstrかstringしか思いつかんわ
594デフォルトの名無しさん
2021/05/10(月) 16:54:27.06ID:BLE40/70 組み込み関数を変数名に使うんだね
595デフォルトの名無しさん
2021/05/10(月) 17:32:17.10ID:loNnKCpC >>593
阿鼻叫喚やな
阿鼻叫喚やな
596デフォルトの名無しさん
2021/05/10(月) 18:33:52.38ID:giJ6lOgz597デフォルトの名無しさん
2021/05/10(月) 18:44:39.69ID:ro06Xyvc >>593
strText, str1, str0 などとするといい。
strText, str1, str0 などとするといい。
598デフォルトの名無しさん
2021/05/10(月) 20:10:42.20ID:jLWGeya+599デフォルトの名無しさん
2021/05/10(月) 20:58:18.93ID:tUbSWZNp >>586
図解にしたらわかりやすい
str1="ihavealemon"
str2="ale"
012345678901
0ihavealemon
1a
2_a
3__a
3__al
4___a
5____a
6_____a
6_____al
6_____ale!
想定外の意味不明
図解にしたらわかりやすい
str1="ihavealemon"
str2="ale"
012345678901
0ihavealemon
1a
2_a
3__a
3__al
4___a
5____a
6_____a
6_____al
6_____ale!
想定外の意味不明
600デフォルトの名無しさん
2021/05/10(月) 23:36:33.67ID:ViCp850r >>586
たぶん、5ch で広告規制されているURL を書いたらダメ!
エラーになったら、同じURLで投稿しないように、全角文字に変換するとか、
URLの間に、@など全角文字を入れたりするとか
MANGO 板で、NG ワードを絞り込みできる
たまに、いきなり吸い込まれるURLがある。
はてなブログとか、twitter の長いURLとか
5chから返事が戻って来なくて、いきなりアク禁になる
たぶん、5ch で広告規制されているURL を書いたらダメ!
エラーになったら、同じURLで投稿しないように、全角文字に変換するとか、
URLの間に、@など全角文字を入れたりするとか
MANGO 板で、NG ワードを絞り込みできる
たまに、いきなり吸い込まれるURLがある。
はてなブログとか、twitter の長いURLとか
5chから返事が戻って来なくて、いきなりアク禁になる
601デフォルトの名無しさん
2021/05/11(火) 09:06:20.36ID:Zn4VBJW/ tkinterでMyDialogクラスなんか作るとき
class MyDialog():
__init__(self, root):
__self.root = root
がよくあるパターンだと思うんですが
これをする理由はなんですか?
class MyDialog():
__init__(self, root):
__self.root = root
がよくあるパターンだと思うんですが
これをする理由はなんですか?
602デフォルトの名無しさん
2021/05/11(火) 10:29:49.62ID:FWZS8iTB >>600
amazon は %61mazon とか %41mazon とかすると通るω
amazon は %61mazon とか %41mazon とかすると通るω
603デフォルトの名無しさん
2021/05/11(火) 10:36:53.88ID:FWZS8iTB >>601
●tkinter 標準の Dialog の第一引数 (self 以外) が root を想定しているから
●後で MyDialog 中から root にアクセスするときに便利
●別に引数で受けずに global root でも良いがみっともない
●tkinter 標準の Dialog の第一引数 (self 以外) が root を想定しているから
●後で MyDialog 中から root にアクセスするときに便利
●別に引数で受けずに global root でも良いがみっともない
604デフォルトの名無しさん
2021/05/11(火) 10:52:33.39ID:FsPVc/v0 class MyD():
def __init__(self, root):
_master = tk.Toplevel(root)
使い捨てのモーダルダイアログ作成とかならroot使うのこのときだけだったりするので
そういうときは逆にメンバ化しない方がいいような気はする
def __init__(self, root):
_master = tk.Toplevel(root)
使い捨てのモーダルダイアログ作成とかならroot使うのこのときだけだったりするので
そういうときは逆にメンバ化しない方がいいような気はする
605デフォルトの名無しさん
2021/05/12(水) 00:31:29.50ID:p52W3PYV デストラクタの挙動がよくわかりません。
以下のコードを実行すると
#!/usr/bin/env python3
class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp
if __name__ == "__main__":
gp = Gnuplot()
del gp
------------------
デストラクタの箇所で
del self.pgp
AttributeError: pgp
と属性エラーが出るのですがなにが悪いのかわかりません。
以下のコードを実行すると
#!/usr/bin/env python3
class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp
if __name__ == "__main__":
gp = Gnuplot()
del gp
------------------
デストラクタの箇所で
del self.pgp
AttributeError: pgp
と属性エラーが出るのですがなにが悪いのかわかりません。
606デフォルトの名無しさん
2021/05/12(水) 00:45:07.28ID:p52W3PYV もしかして、クラス変数だからdelできない?
607デフォルトの名無しさん
2021/05/12(水) 01:37:11.15ID:+hwSdZi+ それオブジェクトじゃないからだよ
608デフォルトの名無しさん
2021/05/12(水) 09:15:37.32ID:HCx7UYF5 削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
存在しないものはアクセス出来ないって言われてるだけ
609デフォルトの名無しさん
2021/05/12(水) 09:15:47.20ID:HCx7UYF5 削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
存在しないものはアクセス出来ないって言われてるだけ
610デフォルトの名無しさん
2021/05/12(水) 11:18:04.73ID:bpb1h3yH■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★3 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★2 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★5 [Hitzeschleier★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 【悲報】ネトウヨの次のターゲット「渡邊渚」に決まるwwwwwwwwwwwwwwwwwwwww [455031798]
- 竹中平蔵「日米が長年守り続けてき台湾有事に関する曖昧戦略の知恵を一瞬にして無にさせた岡田の責任は非常に重い」 [271912485]
- お前らの風俗予約時の偽名wwwwwww
- 俺とおまえ、どっちが喧嘩が強い?
- お前ら無職にはわからんだろうけど国保高すぎだろ
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
