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


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

【まず1嫁】くだすれPython(超初心者用) その57



1 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 22:25:08.74 ID:/hGmbW/Z.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その56
mevius.5ch.net/test/read.cgi/tech/1640536690/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###

159 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:45:09.14 ID:/S8ogjuv.net]
>>150
VSCode で、バイナリエディタの拡張機能・Hex Editor でも使って、バイナリとして見てみれば?
文字コードなどが不明なので、テキストとして見るには困る

適当に内容を作って、ファイルの拡張子を .zip にしても、
正しいZIPファイルの形式になるはずがないので、ZIPファイルとしては動作しない

各拡張子のファイルには、決められた構成があるため、
それに従っていない場合は、正常に動作しない

160 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:01:18.86 ID:eoWHGkrH.net]
Phil Katz に聞くべき

161 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 00:11:42.65 ID:z9QRxAiq.net]
降霊術を習得しないと

162 名前:デフォルトの名無しさん [2022/06/25(土) 19:47:06.55 ID:fwnfW89W.net]
Pythonでsetの要素がイミュータブルでないといけないのはなぜですか?

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
S = {a, b, c}
a.append(0)

この状況で、

a in Sの値が偽になっても別に構わないと思います。
Sに登録した時点でのaは{1, 2, 3}だったわけですから、
d = {1, 2, 3}
d in Sが真になりさえすれば何もおかしなことはないと思います。

163 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:57:20.22 ID:I0eUacPf.net]
S = {a,b,c}
TypeError: unhashable type: 'list'

164 名前:デフォルトの名無しさん [2022/06/25(土) 20:23:18.44 ID:bZig/WUT.net]
こういう馬鹿が辞書のキーにまでリスト入れたいとか言い出すんだろうな

165 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:26:09.88 ID:gQjoPRQF.net]
>>159
Pythonのオブジェクトは基本参照だし、setに突っ込んでもコピーされる訳じゃない
重複を許さないsetの要素が変更されたら保証できないし、比較のコストも考えたら…かな

166 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 20:36:01.58 ID:9jpr7vFN.net]
>>159
自作クラスとか、mutableでもsetに突っ込めるよ。
何か読み違えたのでは?

167 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:18:41 ID:gQjoPRQF.net]
>>163
本質的にはそうじゃない、ユーザークラスは既定でハッシュ化できるが
これは一般的な実装ではid()、即ちインスタンスアドレスに基づくもの
実質的に求められているのはハッシュの不変性であり、それならば通る

しかし同一性を内容で評価するなら意味は成さないのでlistだと未定義
データモデル曰く「クラスがミュータブルなオブジェクトを定義しており、
__eq__() メソッドを実装しているなら、 __hash__() を定義してはなりません。」



168 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 01:34:01.17 ID:A2gDvo6x.net]
やってやれないことはないけど
デメリットを打ち消すだけのメリットを見いだせなかったんでしょGuidoが

単に他の言語のdict/setに合わせただけかも知れんが
ともかく、真実が知りたかったら開発者に聞いてこいよ

169 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 07:16:45.51 ID:eSuyoUi6.net]
>>95
print('QHG pj.og.ldn.iakkok:etis'[::-1],
'/elpmis/pj.og.ldn.iakkok//:sptth'[::-1], sep='\n')

170 名前:デフォルトの名無しさん [2022/06/26(日) 13:31:03.88 ID:DTfGvOZF.net]
ねんまつ

171 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:09:04 ID:Zqv939YP.net]
PCでのアプリ操作を自動化したいのですが、pyocrで文字認識して、内容によって判断し、pyautoguiでxy座標指定して、ボタン押すしかないでしょうか?

172 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:14:55.95 ID:RN7qnQjk.net]
物によるとしか言いようが無いな

173 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 08:17:13.06 ID:RN7qnQjk.net]
PyAutoGui でカバー出来るか出来ないかを判断してみたら?

174 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:27:20 ID:3qzf3wBJ.net]
以前MACにいれたpython3を削除できないです。

% rm -rf /usr/bin/python3
rm: /usr/bin/python3: Read-only file system


% sudo rm -rf /usr/bin/python3
Password:
rm: illegal option -- ?
usage: rm [-f | -i] [-dPRrvW] file ...
unlink file

原因わかる方いますか?

175 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 18:53:43.40 ID:0yF6vhsn.net]
>>171
sudoのほうは全角スペースが入ってるのが原因

176 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:05:21.65 ID:a8sMrZjJ.net]
172の優しさに感動

177 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:25:49.92 ID:cL/RIHXE.net]
そのpython入れたのはAppleだから通常起動したOSからは削除できない仕組み
消えたらOS内のスクリプトが動かなくなるよ
よかったねOSが壊れなくて



178 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:20:17.78 ID:3qzf3wBJ.net]
>>172
迅速なレスありがとうございます。
もう一度コメント打ちましたが同じ結果でした。全角は入ってないようです。
>>174
MACから元々インストールされているのはphyon2なので
Phyon3とは関係ない、削除しても問題ないと思うのですが..

https://i.imgur.com/PpXh6yu.png

179 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:45:49.02 ID:xsOnLI+U.net]
>>175
何経由でインストールしたんだこれ
Homebrew使ってインストールしたなら
brewコマンド経由でアンインストール出来ない?

180 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:25:48.96 ID:cL/RIHXE.net]
>>175
python3入ってないmacOSってわりと古いよ?
ここ最近はpython2が逆に入ってない(公式サポート終わってるからね)
もし自前で /usr/bin にインストールしたってんならクラッカー気質あるわw

181 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 21:44:39.26 ID:XFwxgXBL.net]
>>175
同じ結果とちゃうやん
全角入ってた時とエラーメッセージ変わってるやん

どうしても削除したいならSIP無効にしてから削除で

182 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:08.24 ID:3qzf3wBJ.net]
>>175
追記 すみません自分の勘違いでこのpython3はデフォルトから入ってるファイルのようです。

>>177 さんの仰る通りでした。申し訳ありません。

そして再度インストールしようとhomebrewを入れpyenvを入れ

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
を追加し
source ~/.zshrcを実行してpython3.10.4をインストールするとうまくいきません。。おまかんなのでしょうか??

https://i.imgur.com/ErhCpgK.jpg

183 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 22:13:29.06 ID:3qzf3wBJ.net]
>>178
申し訳ありません。

184 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 01:52:22.87 ID:GjoTbrJZ.net]
>>179
自決ですが、xcodeが古かったので新しいバージョンにいれた所無事インストールできました。

185 名前:デフォルトの名無しさん [2022/06/28(火) 08:26:42.80 ID:UgaAibo1.net]
またしても犠牲者が。
pythonの乱用は精神に作用するのかもしれない

186 名前:デフォルトの名無しさん [2022/06/28(火) 12:11:58.39 ID:W8L8uteA.net]
macのOS環境ごとふっとんで死ねば良いのに

187 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:22:02.22 ID:SMUgtqGT.net]
日本人が作った、多言語バージョンマネージャーのanyenv を使えばよい。
同様のツールには、asdf もある

nodenv, pyenv, rbenv,
exenv, goenv, tfenv など

node, python, ruby, elixir, go, terraform など

他には、Docker も多い



188 名前:デフォルトの名無しさん [2022/06/28(火) 13:58:17.02 ID:5S91HeIj.net]
re.subで[]で囲まれた文字列の中を置換するとき、どんな記述をすればよいですか?
re.sub(r'\[.*c.*\], 'x', '[abcabc]abc')
期待する値
[abxabx]abc

189 名前:デフォルトの名無しさん [2022/06/28(火) 14:07:39 ID:N3XtpiKU.net]
>>185
re.sub(r'\[[^\]]*\]', lambda m: m[0].replace('c', 'x'), '[abcabc]abc')

190 名前:185 [2022/06/28(火) 14:31:31.24 ID:5S91HeIj.net]
>>186
多謝!! そしてごめんなさい。良ければ解説を。

191 名前:185 [2022/06/28(火) 14:49:53.04 ID:5S91HeIj.net]
[]の中だけを対象にreplaceしているのは、なんとか分かるんですが、re.sub の第2引数、
lambda m: m[0].replace('c', 'x')
が何をしているのかわかりません(泣)

192 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:52:51.94 ID:dX7Zsa+9.net]
マニュアルを読もう
https://docs.python.org/ja/3/library/re.html#re.sub

193 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 14:59:09.76 ID:d3+RKzUY.net]
repl が関数であれば~の下りね、m[g]はm.group(g)と同等
後読みアサーションに固定幅制約がないライブラリなら
面倒なことしなくても(?<=\[.*)c(?=.*\])で済みそうだが

194 名前:デフォルトの名無しさん [2022/06/28(火) 15:42:31.79 ID:5S91HeIj.net]
re.sub(r'\[.*\]', lambda m: m.group(0).replace('c, 'x')
でlambda関数がヒットするたび呼ばれるわけか!!
仕組みは理解できました。

>>190
look-behind requires fixed-width pattern
に阻まれました。

195 名前:デフォルトの名無しさん [2022/06/28(火) 19:31:26.15 ID:mooH0Iqw.net]
m.group はめんどくさい
findall の方が便利

196 名前:デフォルトの名無しさん [2022/06/29(水) 07:52:27.56 ID:9vdu/PbE.net]
>192
re.findall だと re.sub のような仕掛けが利用できなくないですか?
>185 できますか??

197 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 10:56:55 ID:CtIvUBkO.net]
re.findallで[]付きとそれ以外に分けて処理
ちょっと長くなるけど色々応用がききます

# []の中だけreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]=='[' else m for m in _]
['a', '[abxabx]', 'abc', '[abx]']
>>>''.join(_)
'a[abxabx]abc[abx]'

# []の中以外をreplace
>>>re.findall(r'\[[\w]+\]|[\w]+', 'a[abcabc]abc[abc]')
['a', '[abcabc]', 'abc', '[abc]']
>>>[m.replace('c', 'x') if m[0]!='[' else m for m in _]
['a', '[abcabc]', 'abx', '[abc]']
>>>''.join(_)
'a[abcabc]abx[abc]'



198 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:29:51.42 ID:CtIvUBkO.net]
完成形できました!記号が含まれていても[]がちゃんと閉じてなくても
ちゃんと閉じているのだけreplaceします
>>186が秀逸だけど、[]で囲まれていない方をreplaceするとなると
途端に難しくなるから、やっぱ私の方法が良いんじゃないでしょうかw

>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc]')
['', 'a', '[abcabc]', '', 'abc', '[abc]', '']
>>>[m.replace('c', 'x') if m and m[0]=='[' else m for m in _]
['', 'a', '[abxabx]', '', 'abc', '[abx]', '']
>>>''.join(_)
'a[abxabx]abc[abx]'
# 文字列に記号が含まれていて[]がちゃんと閉じていなくても大丈夫
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*|[^\[\]]*', 'a[abcabc]abc[abc$$[abc]')
['', 'a', '[abcabc]', '', 'abc', '[', '', 'abc$$', '[abc]', '']

199 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:12:59.69 ID:sd1PgpdM.net]
見通し悪すぎて要件満たしててもレビューで蹴られるコード

200 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:25:07.73 ID:TQFqK5Fi.net]
ちゃんと閉じているの定義があやしい
[[abc]とか

201 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:13:54 ID:CtIvUBkO.net]
>>196 見通し良いでしょ、角カッコで囲まれた角カッコ以外 or 角カッコ or 角カッコ以外でfindallじゃん
角カッコしか出てこないじゃん、簡潔、シンプル、分かりやすい

>>197 良い指摘、アナタのおかげで改善されました^^
>>>re.findall(r'\[[^\[\]]*\]|[\[\]]*?|[^\[\]]*', 'a[abcabc]abc[[abc]')
['', 'a', '[abcabc]', '', 'abc', '', '[', '[abc]', '']

202 名前:デフォルトの名無しさん [2022/06/30(木) 02:06:34.63 ID:HSayXmFT.net]
kazuyuki

203 名前:デフォルトの名無しさん [2022/06/30(木) 20:55:30.42 ID:QXLJbWFQ.net]
ナンプレのゲーム作りたい

縦横はチェックする方法わかるが
3x3マスの部分だけ配列で考える方法がわからない
↓までは考えたんだが方向性が違う気もする

https://techiedelight.com/compiler/?xIkw


9進法から3進法への変換がベース(ただし3進法は0から始まる)
for x in range(81)
x // 3
x % 3

3桁目に入る場合、1桁目に(3桁目)*3が足される
10 (1,0,0)→(0,3)
4桁目に入る場合、2桁目に(4桁目)*3が足される
28 (1,0,0,0)→(3,0)

204 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:46:07.32 ID:0uxZVqVl.net]
簡単なのは3x3を座標系とは別の9マスの配列の配列として保持
置いたとき

205 名前:ノ縦横とは別にその配列へ反映させる
縦横も同じ手法をとると統一感ある
コード上は9マスの配列はクラスにするかも
[]
[ここ壊れてます]

206 名前:デフォルトの名無しさん [2022/06/30(木) 22:01:04.82 ID:zKJ67H3+.net]
5桁8色のhit&blowを造りたい
人間が設問してpythonに解かせたい

207 名前:デフォルトの名無しさん [2022/07/02(土) 07:54:20.82 ID:oFwScFTn.net]
>>201
既存の座標系にこだわらないほうがいいか
ありがとう

ナンプレのゲーム作りたいから手始めにナンプレを解くプログラムの検証をしてたんだけど

https://techiedelight.com/compiler/?b-I8

37行目の部分ってどうなってるの?
再帰関数なのはわかるんだけど、if文の中で再帰してるじゃん

def 関数():
if 再帰関数():
retrun Ture
retrun Flase



208 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:00:34.91 ID:Zph8lW04.net]
>>203
再帰だけどやってることは探索のための分岐
rangeの列挙からcontinueされなかった分を順番に分岐してて
呼んだ先で18-20にひっかかると中断して最初の呼び出しまで戻ってる
deepcopyしてるところが富豪的だけどシンプル

209 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:39:17.61 ID:EefHjxyZ.net]
>>204
この37行目
if set_num(ndata, idx + 1): return True

これを
set_num(ndata, idx + 1)
に変えてみたんだけど結果変わらなかった
if の中に入れる意味あるの?

210 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:44:12.51 ID:EefHjxyZ.net]
答えが出た後も探索しちゃうからそれを止めるための処理ってことか

211 名前:デフォルトの名無しさん [2022/07/02(土) 09:57:44.64 ID:COZLaCzb.net]
ninbe

212 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net]
google colabでcuda使いたい。
良い方法ある?

213 名前:デフォルトの名無しさん [2022/07/11(月) 12:19:00 ID:aiHSnYNz.net]
google colabでcuda使いたい。
良い方法ある?

214 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 12:39:20.78 ID:L4tB3bvp.net]
金払ってないのか?

215 名前:デフォルトの名無しさん [2022/07/11(月) 14:48:46.26 ID:aiHSnYNz.net]
>>210
colabはdjangoやfraskができないっぽいからやってない。
もしdjangoが使えるならお勧めあったら教えてほしいっす!
vsかチャームか、atomか・・・。

216 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 15:51:00.64 ID:EGP2A4JX.net]
好きなテキストエディタないの?それで基本いいんだけど
拘りないなら拡張とユーザ数からvscodeでいいんじゃない
PyCharmはリファクタまわりが優れているけど必須じゃないし
Atomはオワコン

217 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 17:35:44.11 ID:rDGcpouH.net]
vsもマイクロソフト以外のプラグインが信用出来ないからあまり良いとは言えないかなー



218 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:04:57.18 ID:eIaiUALg.net]
文字列〜〜〜ID123456.text

みたいなファイルからID123456だけを抜き出したいんだけど、どんな方法がある?
IDの後には必ず数字がきて、桁数はかならず6

219 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:06:23.62 ID:eIaiUALg.net]
補足
IDが書かれてる場所はファイルによって異なる

文字列〜〜〜ID123456文字列〜.text
ID123456文字列〜〜〜.text
みたいなときもある

220 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 02:57:47 ID:yBYukR5V.net]
>>214
普通は正規表現でも使うのかな
俺は正規表現使えないからこう書く

from pathlib import Path
p="C:\abc\あいうID1234567XYZ.text"
print("ID" + Path(p).stem.split("ID")[1][:6])

221 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 08:19:17.52 ID:hTnf4I/y.net]
>>215 正規表現を制する者は文字列を制する、他の言語でも仕様はほぼ同じ、覚えて損は無し

>>>import re
>>>s='''文字列〜〜〜ID123456文字列〜.text
・・・ID789012文字列〜〜〜.text
・・・みたいなときもある'''

>>>re.findall(r'ID\d{6}', s)
['ID123456

222 名前:', 'ID789012'] []
[ここ壊れてます]

223 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 10:53:36 ID:eIaiUALg.net]
>>216>>217
ありがとうございます、勉強になります

224 名前:デフォルトの名無しさん [2022/07/12(火) 20:48:55 ID:gRW1mfOh.net]
例外処理ってどう使えばいいんだろ

スクレイピングしてあるサイトのデータ拾いに行って
”データ”がある場合に代入となるんだけど
拾いに行くページによって、その行自体がなくてエラーになってしまうんだよな

if Data[0][0] == ”データ”:
s = Data[0][0]

Data[0][0]がそもそも存在しない時にエラーにならないよう例外処理を使うといい、ぐらいまでは調べたんだけど
書き方がよくわからない

225 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:11:11 ID:hTnf4I/y.net]
>>218
より具体的な例としてC:/hogehogeディレクトリ内の全ファイルのファイル名からIDを抜き出します

>>>import pathlib, re
>>>src = pathlib.Path('C:/hogehoge')
>>>list(src.glob('*')) #ファイル確認、この例ではディレクトリ内にファイルが2つあります
[WindowsPath('C:/hogehoge/ID789012文字列〜〜〜.text'), WindowsPath('C:/hogehoge/文字列〜〜〜ID123456文字列〜.text')]

# 以下、ID抜き出し処理
>>>l = [re.findall(r'ID\d{6}', f.name) for f in src.glob('*')]
>>>l
[['ID789012'], ['ID123456']]
>>>sum(l, []) #フラット化
['ID789012', 'ID123456']

226 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 21:56:43.39 ID:UQgGu1pu.net]
>>219
データがなかった場合にどう処理したいのかによって
例外処理にするのかif-elseみたいな分岐処理にするのかを選択する

スクレイピングの場合は対象データがなかったら
何も処理しないとか空文字とかのデフォルト値を入れる場合が多いんだけどそのやり方もいろいろ

if-elseで簡易的な関数にした例
def extract(html, selector, fn, default=""):
return fn(element) if (element := html.select_one(selector)) else default

def extract_text(html, selector, default=""):
return extract(html, selector, lambda x: x.text.strip(), default)

def extract_link(html, selector, default=""):
return extract(html, selector, lambda x: x.get('href'), default)

227 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 22:40:42.84 ID:xLkMA/UK.net]
>>219
スクレイピングでたとえると
途中の要素が取得できないと結局な結果が得られないのでその場でプログラム終了する
とすると、取得失敗の都度ifでsys.exit()と書けはする
ここで終了前になにかメッセージ出力したり上位の関数にエラーで戻ったりアレコレしたいとすると
共通化したくなり例外以外では見通しが悪く書きにくい
そういうのもうまく関数設計すれば書けはするけど
Pythonは標準の操作(Data[0][0] とか)で例外あげる場面が多いので例外に寄せる方が楽



228 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:23:40.86 ID:EtP8dxEe.net]
Pythonのトップ・キノコードがキノクエストと言う、Pythonの学習サービスを作った!

229 名前:デフォルトの名無しさん [2022/07/13(水) 22:27:14.03 ID:XjBOe/Qa.net]
s = ’aaa bbb ccc ddd’
という文字列を
s = ’[aaa],[bbb],[ccc],[ddd]’
という文字列にする方法って

s.split()
で一度リストにして
for文内で新しいリストにappendとか使って [ や ] や , をリストの要素として追加して
そのリストをまた文字列に戻すって方法しか思いつかないんだけど、他にあるかな?

230 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:38:12.38 ID:ZiN6uKeA.net]
>>224
s = '[' + s.replace(' ', '],[') + ']'

231 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:42:11.0 ]
[ここ壊れてます]

232 名前:0 ID:tPrODk9K.net mailto: s='[' + s.replace(' ',']',[') + ']'
これでいけんか?
[]
[ここ壊れてます]

233 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:43:26.48 ID:tPrODk9K.net]
かぶったし打ち間違いあるしスマホでコード書くの合わないな…

234 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:44:17.92 ID:hJXXd+YV.net]
“,”.join(map(lambda x:f”[{x}]”, s.split(“ “)))
そらで書いてるから動くか分からんが、こんな感じ

235 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:46:15.33 ID:tPrODk9K.net]
あと方法としてはjoin使うのとリストをそのまま文字列にするのができる気がする

236 名前:デフォルトの名無しさん [2022/07/13(水) 22:53:13.90 ID:XjBOe/Qa.net]
>>225-229
マジか
思いつかなかった

237 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:08:11.77 ID:Hjnw35/j.net]
教科書的に書くとつまらんな
','.join(f'[{x}]' for x in s.split(' '))



238 名前:デフォルトの名無しさん [2022/07/14(木) 10:16:40.49 ID:dxotV0yq.net]
くだらんすれ

239 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 11:38:32.14 ID:3XfxOzel.net]
python使い始めて何年も経つが
‘,’.join(…)書くたびにクソコード書いてんなと思う

240 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 12:12:10.59 ID:mZF8rPll.net]
>>233
よく言われるけど、私はPythonスタイルが好きだな
文字列にするのだから文字列のメソッドであるべき
ちゃんと議論されてRubyスタイルは否定されてんだよね
ttps://www.lifewithpython.com/2017/07/why-python-join-is-string-method.html

241 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:24:53.41 ID:NrPRW2+E.net]
>>234
読んだけど結構乱暴な議論だな
> 文字列にするのだから文字列のメソッドであるべき
数字かどうかを判定するisdigit()をboolのメソッドにしろってか?w

242 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 16:42:14.94 ID:VCUQdsgR.net]
>>234
じゃsplitはリストにするのだからリストのメソッドであるべきだなw
ちゃんと議論ww

243 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:24:02.64 ID:TABkZ95a.net]
Pythonって何故だかこういうエクストリームな擁護者が他言語に比べて多いんだよなぁ

どの言語にも良い点悪い点はあるのになんでなんだろ?

244 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 17:57:33.90 ID:mZF8rPll.net]
エクストリームな擁護ならRubyの右に出るものはないよ
「日本人ならRuby」「楽しいからRuby」だもん、初めて聞いた時は寒気がしたね
RubyじゃなくてPython選んでマジで良かった、Python最高!

joinもsplitの話ももう出尽くしているから、勝手にググってフンガーって発狂しててよ
私に言われても困っちゃうし、公式で結論出ているのだからそれで理解できないなら素養が無いよ

245 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:15:53.09 ID:ObgbLbGZ.net]
あ~あ、みんな寄ってたかって叩くからファビョっちゃったじゃん

246 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:18:53.53 ID:ATT2arO1.net]
>>237
pythonのスレ(しかも超初心者用)で言うことですか?

247 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 18:40:20.64 ID:NYmoorKP.net]
超初心者に変な常識を植え付けないように色んな意見のレスがあっていいと思うよ
変だと思う人も居るんだなということを知ってて損は無い
超初心者だと他言語における常識を知る機会も無いし



248 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:04:20.42 ID:ji0JpZgM.net]
>>238
> 私に言われても困っちゃうし
これお前の意見だろ?
> 文字列にするのだから文字列のメソッドであるべき
リンク先も公式もそんなアホなことを言ってないぞw

249 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:09:23.50 ID:mZF8rPll.net]
>>242
ひゃーファビョッちゃってるぅーw
素養も読解力も無いことをアピールされましても困りますw

250 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 19:51:42.67 ID:/4X/rYOa.net]
>>243
レスするならちゃんと反論したら?
読解力ガーとか低脳が顔真っ赤になりながらレスしても虚しいだけだろw

251 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) ]
[ここ壊れてます]

252 名前:20:59:57.30 ID:jjxIhgjT.net mailto: スレ違い自演連投荒らしが誰何に反応して身元確定したので新スレで書き込み禁止されたのを「いじめ」だと言い出す被害妄想っぷりが狂人クオリティ []
[ここ壊れてます]

253 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:03:26.05 ID:mZF8rPll.net]
>>244
IDコロコロ変えるコロ助が何をファビョってんの?w
もう>>238で終了してんだよ、公式読んで理解できないなら反論も糞も無いじゃんw
認めたくないだろうけど、そこは認めようよ、君は低能だから理解できなわけよww
別に理解できなくてもいいじゃん、joinって変だな、何でなんだろう?ってずーっとファビョってればいいじゃん
こういう経緯でこうなってんだよってリンクまで貼ってんのに、それで理解できずにそんなことなーい!って
言われてもさ、公式に文句言えばいいじゃん、ほんと低能だなぁーw 何と戦ってんの?w

254 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:41:30 ID:1UfgY23j.net]
>>246
どっちが読解力ないだか...
もう一度書いとくね、

> これお前の意見だろ?
>> 文字列にするのだから文字列のメソッドであるべき

公式もリンク先も関係なくお前がアホなだけw

255 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:53:51.76 ID:GadqcTvG.net]
これ読むと>>237に同意せざるを得ないな
https://stackoverflow.com/questions/493819/

256 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:25:47.47 ID:mZF8rPll.net]
>>247
うん?じゃあ文字列のメソッドでなくてもいいの?
どーやったらそう読めるんだよwwwwバーーカwww

257 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:56:25.17 ID:vHzneFGJ.net]
>>249
まだ恥の上塗りするのかよw
「文字列にするのだから」がアホだって話な
>>235-236 のツッコミみたら普通わかるだろ



258 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:02:08.05 ID:53iLOIJP.net]
わざと馬鹿のフリしてんのかな?どっちにしても馬鹿にしか見えないが。

259 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:02:36.06 ID:pmXXTX87.net]
読んだけどseqは引数な方が良いってだけで

> 文字列にするのだから文字列のメソッドであるべき
こんなこと書いてない






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

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

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