23/03/04 00:19:06.75 dUl31UkL0.net
●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その58
スレリンク(tech板)
〇前スレ〇
Pythonのお勉強 Part69
スレリンク(tech板)
次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ?
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
3:デフォルトの名無しさん
23/03/04 03:00:09.99 WvpGmU8fa.net
89 それでも動く名無し 2023/01/24(火) 23:26:51.53 ID:pA5+SQtP0
痴漢ものAVと違ってこういうガチ痴漢は臨場感が違うわ
抵抗されて上手く行かなかったり、たまに他の客にバレて逃走してるからな
マジで興奮する
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(gcolle.net)
620 名無しさん@ピンキー sage 2023/01/24(火) 21:36:57.85 ID:AS4vmq4R0
不朽の名作が復活していたので
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(gcolle.net)
4:デフォルトの名無しさん
23/03/04 03:00:19.01 WvpGmU8fa.net
すみません、誤爆しました
5:デフォルトの名無しさん
23/03/04 10:46:55.93 RFNVa0Qia.net
気に入らんスレにわざと糞を誤爆していくスタイルが流行してるのか
6:デフォルトの名無しさん (オッペケ Sr45-jdsW)
23/03/04 12:31:36.27 dzC0UcmVr.net
誤爆しました、が早すぎるもんなw
7:デフォルトの名無しさん
23/03/04 15:40:07.16 3qRZ0uIJ0.net
宣伝のつもり
8:デフォルトの名無しさん
23/03/05 17:27:49.07 OIAGsQJL0.net
>>985
>>1先頭のコマンドが消えてるので忘れずにお願いします
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。
9:デフォルトの名無しさん
23/03/08 18:10:06.14 wJcZOEvRM.net
pytorchかTensorかどちらがおすすめですか?
目的はマルチグラボやりたいです。
10:デフォルトの名無しさん
23/03/08 20:00:15.07 RfZgO4/gr.net
超ザックリ説明すると自分で色々アルゴリズム組んで試行錯誤するのがpytorchで出来合いのモデルを使ってパパッと動かすのがTensorflowだから用途で使い分けろ
11:デフォルトの名無しさん
23/03/08 20:58:22.98 70Ab32L60.net
なんでこうなるんだよ
なんで描き直しても期待する動作になんねーカスって思ってたら
def __lt__が逆になってた
ウンコ
12:デフォルトの名無しさん
23/03/09 06:39:31.71 i4wzinQPM.net
jaxにしようかな。仲間いる?
13:デフォルトの名無しさん
23/03/09 14:51:58.35 dnXaT67E0.net
>>8
補充しないとどんな問題があるの。
14:デフォルトの名無しさん
23/03/10 02:09:46.33 YTsMunwf0.net
>>10
そうか…?自分はtfから入ったから、自分でなんか書くときはtfで人の作ったコードを試すときはtorchだわ…
15:デフォルトの名無しさん
23/03/11 10:21:20.03 ouaEQp1j0.net
tkinterで配置したボタンをマウスで左クリックした時の挙動について、
command=test_func を使った場合は、
ボタンを左クリックした時に、ボタンが押し込まれたような表示になる。
これを少し改造して、①左クリック②右クリックのそれぞれで違う処理を行わせようとした時に、
---------------------------------------------
def test_func(event):
if event.num != 3:
# ②右クリックの場合のみ行う処理
~~~ # ①②共通の処理
btnExeAll.bind('<ButtonPress>', test_func)
---------------------------------------------
例えばこんな感じで書くと、
ボタンを押した時に、左クリック右クリックのどちらでも、ボタンが押し込まれたような表示にならない。
左クリックした時だけでいいので、command=test_func と同じようにボタンが押し込まれた表示にする方法があったら教えてください。
16:デフォルトの名無しさん
23/03/12 15:15:03.60 8DcR0+gea.net
答えてやりたいが質問の仕方が悪い
17:デフォルトの名無しさん
23/03/12 16:42:37.35 jZpwdQUt0.net
>>15
右クリックの場合はevent.numが3になるから、
コードの最初のコメントは「②(右クリック)以外の場合のみ行う処理、が正しい。
18:デフォルトの名無しさん
23/03/12 19:52:32.58 xt3GkkaO0.net
同じく答えてやりたいが読む気がしない
19:デフォルトの名無しさん
23/03/12 22:44:23.51 i1OoCA6Z0.net
Tk/tkinter使ったことないんで参考にならないかもしれないけど…
WebフロントエンドとかGUIプログラミングでよくあるんだけど、
多くの場合、ボタンをクリックしたことになるのは、ボタン内でマウスボタンが押下された瞬間じゃなくて、マウスボタンが離された瞬間だと思うんだよね。
んで普通にclick=で関数を指定したときは、ボタン押下でボタンが押された風に表示を変更し、
ボタンが離された時にボタンが離されたふうに表示を変更し、さらに離されたときにマウスカーソルがボタン内にあれば
クリック扱いにして関数を実行する、というようなbindをしてると思うんだよね。
だから、buttonpressのイベントハンドラをそのまま上書きするとボタンの挙動としては望ましくないことが多く起きるのではないかなー
20:デフォルトの名無しさん
23/03/13 09:56:24.19 O2fmNbgQd.net
Pythonのような完成度の高い言語を学習している人が羨ましい
21:デフォルトの名無しさん
23/03/13 11:06:27.30 bF2IN6wDa.net
全部君の自演
URLリンク(www.youtube.com)
22:デフォルトの名無しさん
23/03/13 18:06:53.00 AZxG6RRt0.net
わざわざpythonでGUI作ろうとする理由は学習コストが低いからだよなと思ったけどtkinterは学習コスト高すぎるだろ
俺ならunityかvcで書く
23:デフォルトの名無しさん
23/03/13 18:07:50.55 AZxG6RRt0.net
実行が遅すぎるから割に合わないって話やで
24:デフォルトの名無しさん
23/03/13 18:59:12.39 cd47iZKk0.net
tkinter使ってみたらすんごくサイズ感覚つかめないんだけど
これ難しくない…
pysideとかの方がいいわ
25:デフォルトの名無しさん
23/03/13 19:03:17.33 OdjJNclg0.net
ウィジェットの配置には3つの方法がある
(1) .pack()...縦か横1列に配置する(1次元配置)
(2) grid......格子状に配置する(2次元配置)
(3) place.....位置(座標)を指定して配置する
26:デフォルトの名無しさん
23/03/13 20:57:32.06 RfKK3GLna.net
wxPython 一択
27:15
23/03/14 17:26:04.53 w+BRWFOF0.net
>>19
ヒントありがとうございます。
btnExeAll = tk.Button(root, text='○○○')
btnExeAll.bind('<ButtonRelease>', test_func)
tk.Button()の中に書いていた「command=test_func」を削除して、
ButtonReleaseにtest_funcをbindさせることで意図した動作になりました。
マウスボタンが押下された段階では通常のtk.Button押下時の表示(ボタンが押し込まれた表示)で、
そのマウスボタンが離された瞬間にtest_funcが呼ばれるイメージですね。
28:デフォルトの名無しさん
23/03/14 18:41:35.49 3laCMUtU0.net
>>27
お役に立てたようで良かった
29:デフォルトの名無しさん
23/03/15 00:00:32.28 114k6lJ80.net
>>15
tkinterのボタンを押した時に、ボタンが押し込まれたような表示になるのは、ButtonPressイベントが発生したときのデフォルトの挙動です。ButtonPressイベントは、マウスのボタンが押されたときに発生するイベントであり、ButtonReleaseイベントと共にボタンのクリックイベントを表します。
通常、ボタンが押し込まれたような表示になるには、ButtonPressイベントでその状態を設定し、ButtonReleaseイベントで解除する必要があります。しかし、commandオプションを使う場合は、ButtonPressイベントで何かしらの処理を行うことができません。
そこで、ButtonPressイベントで特定の処理を行い、その後にcommandオプションで指定した関数を呼び出すことで、ボタンが押し込まれたような表示にすることができます。具体的には、以下のようなコードになります。
def test_func(event):
if event.num == 1: # 左クリックの場合のみ行う処理
btnExeAll.config(relief=tk.SUNKEN) # ボタンを押し込んだ表示にする
# ②右クリックの場合のみ行う処理
# ①②共通の処理
btnExeAll.bind('<ButtonPress>', test_func)
btnExeAll.config(command=lambda: None) # commandオプションを無効化する
このコードでは、ButtonPressイベントで左クリックの場合にボタンを押し込んだ表示にし、右クリックの場合には何も処理を行いません。また、commandオプションを無効化するために、空のlambda関数を指定しています。これにより、ButtonPressイベントでの処理とcommandオプションで指定した関数が重複して実行されることを防ぐことができます。
なお、ボタンを押し込んだ表示を解除するには、ButtonReleaseイベントでボタンの状態を元に戻す必要があります。以下のように修正することで、ボタンを押した時にボタンが押し込まれた表示になり、離した時に元の表示に戻るようになります。
def test_func(event):
if event.num == 1: # 左クリックの場合のみ行う処理
btnExeAll.config(relief=tk.SUNKEN) # ボタンを押し込んだ表示にする
30:15
23/03/15 20:23:25.07 6R/wfGBx0.net
>>29
ありがとうございます。
よく読んでコードに反映させたいと思います。
31:デフォルトの名無しさん
23/03/15 21:46:20.27 a+7TiLued.net
colab上で生成した多数のファイル(50KB程度で3桁くらい)を順次ダウンロードしようとしたんだけど
colabのセル中に
---
fori in range(len(ファイルパスのリスト)):
files.download(ファイルパスのリスト[i])
time.sleep(10)
---
と書いても
sleepの10秒中に「ブラウザのダウンロードのリストに入る」わけではなく
このfor文が終わってセルが終了したあとで、全部いっぺんに「ブラウザのダウンロードのリストに入る」みたいなんだよね
これってどうにかならないかな?
colabの仕様だからどうしょうもない?
32:デフォルトの名無しさん
23/03/17 02:07:07.10 9GL040C80.net
50行で書かれたサンプルコードを500行にして実行時間1/20にした
達成感ある
33:デフォルトの名無しさん
23/03/18 17:04:01.99 CeVtop+A0.net
ある程度期間開けてパッケージ化する方法調べてると、調べるたびに新しい方法出てる気がする
今回はsetup.pyなくても"pip install -e ."できるようになってた
setup.cfgとpyproject.tomlでも色々違うし覚えるの大変って言うか、まぁ覚えてはないけど
34:デフォルトの名無しさん
23/03/18 18:52:15.00 t/DO8+QPM.net
Googleコラボプロプラスに入ってる方いますか?コラボプロの良さを教えてね!
35:デフォルトの名無しさん
23/03/19 10:15:41.63 fPDrKYk/a.net
cargo
36:デフォルトの名無しさん
23/03/19 15:20:20.90 vWJPT8yX0.net
機械学習系の本で簡単に解説される程度にしかPythonのことを知りません
今後Pythonに触れるに当たり、見たことのない演算子や文法等を見かけた場合、簡単に調べる方法とかってありませんか?
(わからないことが出てくるたびにググれば良い気がするものの、ググるための用語にたどり着けない気がしてしまいます)
37:デフォルトの名無しさん
23/03/19 16:27:29.24 XVcYEcdXM.net
chatgpt
38:デフォルトの名無しさん
23/03/19 17:49:49.84 d2x3qz3uM.net
gpt4を使いpythonで処理をしてる人は多いよね。ならば先人の知恵を使ってそれを真似した方が効率的だよね。
HTMLならどうだろう?
39:デフォルトの名無しさん
23/03/19 17:54:15.55 GQuS0ALO0.net
>>36
そういう時にちょうどいいものがあります
Python 標準ライブラリ
URLリンク(docs.python.org)
Python チュートリアル
URLリンク(docs.python.org)
40:デフォルトの名無しさん
23/03/20 08:05:27.12 ESW08vHy0.net
>>32
そういうの脳汁ドバドバでるよね
ネットに公開されてるサンプルコードだったら教えて欲しい
俺は1/50を目指す😤
41:デフォルトの名無しさん
23/03/20 20:20:22.06 prLzZlfe0.net
Pythonのdatetime.utcnowの精度ってどのくらいでしょうか?
42:デフォルトの名無しさん
23/03/21 02:41:54.67 JBvPlC1C0.net
xs = [1.0,2.0]
c = complex(xs)
だとエラー出るけれど、人のコード読んでいたら
c = complex(*xs)
だと普通に通ると知った。
ちゃんと調べたいんだけどこの機能ってなんていうんでしょうか?
43:デフォルトの名無しさん
23/03/21 04:30:28.10 UXBr+F/Qd.net
ドキュメント嫁
まあ俺も覚えてないけど
少なくともlispで50年以上使われてるこの記法の由緒正しい呼び方splicing(,@list)のはず
44:デフォルトの名無しさん
23/03/21 08:46:38.88 stvAwo0m0.net
>>42
引数リストのアンパック
URLリンク(docs.python.org)
45:デフォルトの名無しさん
23/03/21 10:02:36.68 JBvPlC1C0.net
引数リストのアンパックというんですね。
ありがとうございます。
46:デフォルトの名無しさん
23/03/21 21:33:34.15 BXGew+Jp0.net
dosでダウンロードして、vscodeでやろうとしてらパスが入ってないとか言ってできません
パスってWindowsの全てのフォルダに通せないんでしょうか
47:デフォルトの名無しさん
23/03/21 22:55:34.57 w7Hhk0EMd.net
>>46
残念な頭の人は諦めろ
48:デフォルトの名無しさん
23/03/23 13:32:51.88 RFlYHIpb0.net
条件判定でandで複数条件を入れた場合
Falseが確定した時点で以降の判定は行われないみたいなんだが
1つ前の条件がTrueじゃないと次の条件式がエラーになる条件を
1行で済ますのは一般的に有り?
49:デフォルトの名無しさん
23/03/23 20:28:37.78 mBtK7sgT0.net
>>48
あり
len(val) > 0 and val[0] != 0とかはよく書く
50:デフォルトの名無しさん (ワッチョイ eb46-O+fO)
23/03/24 05:57:17.49 k3bvKxeq0.net
個人的な好みを言えば、Err1と2は区別する方が好き。なので、andで1行で済まさない。
if len(val) > 0:
_if val[0] != 0:
_else:
__Err1
else:
_Err2
51:デフォルトの名無しさん
23/03/24 08:36:18.31 R/WhsjrEM.net
>PythonでC/C++に匹敵する実行速度を実現 米MITなどコンパイラ「Codon」開発
これだよこれ
昔っからどんな言語でも、コンパイラさえ優秀に作ればいいって思ってたんだよ
言語でやれること縛られたりデメリットあるのはおかしいんだよ
同じCPUで動かすんだからコンパイラが頑張れよっての
52:デフォルトの名無しさん
23/03/24 14:39:42.01 OrKfwrOa0.net
変数の型やスコープをコンパイル時に解決出来る部分は速く出来そうだけど
実行時解決の部分はJIT等に頼らざるを得ないし
Pythonの旨味は後者が多くを占めるからコンパイラが頑張れば良いだけの単純な話では無い気がする
C++でも実行時解決な処理が多いコードはそれなりに遅いし
53:デフォルトの名無しさん
23/03/25 00:36:23.03 kgmD9joZ0.net
perlみたいに自由に書きたいってか?
54:デフォルトの名無しさん
23/03/25 10:11:48.83 B9hd5fwCa.net
>>51-52
Nim でええやん
55:デフォルトの名無しさん
23/03/25 14:31:55.68 hlZ//oS70.net
>>54
そんな言語が既にあるんだね
教えてくれて有り難う
当面は互換性の面が怖くて業務で使うのは不安があるけど普及してくれると嬉しいね
56:デフォルトの名無しさん
23/03/25 20:09:03.73 4vFOtxlb0.net
c3dcoord = (0,0,0)
x,y,z = c3dcoord
x += 1
y += 1
z += 1
print(c3dcoord)
=>(1,1,1)
としたいんですけど、アンパックした変数
x,y,z = c3dcoord
って参照にすることってできないんでしょうか?
57:デフォルトの名無しさん
23/03/25 20:10:28.90 4vFOtxlb0.net
すいません。
c3dcoord = [0,0,0]
でした。タプルにしたらそりゃ変更できないです。
58:デフォルトの名無しさん
23/03/26 01:17:05.37 x8rcyUOT0.net
p = (3,4)
x,y = p
x+=1
p=(x,y)
print(p)
=>(4,4)
59:デフォルトの名無しさん
23/03/26 05:07:20.56 OlOn0nrS0.net
教科書でPython を使うに至った経緯って分かる?
もうPython 一択って塾の子供に言いたいけど、
変な理由でPython に決まったら嫌じゃん
60:デフォルトの名無しさん
23/03/26 05:25:17.27 N7AJWMSJ0.net
新しい歴史教科書をつくる会が和製Ruby推しとか、そんな事でもあるのだろうか...
61:デフォルトの名無しさん
23/03/26 11:37:36.64 NbG7mSEV0.net
流行ってる、文法がシンプルで読みやすい、ライブラリが豊富
こんなとこだろ
62:デフォルトの名無しさん
23/03/26 11:38:46.21 NbG7mSEV0.net
大学のCS入門とかだとPython以外ではJava, Cが多いのか?
63:デフォルトの名無しさん
23/03/26 12:18:30.58 9IcBJ+NCa.net
>>59
言語は別になんでもいい
64:デフォルトの名無しさん
23/03/26 16:23:36.82 EIuzoBSLa.net
>>59
microPythonとか子供がおもちゃで遊ぶのにちょうどいいのがあるからな
65:デフォルトの名無しさん
23/03/26 16:30:57.43 1gNnWqJGF.net
>>62
10年前だけど俺はPascalだった
66:デフォルトの名無しさん
23/03/26 16:58:25.83 UjqQqbysM.net
>>59
教科書のマーケティング的な理由と元ネタになる講義や教科書本が豊富で作るのが楽だからでしょ
中高生がプログラミングに入門する際の有力な選択肢の筆頭と言う程度ならいいだろうけどPython一択とまで言っちゃうのは言い過ぎ
特に教育者が「〇〇一択」という悪い思考の癖を子供に植え付けるのは良くないぞ
67:デフォルトの名無しさん (ワッチョイ d2bd-+msU)
23/03/26 18:53:47.57 OlOn0nrS0.net
子供には断定的な方が分かりやすいの
含みを持たせるとか抽象的な理解は難しいの
で、断定してPython 使わせたけど
裏側では変な政治家がハニトラで
Pythonに決めました。だったら嫌じゃん、
だから断定して教える前に理由を知りたくなったの
68:デフォルトの名無しさん (ワッチョイ d2bd-+msU)
23/03/26 18:57:25.03 OlOn0nrS0.net
Python とJava がいいよとかって教えると
どっちも中途半端に覚えてしまうの
だからひとつだけ断定的に興味を持たせるの
私だけの意見で押し付けずにみんなの
意見を聞いて参考にしてるでしょ?
69:デフォルトの名無しさん (ワンミングク MM92-h/t+)
23/03/26 20:00:18.71 i0hL3v/7M.net
Google Collaborates で pyinstaller 使ってexe ファイル作成完了通知出てるんだけど、肝心の完成したexe ファイルがgoogle drive の何処にも見当たりません
作業フォルダにある筈なのに
70:デフォルトの名無しさん (ワッチョイ 2e90-GvoQ)
23/03/26 22:57:21.33 90L+5Zxw0.net
もしかして:Google Colaboratory
71:デフォルトの名無しさん
23/03/26 23:11:28.31 zGe4zRyjM.net
>>68
子供の年齢や頭の良さやプログラミングを学びたい目的によって
どういう言語がいいかは変わってくるんだから
そこを無視して勝手に選択肢を限定するのはダメだろ
それぞれの状況にあった選択肢を提示しつつその中で自分の考える一番のおすすめと理由をあわせて伝えたほうがいいぞ
共通試験目的限定ならDNCLの範囲だけなので命令型で書ける普通の言語なら基本的にどれでもいい
しいて言えばインデックスがゼロベースじゃない言語はやや不利
72:デフォルトの名無しさん
23/03/27 00:02:23.30 Zr0uw00ma.net
バックエンドエンジニア : 80万円
Ruby : 90
Python, Go : 85
レガシー
Java : 80
ただし、Pythonはウェブ開発ではなく、AI・機械学習。
Javaは給料の中抜き構造があるので、
リモートワーク・副業など、モダンなバックエンドはRuby
73:デフォルトの名無しさん
23/03/27 00:14:37.02 oSkR0ochM.net
一番初めに覚える言語なんて極端に難しかったり非実用的だったりする言語でなければなんでもいいだろう
一つの言語に拘ってる奴は結局モノにならないよ。
74:デフォルトの名無しさん
23/03/27 02:12:05.21 rXMlzKKVd.net
Rubyは既に終わってる
これから学ぶのは愚の骨頂
75:デフォルトの名無しさん
23/03/27 08:13:51.01 OH4YPBlYa.net
>>73
じゃあなにか一つ選んで
76:デフォルトの名無しさん
23/03/27 09:05:16.71 3N4bL3ItM.net
エクセルとVBAは理想的
セルをメモリ空間に見立てて好きなとこに数字入れて演算させる
全てのプログラム言語がセル内包してりゃいいのにな
変数初期値もセル内に記述
プログラムはアルゴリズムだけ記述するだけっての
77:デフォルトの名無しさん
23/03/27 10:19:19.01 tnMA91mR0.net
二次元配列を好きに使うと良いのでないの。
78:デフォルトの名無しさん
23/03/27 11:42:54.48 3N4bL3ItM.net
セル内計算式もプログラムに記述しなくていい
79:デフォルトの名無しさん
23/03/27 18:35:08.31 yqCWHD4F0.net
>>75
目的と想定受講者を決めて。
80:デフォルトの名無しさん
23/03/27 19:12:03.68 78ye37e60.net
>>79
じゃあ、中学生と高校生の情報の教科書
81:デフォルトの名無しさん (ブーイモ MM19-pkhP)
23/03/27 21:59:41.94 OOl3bABcM.net
え?教科書決める側の人なの?
82:デフォルトの名無しさん (ワッチョイ dd5f-2p+o)
23/03/27 22:15:05.71 +kKm8gNC0.net
R7RS-small か R5RS
83:デフォルトの名無しさん (ワッチョイ 8102-PjJe)
23/03/28 14:53:42.83 vZrgWFuJ0.net
>>62
1年次教養の純粋なCS/ITリテラシならPythonがLisp/Schemeを駆逐しつつあるな、数値計算ではFortranとMatlab(Octave),Python+scipy,Rが三強
東大の進振り後の理数系シラバス見るとFortran一強だけど
Fortranといっても今は2008水準が普通だから、ライブラリ無しの素でnumpyより配列操作が短く書けて強力、素で十分なので環境構築も楽
最近pipが検索出来なくなったり不安定なのが解決されれば、やはり最強エコシステムを持つPythonが完全覇権になるのは時間の問題だと思うが
84:デフォルトの名無しさん (ワッチョイ 8102-PjJe)
23/03/28 15:15:05.26 vZrgWFuJ0.net
90年水準(33年前)だけどnumpyとfortranの対応表、完全に一致
URLリンク(www.fortran90.org)
そもそもmatlab(octave)/Fortran書きがPythonでもfortran風なコードを書けるようにするのがscipy/numpyの目的かつ求心力だから、どっちか書いてる人なら互いに移行するのは容易なんじゃないかな
多分うわべだけなら数日
numpyの核はFortranコードをコマンド一発でimportできるPythonライブラリにコンパイルするf2pyモジュールだから、Pythonで本格的に数値計算や配列プログラミングやるならFortranも多少学ぶべきと思う
85:デフォルトの名無しさん (アウアウウー Saa5-tUaT)
23/03/28 17:01:21.71 hvNFNzxEa.net
>>75 >>80
Nim
86:デフォルトの名無しさん (ワッチョイ 493c-+ld4)
23/03/30 21:47:14.33 8bCrCcnU0.net
すみません、勉強したてで教えてほしいです。
CSVファイルに機器情報が入っています。(以下参照)
そのCSVファイルを読み込んで、機器情報クラスに値をリストに格納していく処理をしたいと思っています。
リストに格納自体はできているのですが、クラスオブジェクトの値を出力すると、下記のようになぜかNoneと表示される部分があります。
1
router
192.168.1.1
admin
None
2
switch
192.168.1.2
admin
None
ソースコード
URLリンク(pastebin.com)
CSVファイルは以下のような構造になっています。
1行目はヘッダーです。
id,device,ipaddress,password
1, router, 192.168.1.1, admin
2, switch1, 192.168.1.2, admin
3, swtich2, 192.168.1.3, admin
4 ,accesspoint, 192.168.1.1, admin
87:デフォルトの名無しさん (ワッチョイ 493c-+ld4)
23/03/30 21:49:01.61 8bCrCcnU0.net
print_device_list()メソッドで、自信のid,device,ipaddress,passwordの4種類を表示しているだけなのですが
何故5つ目にNoneという値が表示されるのでしょうか。
教えてください。。。
88:デフォルトの名無しさん (ワッチョイ 2e10-uhGV)
23/03/30 21:55:24.24 8C8DwwZp0.net
書けるかな
89:デフォルトの名無しさん (ワッチョイ 2e10-uhGV)
23/03/30 21:56:43.08 8C8DwwZp0.net
>>86
最後の行が間違い
device_info[num].print_device_list() の結果を print してしまって None が表示されてる
90:デフォルトの名無しさん (ワッチョイ 493c-AYh6)
23/03/30 22:56:11.91 8bCrCcnU0.net
>>89
なるほど…
確かになんのためにメソッド呼び出したんだっていう最後のプリントですね…笑
ありがとうございます!
91:デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
23/04/02 11:03:39.24 iE0mKbow0.net
スクレイピングするプログラム作ったけどロリポップのサーバーにアップロードして運用しようとしてるけど上手くできない。
みんなローカルでやってるのかな?
常時パソコンオンならそれでいいかあ
92:デフォルトの名無しさん
23/04/02 11:14:31.42 LokYTN6p0.net
そのレベルのやつがスクレイピングするなよ
93:デフォルトの名無しさん
23/04/02 11:15:43.27 iE0mKbow0.net
さーせん
94:デフォルトの名無しさん
23/04/02 13:49:47.16 Ky8sq4kqa.net
User-Agent は真面目に描いた方が良い
cookie 対応は必須
あとは逮捕されんように適度な wait
95:デフォルトの名無しさん
23/04/02 15:06:54.62 .net
ゲームのキャラクターをクラス化するときに
class Player:
def __init__(self, hp, mp, defense, speed):
self.hp = hp
self.mp = mp
self.defense = defense
self.speed = speed
def attack(self, target):
# 攻撃処理
pass
こんな感じでやると思うけど
例えばattackの引数の部分って
(1)相手のキャラクターオブジェクトを入れる
(2)キャラクターのHPなど、使うパラメーターだけ入れる
のかどっちが良いのだろう
(1)の場合って
#攻撃処理 の部分でtarget.counter(self)とかできて便利そうだけど
パット見、内部で何やってるかわかりにくそう?
(2)の場合だと
attackの返り値を、攻撃され後のHPを返すとかにすると
player2.hp = player1.attack(player2.hp)
みたいに冗長感でる
(1)の方が、おそらく他のメソッド追加したときに基本は引数targetの一つで修正しやすそう
でも、もっとオブジェクト化してPlayerクラス以外の戦闘システムクラスとか作れば
player2.hp = player1.attack(player2.hp)の部分も見やすくなるし、より具体的なメソッド名にすればいい
どこまで分割して設計するかが難しいな・・
あと(1)でやってしまうと、あとでtargetの仕様が変わった時に
target引き継いだメソッド全部チェックしないといけないような
96:デフォルトの名無しさん
23/04/02 15:10:35.20 N+wJxevFd.net
>>94
> User-Agent は真面目に描いた方が良い
> cookie 対応は必須
> あとは逮捕されんように適度な wait
ありがとうございます!
97:デフォルトの名無しさん
23/04/02 17:03:42.13 FAkG0zqpM.net
>>95
自分だったら敵も味方も同じクラスにして、バトルマネージャークラスに引数1と引数2で渡して戦闘させるかな
98:デフォルトの名無しさん
23/04/02 21:44:47.49 pfBpJrjB0.net
>>97
そのマネージャの中の話ちゃうの?
99:デフォルトの名無しさん (ワッチョイ ff10-icd+)
23/04/03 23:29:26.65 vazLPyWV0.net
>>95
このような場合、引数に何を渡すかはプログラムの設計や実装によって異なります。一般的には、攻撃対象のキャラクターオブジェクトを引数に渡すことが好ましいでしょう。
これは、攻撃処理に必要な情報がキャラクターオブジェクトに含まれているためです。たとえば、攻撃力や防御力、素早さなどは攻撃側と防御側の両方に必要な情報です。また、攻撃によってダメージが発生する場合、キャラクターオブジェクトに現在の体力値が含まれているため、攻撃対象の体力を別途渡す必要がなくなります。
ただし、引数にキャラクターオブジェクトを渡す場合でも、攻撃側のプレイヤークラスのメソッド内で、攻撃対象のキャラクターのオブジェクト内部の状態を直接変更することは避けるべきです。攻撃処理は、攻撃側と防御側のキャラクターの両方のオブジェクトの状態を適切に変更する必要があります。
このような設計を行う場合、戦闘システムクラスなど、別のクラスを導入することもできます。攻撃対象のキャラクターのオブジェクトに対して、攻撃処理を実行するためのメソッドを定義し、戦闘システムクラスから呼び出すことができます。こうすることで、攻撃処理に関連する情報をまとめて扱うことができ、プログラムの保守性や拡張性を高めることができます。
100:デフォルトの名無しさん (ワッチョイ df02-52IU)
23/04/04 00:33:15.86 Y1prdwvH0.net
chatGPTは中身がねえな
101:デフォルトの名無しさん (ワッチョイ 5f01-kVuH)
23/04/04 03:05:10.39 Vcg4gzRX0.net
@AIBoom_net 日本医師国家試験にGPT-4が合格
URLリンク(doi.org)
ワシントン大・札幌心臓血管クリニック・東北大・イエール大学の研究者グループによる報告。 過去5年間にわたる試験で複数の大規模言語モデルをテストした所GPT-4は5年間全てに合格したとのこと。日本語においてもLLMの可能性を示唆。 URLリンク(pbs.twimg.com)
102:デフォルトの名無しさん
23/04/04 21:54:16.17 gwk3sUuA0.net
プログラム全くの初心者だけど
最新がPython 3.11ってWikiに書いてあるけど
3.9の本で勉強するのはやめたほうが良い?
3.9もらったけど新しいの買うべきかな
103:デフォルトの名無しさん
23/04/04 22:10:09.40 eULr+R9z0.net
変更履歴
URLリンク(docs.python.org)
104:デフォルトの名無しさん
23/04/04 22:11:29.74 eULr+R9z0.net
ちなみにVscodeでインストールできるマイクロソフト提供の現在のバージョンは3.10.10
105:デフォルトの名無しさん
23/04/04 22:40:13.03 hpZyh5qR0.net
まだ大半の人が3.9以下の機能でしかコーディングしてないから学習上は問題ないよ
導入は最新にしといて便利な3.10や3.11の機能を見つけたら取り入れていけばいい
106:デフォルトの名無しさん
23/04/04 22:41:11.68 xfFnhO3R0.net
>>102
基本的には大丈夫だぞ!
分からなかったらココで聞いてくれれば答えるよ (規制されてなければ)
107:デフォルトの名無しさん
23/04/04 22:46:20.60 gwk3sUuA0.net
こんな親切なスレ初めてだ
ありがと
108:デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
23/04/05 08:31:57.17 m7UpLh2J0.net
ほんとありがたいですよね。
感謝してます
109:デフォルトの名無しさん (ワッチョイ ffbb-u6c4)
23/04/05 09:09:36.82 9/ydvHjQ0.net
(普通は3.9の環境で学習して最終的に最新使うんだよ。Pythonの入門書なら仮想環境の作り方ぐらいのってんだろ)
110:デフォルトの名無しさん (ワッチョイ ff33-9P2W)
23/04/05 09:21:31.45 jJ19tKHg0.net
>>109
頓珍漢な事書かないで
111:デフォルトの名無しさん (ワッチョイ 5f7d-OFZ/)
23/04/05 11:52:04.66 m7UpLh2J0.net
良いスクレイピングはサイト内移動は直接リンク指定よりクリックさせたほうがいいですか?
112:デフォルトの名無しさん (スッップ Sd9f-yXQ9)
23/04/05 22:47:04.75 S76AEhIad.net
複数のDataframe型をひとつのリスト型にまとめたとき、
その変数(リスト)を出力・ファイル保存する方法、
保存したファイルを再び読み込んで元のリスト変数を取り出す方法、
を教えていただけないでしょうか?
to_parquetが使えるかと思ったら、リストには使えないようで、困っております
pythonにはmatlabのmatファイルのようなものは存在しないのですね?
113:デフォルトの名無しさん (ワッチョイ ff10-wDYO)
23/04/05 23:22:13.78 CU/hLZe30.net
>>112
リストのままは行けないから中身を回しながら to_{任意の形式} する
読み込む時も同じ
114:デフォルトの名無しさん (ワッチョイ 5f01-vkwt)
23/04/06 02:43:39.76 E3jlMe5F0.net
>>112
リストをpickleファイルに保存する方法あるけどそれ使えないでしょうか
115:デフォルトの名無しさん (ブーイモ MMa3-e2c1)
23/04/06 15:38:12.20 GjcsnpaqM.net
>>112
DataFrameのメソッドでシリアライズしたいならリストの代わりにネストしたDataFrameにすれば可能
リストを使いたいならpickle.dump/load
116: でもDataFrameごとに個別にシリアライズしたほうが扱いやすくていいと思う
117:デフォルトの名無しさん (ワッチョイ cd46-zyVn)
23/04/09 10:35:43.18 Sk1Y+X+W0.net
intとNoneを返すfunc()の型ヒントはどう書くの。
Noneを返さない実装は少ないと思うが、そんな型ヒント例がない。Noneを省略でintのみ?
def func() -> int:
118:デフォルトの名無しさん (ワッチョイ bd5f-JuRI)
23/04/09 10:43:17.20 pP899uy+0.net
URLリンク(docs.python.org)
公式に書いてるがな
古いPythonだとOptionalかUnion
119:デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
23/04/09 11:42:14.17 RVii0j8Q0.net
>>116
Optional[int]
Python3.10以降なら int | None
120:デフォルトの名無しさん
23/04/09 14:35:42.69 l7RPhDng.net
型ヒントってエラーチェックもしてくれるようになる日はいつくるの
121:デフォルトの名無しさん (ワッチョイ cd46-B/IP)
23/04/09 15:12:18.81 Sk1Y+X+W0.net
>>117,118
ありまとう。そのURLから辿った先の peps.python.org/pep-0484/ に例あった。
def lookup(self, name: str) -> Optional[Node]:
122:デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
23/04/09 15:48:14.66 RVii0j8Q0.net
>>119
ダックタイプは捨てないから公式で強制は来ない
TypeScriptみたいになる可能性はある、dataclassに型指定がデフォルトで組み込まれた次のステップとして基本的なバリデートがライブラリからインスパイアされて入る未来はあるかもね
基本的にはmypy, pyright, pydanticあたりで対応
123:デフォルトの名無しさん
23/04/09 15:57:52.49 l7RPhDng.net
ABCモジュールで抽象クラスを作るメリットが全然ピンとこない・・
URLリンク(magazine.techacademy.jp)
継承して子のクラスでsayHello上書きすればいいだけじゃないの?
URLリンク(qiita.com)
これもattack上書きすればいいだけじゃないの?
→ 共通の変数やメソッドをたくさん持っていることが多いので、手間が省ける
?
継承するだけなのに手間ってある?
AIに聞いてみた
ようは
> 抽象メソッドを定義することで、サブクラスで実装する必要があることを明示的にすることができます。
> 抽象クラスを継承したサブクラスは、抽象メソッドを実装しない限りインスタンス化できないため、クラスの使い方が明確になります。
> 例外を発生させることで、抽象メソッドが実装されていないことを明示的にすることができます。
ってことらしい
ようは例えば、サブクラスを他の開発者に投げていたとき、オーバーライドすべきメソッドをエラーによって明示できる
ってこと・・?
124:デフォルトの名無しさん
23/04/09 15:59:55.38 l7RPhDng.net
>>121
なるほど
今のところ何かしらライブラリに付属しているバリデーション機能とか使ってるけど
そのライブラリ使ってないときは別の方法で、みたいにしてるから揃えたいなぁと前から思ってた・・
125:122
23/04/09 16:21:39.12 l7RPhDng.net
・親クラスHumanを書く開発者A
・そのHumanを継承する子クラス(犬クラス、猫クラス)を書く開発者B、C
・犬、猫をインスタンス化して機能を実装する開発者D
よくよく考えると、たしかに開発者B、Cは実装し忘れが無くなっていいかもしれない
でも親クラスのabcモジュールで抽象化されたメソッドに変更があった場合
開発者DがsayHello実行したら、子クラスで上書きされたsayHelloが実行されるのでは・・?
だったら最初から上書き前提で書いたほうが、
と思わんでもないのですが
126:デフォルトの名無しさん (ワッチョイ 6efb-P3kV)
23/04/09 16:43:24.90 csvNgA1W0.net
そーゆーのは仮想関数でやるべき
127:デフォルトの名無しさん (ワッチョイ bd5f-CkHC)
23/04/09 17:34:31.05 RVii0j8Q0.net
>>124
なんの入門書みてるのか分からんが継承なんてPython関係なしに非推奨の流れだから使わなくていいよ
Humanを継承する猫なんて例えとしても論外
ライブラリやフレームワークなどの提供側で有用なケースは多いけど使う側のユーザーが手を出すケースはほとんどない、初学者ならなおさら
128:デフォルトの名無しさん (ブーイモ MMcd-OxX8)
23/04/09 20:05:53.89 yYyAhZLzM.net
問題集おすすめしてほしい
ついにこの日がきた 姪っ子がPythonと書かれた教科書を持って帰ってきた
姪っ子は数学に時間がかかりすぎてるので、代わりにPythonを勉強して教えてやりたい
自分はずーっと食わず嫌いでPythonから逃げてたんだが、いい機会なので、高卒レベルくらいに使えるようになりたい
なお、日ごろはC++がちょろっと【しか】使えない
129:デフォルトの名無しさん (ワッチョイ ae33-/aea)
23/04/09 20:42:55.90 jJFRgIVZ0.net
何か気持ち悪いな
あと、問題集とか聞いてるやつ初めて見たかもしれん
130:デフォルトの名無しさん (ワッチョイ eebb-90pI)
23/04/09 20:53:35.11 zwa/Onc+0.net
paizaでもやれば
131:デフォルトの名無しさん (ワッチョイ ae33-/aea)
23/04/09 20:57:13.03 jJFRgIVZ0.net
オンラインの学習サイトすぐみつかるからそこでやればいいよ
132:デフォルトの名無しさん
23/04/09 21:03:05.02 l7RPhDng.net
>>126
Humanは間違えました、Animalですね
>継承なんてPython関係なしに非推奨の流れ
>ライブラリやフレームワークなどの提供側で有用なケースは多い
これはどういうことでしょうか
いわゆる委譲やコンポジションの話ですよね
なるべく委譲使えるところは委譲で、継承と使い分けする、という話ではなく
>非推奨
ということは、どのような場合にも継承を使わずに記述するという意味でしょうか?
Animalの例で言うと
class Dog:
def __init__(self):
self.animal = Animal()
dog1 = Dog()
dog1.animal.say()
みたいな?
133:デフォルトの名無しさん
23/04/09 21:18:36.24 l7RPhDng.net
継承のデメリットって
例えばBirdクラスを作ったときに
Animalクラスにflyメソッド作りがち
つまり犬と鳥との間で、共有メソッドではないflyメソッドを定義しちゃった
みたいな問題かな、と想像するのですが
そういう場合のデザインパターンってあるのでしょうか
runメソッドもflyメソッドもまとめたmixin継承して、飛ぶ系のAnimalクラスもうひとつ作るとか
でもこれだと結局は継承しちゃいますよね
134:デフォルトの名無しさん (ワッチョイ 8202-Rzwh)
23/04/09 23:17:30.33 FKzaKr3N0.net
本質的に難しい問題だね
動物の中でも鳥、こうもり、昆虫などが飛べるけど
鳥でもダチョウとか飛べないし
カイコも飛べない
軽傷を使うと比較的ましというだけだね
135:デフォルトの名無しさん (ワッチョイ bd5f-JuRI)
23/04/10 00:10:55.10 0qWpy2US0.net
うまくモデル化できてるならよくて
直感的じゃないのに無理やり適用するのが悪いってだけ
犬にfly投げて能力不足で失敗ともできるし
136:デフォルトの名無しさん (ワッチョイ 6e63-Ay2p)
23/04/10 00:12:02.83 e9gB5xZX0.net
AnimalクラスにBoolean型のflyableってメンバ変数を作って
flyメソッドを呼び出したとき
Falseなら何もしない(または何かエラーを返す)Trueならflyの内容を処理するっていうのはダメかな?
空飛ぶDogとか飛べないBirdとかが欲しくなっても作れると思ったんだけど…
137:デフォルトの名無しさん (ブーイモ MM66-9pDP)
23/04/10 05:05:07.56 oMIHCwe3M.net
30代Pythonクソチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
138:デフォルトの名無しさん (ワントンキン MM52-h6wA)
23/04/10 06:17:45.77 AkbnXQ4MM.net
分類というのは共通項を括りだしたものだから、どっちかしか持ってないものを持たせるのはおかしいんじゃない
moveやactionみたいな抽象的な仮想関数を作って派生先でrunやflyを呼び出せば良さそう
139:デフォルトの名無しさん (スププ Sd22-fkYs)
23/04/11 07:28:10.41 g9ggwvxZd.net
>>135
その発想を発展させるとobjectクラスにflyメソッドとflyable持たせればいいじゃんってなるから
継承の真逆の考え方でしょ
140:795 (スップ Sd22-5cAy)
23/04/11 12:13:57.24 tWs/BYOwd.net
Animalとして管理したい属性にflyableがあるんだから別に良いと思うけどな
というか無かったら指示できない
141:デフォルトの名無しさん
23/04/12 09:20:22.82 tingCOYl0.net
>>139
ある門があって飛べる動物のみ入れる、みたいなのを作るときにflyableで判定するって作り方が簡単そう
142:デフォルトの名無しさん (ワッチョイ 4201-BePx)
23/04/12 14:23:32.75 uWUQySNG0.net
flyableという属性が実行時に変化するものではなくて型によって決まってるものなら
Gate.accept(target: Flyable)としておけば実行時に問い合わせなくても静的にチェック可能
異なる種類の”門”が追加されるたびにベースクラスに~ableなフラグを追加して
継承したクラスのコンストラクタやそれを呼び出してるコードをすべて変更する必要があるから
それが望ましい設計となる状況はかなり限られてる
143:デフォルトの名無しさん (スップ Sd22-5cAy)
23/04/12 18:19:53.40 u0W7mUTqd.net
突き詰めていくとanimalなんて要らなくて振る舞いやらインターフェースだけでええやんとなり
動物とは何かという問いに
144:デフォルトの名無しさん (ワッチョイ bd5f-EQFc)
23/04/12 19:33:55.06 7avtugDp0.net
URLリンク(www.chibanippo.co.jp)
145:デフォルトの名無しさん (ワッチョイ 7d6b-d7Fp)
23/04/13 07:06:26.87 7NoTvSPt0.net
numpyのarrayで内包表記を使う方法ってありますか
リスト内包表記をnumpyに渡してるサンプルは見つかりましたが、これはまずリストを作ってそれをnumpyに渡してるだけですよね
146:デフォルトの名無しさん
23/04/14 05:56:54.13 Gstlub5yd.net
>>113-115
お返事ありがとうございます!
pickleがよさそうです。
147:デフォルトの名無しさん (アウアウウー Sacb-/q5i)
23/04/15 10:16:53.39 nVVXe4mla.net
>>144
numpyの速さのメリットが失われる場合があるから
numpyに合わせた方が良いよ
148:デフォルトの名無しさん (ワッチョイ 7ffb-Qmbz)
23/04/15 10:34:24.00 P4lYIe9L0.net
jupyterじゃないならどっちみちpycなるんやからそんな変わらんやろ
149:デフォルトの名無しさん (ワッチョイ 87a7-JaIR)
23/04/15 11:42:56.51 O06ex0uM0.net
ProcessPoolExecutorを使ってマルチプロセスで複数処理を動かすとき、あるプロセスから別プロセスの処理状況を知る、または知らせるような事って出来ますか?
今はManagerによるプロセス間共有変数にプロセスの処理状況を格納してフラグとし、他のプロセスはその変数の値が特定の値になるまでtime.sleepとwhileで待機しています。
スマートではないように思うので、例えば
別プロセスに対して「処理を再開してもいいよ」と通知したり、
別プロセスのインスタンスの関数を実行したり...
といった事が出来ればと思ったのです。何か良い方法はないでしょうか。
150:デフォルトの名無しさん (ワッチョイ 07e3-pEVB)
23/04/15 11:53:29.81 iK0tlqDR0.net
>>146
リスト内包表記を
> numpyに合わせ
るというのはどうするんでしょうか?
whereとかmaskで書く
151:デフォルトの名無しさん
23/04/15 15:09:11.60 sKf60sYO0.net
>>148
awaitに書き直すのが一番スッキリすると思うけど書き直すのが面倒ならcondvar
152:Jun (ワッチョイ 7fda-F1k0)
23/04/16 01:28:24.77 Lsji3jpm0.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
PythonでPyGameを使ってゲームが作れるようになりたいです。
153:Jun (ワッチョイ 7fda-F1k0)
23/04/16 01:49:57.68 Lsji3jpm0.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
Pythonのソースコードをすらすら書けるようになるには、どうしたらいいですか?
154:デフォルトの名無しさん (ワッチョイ 8736-Jl7Z)
23/04/16 22:36:43.99 2LWEnpk00.net
dictionary型ってどういうときに使うの?
全然ありがたみがわからない
155:デフォルトの名無しさん (ワッチョイ a75f-ABex)
23/04/16 23:07:46.43 zYleX6N80.net
適材適所だから配列だけで困ってないなら知らなくてもいい
配列の探索はみつかるまで最悪全要素しらべる必要があるけど
辞書のキーは比較的短時間で探せる構造になってたりはする
156:デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
23/04/16 23:12:03.98 KBeSrEQR0.net
dict型とdictionary型は違うからな
157:デフォルトの名無しさん
23/04/16 23:28:39.97 calMfenH.net
WebアプリのAPIでクエリとかレスポンス返すときにJSONで扱いたいときかなぁ
json.dumps/loadsであんまり意識しなくてよくなる
import json
json_str = '{"a":10,"b":20,"c":true,"d":null}'
d = json.loads(json_str)
print(type(d),d)
json_str = json.dumps(d)
print(type(json_str), json_str)
#<class 'dict'> {'a': 10, 'b': 20, 'c': True, 'd': None}
#<class 'str'> {"a": 10, "b": 20, "c": true, "d": null}
あとは引数に展開するときとか?
def deco(a,b=0,*args,**kwrgs):
print(a,b)
print(args)
print(kwrgs)
a=1
b=2
args=[3,4,5]
kwrgs={"x":11,"y":22}
deco(a,b,*args,**kwrgs)
#1 2
#(3, 4, 5)
#{'x': 11, 'y': 22}
158:デフォルトの名無しさん (ワッチョイ 5f02-baic)
23/04/17 00:52:15.92 n1XKDS030.net
googleアカウントとか python じゃないけど辞書型だよ
メールアドレスをキーにしてバリューはそのアカウントの情報
配列よりも高速にアクセスできるし
重複チェックも容易
159:デフォルトの名無しさん (アウアウウー Sacb-zO2x)
23/04/17 13:29:10.71 4hNaPs7ta.net
Ruby では、辞書はHash
require 'json'
# JSON では、nil ではなく、null を使う
json_str = '{"a":1,"b":"bb","c":true,"d":null}'
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null}
p json_obj = JSON.parse( json_str )
#=> {"a"=>1, "b"=>"bb", "c"=>true, "d"=>nil} # nil になる
p json_obj.class #=> Hash
puts JSON.dump( json_obj )
#=> {"a":1,"b":"bb","c":true,"d":null} # null になる
160:デフォルトの名無しさん (アウアウウー Sacb-/q5i)
23/04/17 16:06:07.88 kmcXsww3a.net
>>158
Rubyは欠陥言語
# URLリンク(ideone.com)
require 'json'
json_obj = {:a=>1, :b=>"bb", :c=>true, :d=>nil, "b"=>"BB"}
p json_obj.class #=> Hash
json_str = JSON.dump(json_obj)
puts json_str #=> {"a":1,"b":"bb","c":true,"d":null,"b":"BB"}
puts JSON.parse(json_str) #=> {"a"=>1, "b"=>"BB", "c"=>true, "d"=>nil}
161:デフォルトの名無しさん (アウアウウー Sacb-Naft)
23/04/18 15:41:29.64 sxhvE7iUa.net
白目!
162:158 (アウアウウー Sacb-Naft)
23/04/18 20:29:38.91 OYqyJGa8a.net
元々、JSON では、:b みたいなシンボルは使えない。ParserError。
"b" みたいな文字列しか使えない
require 'json'
json_str = '{:b=>"bb"}'
puts json_str #=> {:b=>"bb"}
p json_obj = JSON.parse( json_str )
#=> JSON::ParserError
163:158 (アウアウウー Sacb-Naft)
23/04/18 20:54:35.49 OYqyJGa8a.net
元々、JavaScript でも、同じプロパティが上書きされるだけ
const json_str = '{"b":"bb","b":"BB"}';
const json_obj = JSON.parse( json_str );
console.log( json_obj );
//=> Object { b: "BB" } 1つになる!
164:デフォルトの名無しさん (ワッチョイ 4701-sFbk)
23/04/19 03:05:38.54 ZTiW0i9K0.net
そもそもアカウント管理はLDAP使うんじゃないのか?
プログラムレベルの処理になるとメモリ上でディクショナリ使うかもしれないが
165:デフォルトの名無しさん (ワッチョイ 07e3-pEVB)
23/04/19 11:55:51.92 J7SITOSf0.net
インデックスが同じ DataFrame df と Series s があり、全ての要素は float であるとする。
df の各行について s の対応する行の要素より大きい要素が一つでもあるかどうか調べたいんだが、どうしたら良い?
df > s で True/False が格納された DataFrame が返ることを期待していたが、「automatic reindexing は推奨されない」と言われてすべて NaN の DataFrame が返された。
166:デフォルトの名無しさん
23/04/19 13:52:15.60 HyPlOTI2.net
pathlibでイテレーティブルに操作できるようなライブラリ作ろうとしたけどめんどくさくて断念
例えば
ディレクトリ構成
data
├a
├b
└c
dataディレクトリを指定して、子ディレクトリに対して操作する場合
pathlibを拡張したクラス=PathEXとして
PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
(pattern=aとcディレクトリだけ見つける)
みたいなことをやりたい場合
イテレーティブルな操作だと
「aの中のcaractersを含むファイル1を削除、aの中のcaractersを含むファイル2を削除、、、cの中のcaractersを含むファイル1を削除、、、、」
みたいなのが理想だけど
その前にdirかどうかをスルーする操作やpatternのdirかどうかを判別しないといけないので
イテレーションであるメリットが少ないような・・
なのでfind_dirの段階でイテレーションを再帰して、patternだけのパスをリストに格納
そのリストからfileだけを検索(イテレーションを再帰して→ファイルだけのパスをリストに格納)
そのリストからdelete_files_with_chars(characters)
みたいに、目的のファイルやディレクトリのパスだけをflattenにして
その確定したリストに対して操作する方が良いような気がしてきた
これが何万ファイルとかになってくると違いがあるのかはわからないけど。
明らかにpathlibオブジェクト数の分だけメモリ溜まっていきそうなので
ただこれなら.find_dir(pattern).find(pattern).ignor(pattern)みたいにいくらpatternを追加しても
pattern毎に再帰は増えるけどシンプルに操作できる
今のところこれで困ってないしエラー処理が簡単なのでいいけど、無駄は多そう
167:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/19 14:26:56.97 r24Gen790.net
整数がいくつか入力されて、最終的に0からmaxまで揃ってるかどうか調べたい
exists[num] = True
みたいなことをすると、エラーになるので、どうやって回避したもんか
168:デフォルトの名無しさん (ワッチョイ 07c0-OS67)
23/04/19 14:59:59.68 NBiOUl/V0.net
>>166
ソートして舐めるのは駄目なん?
最終的に整数列が欲しいだけなら0からmaxの数列生成してからシャッフルした方が楽かも
169:デフォルトの名無しさん
23/04/19 15:12:22.49 .net
>>166
max = 3
d = {}
while True:
print(d)
i = int(input(f"{max}までの正の整数を入力してください。"))
if i > 0 and i <= max:
d[i] = i
if len(set(list(d))) == max:
break
print("終了")
print(d)
{}
3までの正の整数を入力してください。0
{}
3までの正の整数を入力してください。2
{2: 2}
3までの正の整数を入力してください。4
{2: 2}
3までの正の整数を入力してください。1
{2: 2, 1: 1}
3までの正の整数を入力してください。3
終了
{2: 2, 1: 1, 3: 3}
170:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/19 15:22:18.37 r24Gen790.net
何を入れてもいい箱は辞書か集合だよな
なんかキーが数というのに抵抗がある
dic{1.1} = True
とかちゃんと動くの?
171:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/19 15:22:52.39 r24Gen790.net
[1.1]
172:デフォルトの名無しさん
23/04/19 15:33:37.73 .net
google colaboratoryのpython3.9はいけた
d = {}
d[0.05]=True
d[1.1]=True
d[1.2]=True
d[2.0]=True
print(d)
print(len(d))
#{0.05: True, 1.1: True, 1.2: True, 2.0: True}
#4
len(d)だけでいけた >168
173:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/19 15:54:16.31 r24Gen790.net
d = {}
d[1] = True
print(d[0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1]) # KeyError: 0.9999999999999999
こんなのはやっぱり動かない
174:デフォルトの名無しさん
23/04/19 16:00:04.24 .net
何がしたいのかはわからんけど
普通にエラー吐けばいいだけの話では
175:デフォルトの名無しさん (スプッッ Sdbb-GSlL)
23/04/19 16:00:53.93 VKTpm4xNd.net
要素数max+1個のlistを使えよ
176:デフォルトの名無しさん
23/04/19 16:04:43.65 .net
>exists[num] = True
この辺の謎縛りがなけりゃ普通にリストとappend使ってif inで重複調べるだけでいけそう
177:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 16:34:20.46 V36h4z9V0.net
>>164
不等号の代わりにDataFrameのgtとかltを使う
178:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 16:40:40.19 V36h4z9V0.net
>>165
イテラブルとイテレーティブという言葉はあるけどイテレーティブルという言葉はないぞ
んでもって変なライブラリ作らなくてもPath.globでイテレーティブに操作できる
メソッドチェーン化したいという理由があるのかもしれないけど
それはPythonのやり方ではないので自分しか読まないようなコード以外では避けたほうがいい
汎用化したい場合はdata_dir_path, pattern, charactersを受け取るような関数を作る
中身はforループ
179:デフォルトの名無しさん (ワッチョイ 7f12-bLn0)
23/04/19 17:10:02.05 1S6lpC/v0.net
pythonでmxnetをインポートしようとすると出てくるエラーに関する質問です。
(私の使用している環境は以下の通りです。
python: 3.10.8, mxnet: 1.8.0, windows: 10.0.19044.2728
CPU: intel core i7, GPUはありません。)
import mxnet を実行すると、
Could not find module
'C:\Users\ \AppData\Local\Programs\Python\Python310\lib\site-packages\mxnet\libmxnet.dll' (or one of its dependencies).
Try using the full path with constructor syntax.
というエラーが出現します。
調べると、どうもlibmxnetのpathに関する問題らしいのですが、
具体的な解決方法がわかりません。
具体的にどんなコードを実行したらエラーが直るか、教えていただけないでしょうか?
あるいはGPUが必要なのでしょうか?
180:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 17:23:53.73 V36h4z9V0.net
>>166
入力値がリストで0からmaxまでの整数値なのであればsetにして長さを比較
マイナス値やmaxを超えた整数値が存在する可能性があるのであればmax+1の長さの配列を用意して比較
def check(input_list):
__xs = [False] * (_max + 1)
__for i in input_list:
____try:
______xs[i] = True
____except IndexError:
______return False
__return all(xs)
181:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/19 17:35:15.56 r24Gen790.net
maxはgivenではなくて入力された中の最大値
182:デフォルトの名無しさん (ワッチョイ e79b-pEVB)
23/04/19 17:51:09.87 +idC8n5I0.net
>>176
gt, lt に axis 指定で望みの動作になりました!
ありがとうございます!
183:デフォルトの名無しさん
23/04/19 17:57:15.31 HyPlOTI2.net
>>177
>Path.globで
やってみるとわかるがこれだと結局、目的のパスが静的に決定している場合のみの逐次処理にしないといけないので
PathEXを作る意味はない
もちろんそういう場合にはpathlibだけで事足りるのでPath.globを使えばいい
184:デフォルトの名無しさん (ワッチョイ 0701-DGPv)
23/04/19 18:12:08.30 PFleyHUL0.net
>>166
リストの内容が0から最大値まで連番になっていることを確認というならrangeで連番作ってそれと比較とかどうでしょう
重複や順番不問にするためにset使って
set(input_list)
185: == set(range(0,len(set(input_list)))) みたいな
186:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 18:12:36.99 V36h4z9V0.net
>>180
最大値を先に把握できてるという状況がよくわからないけど
>>168のコードみたいにインタラクティブな逐次入力前提なのかな?
もしそうなら要素数も知れてるだろうからわかりやすくリストにappendしてソートで十分だと思うよ
187:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 18:17:25.11 V36h4z9V0.net
>>182
>目的のパスが静的に決定している場合のみの逐次処理にしないといけない
悪いけど何を言ってるか全然分からない
188:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 18:24:51.45 V36h4z9V0.net
>>184
単純なソートだと重複があったら簡単ではなかった
やっぱりsetだね
189:デフォルトの名無しさん
23/04/19 18:31:44.30 HyPlOTI2.net
ファイル操作をやってみるとわかるけど
ファイルを動かしたり名前を変えたりすれば
イテレータの状態と合わないことがある
やってみないとわからないけど
190:デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
23/04/19 19:28:54.64 c0AxLdlu0.net
>>172
これはID:r24Gen790が何を言いたいのか理解できてるのか?
191:デフォルトの名無しさん (ワッチョイ 7f33-S3w6)
23/04/19 19:36:30.83 c0AxLdlu0.net
ていうか全体的に意味がわからん
l = ['1','2','3']
while l: l.remove(input())
192:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 21:38:08.88 V36h4z9V0.net
>>187
それはglob関係なく設計の問題
193:デフォルトの名無しさん (ワッチョイ a75f-ABex)
23/04/19 22:12:04.01 iYk70KDD0.net
os.walk
194:デフォルトの名無しさん
23/04/19 22:17:34.54 HyPlOTI2.net
いや設計も何もイテレータでやるならやったらいいし
再帰の部分でどのみちコードの量が二度手間以上になるから
メリット無さそうだし最初からflattenにする、という話なんだが・・
どっちもやった上で、イテレータ維持しようとすると面倒だからやめたって言ってるんだが
globやって、globやって、みたいなのならそりゃ書けるし
その程度の用途しかないなら無理してやらなくていいと思うよ
195:デフォルトの名無しさん
23/04/19 22:28:57.93 HyPlOTI2.net
あとこの人いつもいる?オブジェクト指向やら継承からの脱却、の人だと思うけど
違ったらすまんけど
この前、何がなんでも継承しない方がいいの?みたいなこと聞いたらどっか行っちゃったよね
自分はそれが正解か間違いかはわからないので純粋に聞きたかったんだが
設計って確実にその思想の部分に大きく影響されるよね
196:デフォルトの名無しさん
23/04/19 22:31:27.43 HyPlOTI2.net
関数型が正義と思っていてそう書かなきゃいけないなら
そりゃそうなるわ、としか言えんもの
197:デフォルトの名無しさん (ワッチョイ a75f-ABex)
23/04/19 22:38:25.10 iYk70KDD0.net
できあがりが見通しや効率で優れているかで判断すればいいのであって
手法は目的じゃないからあってるよ
ところでなしてos.walkつかわんの?
198:デフォルトの名無しさん (ワッチョイ 5f01-9fcd)
23/04/19 23:23:13.93 V36h4z9V0.net
>>195
os.walkでやってた多くのケースがPath.globやglob.globでまかなえるようになったからね
199:デフォルトの名無しさん (ワッチョイ 7ffb-Qmbz)
23/04/19 23:23:38.32 GSMGMYxg0.net
関数型プログラミングは高速化に寄与することもあるよねと思うところもあるし
オブジェクト指向やるならオブジェクト指向でやる必要がある場合に限ってやればいいし
だからといってオブジェクト指向やりたいなら、Pythonみたいな超高級言語じゃなくてC++でゴリゴリ書いたほうがメモリに優しいし高速だしって話になるよ?
200:デフォルトの名無しさん
23/04/19 23:26:57.39 GSMGMYxg0.net
何がやりたいかによって手段とツールが変わるだろうけど
Pythonでやるなら実装はC++も使ったほうが独自APIを実装するときの自由度が高い
201:デフォルトの名無しさん
23/04/19 23:40:18.23 V36h4z9V0.net
>>192
Path.globを知ってたら↓こんなコード書かないから
まずリファレンスを読もう
>PathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)
>再帰の部分でどのみちコードの量が二度手間以上になるから
それは書き方が悪いだけ
思い込みを捨てたほうがいい
>関数型が正義と思っていてそう書かなきゃいけないなら
関数型とは全く関係ないぞ
単純なforループを推奨してるんだからむしろ関数型とは真逆
>>190の設計の問題というのは>>187のような状況に陥るのは設計が悪いという意味
古典的な設計の問題だからわからなければググって勉強して
202:デフォルトの名無しさん
23/04/20 00:14:41.43 dFvm1wua.net
>>199
それは自作だからあえて変えてるだけで実際内部では実質
Path("ディレクトリやファイルのパス").glob(pattern).filter(処理for_each)
したり、再帰したり、しなかったりだよ
わざわざ存在しないクラス名、メソッド名使ってるのになぜそんな解釈したのかちょっと謎すぎる
globを使っていないわけではなくglobのイテレータ維持したまま最後の処理までするのは面倒なので断念しただけ
処理の部分が例えば”直接ファイル操作(removeなど)”みたいな投げっぱな単純な処理ならglob完結でいいけど
処理結果を返したり保持したい場合や、処理途中でファイル更新、単にパス名を文字列だけの用途として利用したい場合など個人的にあったので
あえてイテレータの恩恵少ないしforループ隠蔽するために、自分の場合はクラス化ほぼほぼ一択と判断しただけ
どの道、forループ処理は一度でも行う、はあなたがやってもだれがやっても行き着く事実であって設計云々ではないですね
あなたの想像し得る基本的な用途なら別にforループforループforループで良いしクラス化とか必要ないと思いますよ
見づらいだろうなぁとは思うものの、そこに関しては全然悪いとは思っていません
お好きなように
203:デフォルトの名無しさん
23/04/20 00:24:53.99 QMVhjkAJ0.net
os.walkオジサンになっていい?
204:デフォルトの名無しさん
23/04/20 00:25:34.76 dFvm1wua.net
実際forループで書いて管理しきれなくなってからのos.pathやらpathlibの拡張なんで
何がなんでもosのみpathlibのみで書く縛りがあるなら別に書けばいいと思うけど。
自分はあとあとのこと考えると管理面倒だからforループforループで管理は無理だな
「あのディレクトリの○○なファイルだけ発見したい」みたいな超シンプルな使い方のみの想定ならそれでいいと思うけど
205:デフォルトの名無しさん
23/04/20 01:25:19.09 R0tK1jDo0.net
>>200
うーん”設計”が伝わらないとは・・・
じゃPathEX(data_dir_path).find_dir(pattern).delete_files_with_chars(characters)で頑張ってくれ
俺は諦めた
206:デフォルトの名無しさん
23/04/20 08:09:16.58 uCwEPaTc0.net
ワッチョイ消してるやつの相手すんなよ...
207:デフォルトの名無しさん
23/04/20 09:18:43.87 Gkc0C+yM0.net
IPは消してたけどワッチョイ消したことはないな
なんだろう
うまい喩えが見つからないけど、死ぬほど恥ずかしい
208:デフォルトの名無しさん
23/04/20 09:26:39.56 dFvm1wua.net
>>203
いや1レス目からもう十分伝わってますよ
>メソッドチェーン化したいという理由があるのかもしれないけど
>それはPythonのやり方ではない
というあなたの設計思想は >>177
誰が見ても違和感でしかないですよ
標準ライブラリでその恩恵を預かりながら自作では徹底してforループ
決められたこと以外は出来ない
狂信とまではいいませんけど、頑張ってください
209:Jun (ワッチョイ 7fda-F1k0)
23/04/20 23:59:27.49 ohUBo7l50.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
Pythonはシンプルな言語だがオモチャでない。
210:デフォルトの名無しさん (ワッチョイ a75f-ABex)
23/04/21 01:14:13.92 KCdL0+Bq0.net
いろいろ目をつむらないとシンプルに扱えないから
玩具の品質には到達していないのはわかる
211:デフォルトの名無しさん (ワッチョイ a754-sFbk)
23/04/21 01:27:36.69 fM6D7Jjb0.net
おもちゃとは考えが逆だろう
最小のコードで複雑なことができたら楽しい
pythonは暗黙でいろんなことが決まるのを避けるので、何かするならきっちり指定する
きっちり指定してきっちり動いても何も面白くはない
212:Jun
23/04/22 23:31:49.33 ZUue34CB0.net BE:846651633-2BP(0)
URLリンク(img.5ch.net)
Python以外で何かいい言語はありますか?
213:デフォルトの名無しさん
23/04/23 00:04:54.40 DlHbN44X0.net
GoやってGoの仕事に就くとしばらく食える
214:デフォルトの名無しさん
23/04/23 00:11:46.19 Y0v5ztu40.net
pep8とzenくらいやっとけばMonkになれる
215:デフォルトの名無しさん
23/04/23 00:12:41.43 Y0v5ztu40.net
所謂monkに文句無し的な
216:デフォルトの名無しさん
23/04/23 00:13:34.99 Y0v5ztu40.net
ふふってなった ちんこ痒い
217:デフォルトの名無しさん
23/04/23 01:40:11.94 RcbzEQSV0.net
香ばしいレスが多いな
218:Jun
23/04/23 02:06:25.42 F2K2mK+f0.net BE:846651633-2BP(0)
URLリンク(img.5ch.net)
Go言語はCから学ばなくても修得できますか?
219:デフォルトの名無しさん
23/04/23 02:32:01.30 X2+aRqhz0.net
Rustとまちがってない?
まーどの高級言語も先にCやってた方がだんぜん理解深まるけどね
220:デフォルトの名無しさん (ワッチョイ a633-F6q8)
23/04/23 14:44:10.81 U/RsZCHU0.net
>>217
今は順番が逆
221:デフォルトの名無しさん (アウアウウー Sa21-PXVT)
23/04/23 15:34:25.39 fUzoPDLKa.net
文系でウェブ系なら、Ruby on Rails 1強。
米国年収でも、Rails, AWS Solution Architect が13万ドル
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5~7
PHP : 5
Dart : 4.4
日本では、バックエンドの求人倍率が数倍で、
フロントが0.5倍と、10倍の開きがある。
フロントは供給過剰で、低価格競争になっている
つまり欲しい人材は、Rails, Linux, Docker, AWS が出来る香具師
YouTube で有名な雑食系エンジニア・KENTA は、
キャリアパスを、Rails → Go のみと言ってる
理系ならPython で、大学院数学科とか、AWS 機械学習の資格など
222:Jun (ワッチョイ a6da-Fj9N)
23/04/23 23:53:51.08 F2K2mK+f0.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
PythonとGoを両方やることにします。Goも教材がたくさんありますね。現在、人気の
言語ですね。
223:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/24 00:07:55.90 HkcOJ3w60.net
結局ベースにCがあるんだよな
Cでも書けることを、より簡単に、より堅牢に、より保守性高く、書き直しているに過ぎない
そもそもCで書けんわというアーキテクチャーが登場するまで、Cは残り続ける
224:Jun (ワッチョイ a6da-Fj9N)
23/04/24 23:39:25.46 xypANbuI0.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
C言語。デニス・リッチーですか。長寿の言語ですね。WindowsOSもC言語で書かれて
いるんですね。
225:デフォルトの名無しさん (ワッチョイ 66fb-nb5X)
23/04/25 13:51:41.19 FPTpqTcN0.net
goやpythonよりもPHPやったほうが良い
226:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/25 22:11:51.74 +HdKZSwh0.net
Webアプリ以外でもPHPで書くの?酔狂やね
227:デフォルトの名無しさん
23/04/26 12:04:22.99 cIPQx0Y6a.net
MLでPHPとPython使うだろうjk
228:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/26 18:39:27.90 JavlcTjg0.net
perlで作ったツールを移植してるけど
if key3 not in d[key1][key2]:
d[key1][key2][key3] = {}
みたいなのがたくさん追加で要る
しかもループの中で毎回評価してて気持ち悪い
autovivificationを使わずに多次元辞書をすっきり書けないものか
229:デフォルトの名無しさん (ワッチョイ 6646-0EuI)
23/04/26 21:19:22.89 vPfd2wHV0.net
暗黙の初期化のような、うちうちのノリが多くて、Perlは嫌われたんだろ。
230:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/26 21:33:02.57 JavlcTjg0.net
keyが存在するかどうかのチェックはどうせ毎回やってるんだから同じことか
231:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/26 22:20:00.88 VuAuol7y0.net
defaultdict
232:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/26 22:29:32.74 JavlcTjg0.net
from collections import defaultdict
d = defaultdict(dict)
d['a']['b']['c'] = 1 # KeyError: 'b'
2次元までなら
233:デフォルトの名無しさん (ワッチョイ 6da7-sx73)
23/04/26 22:43:05.12 k7DLXEM30.net
辞書をそんなネストしないといけない時点で根本的に設計がおかしいのでは?
234:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/26 22:47:14.72 VuAuol7y0.net
def deepdict(): return defaultdict(deepdict)
d = deepdict()
d['a']['b']['c'] = 1
もっとうまく書けるかもしれんけど
235:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/26 22:52:56.90 JavlcTjg0.net
dictだけ続くならいいけど、listが混ざったりするんだよな
236:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/26 22:56:15.01 VuAuol7y0.net
後出しは書く必要ない
任意の関数渡せるんだからスキにしたらええ
237:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/26 23:03:54.93 JavlcTjg0.net
a[1] がlistなのかdictなのか判らんという時点で、pythonでは自動は無理なんだよな
l = []
l[1] = 1 # IndexError
perlはこれが出来るというのも、かなりの飛躍がある
238:デフォルトの名無しさん (ワッチョイ a633-ASru)
23/04/26 23:05:17.48 sUnbpfBB0.net
jsonで受け取ったデータをデコードしてそのまま使ってるとかじゃないの
239:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/27 16:04:02.47 BTOHfqgT0.net
if m := re.search(パターン1):
処理1
elif m := re.search(パターン2):
処理2
else
処理3
みたいに書いていたものを、:= を使わないように変更
m := re.search(パターン1)
if m:
処理1
else:
m := re.search(パターン2)
if m:
処理2
else
処理3
気持ち悪い
elifは展開するともともとこういうものだから仕方ないのか
240:デフォルトの名無しさん (スッップ Sd0a-LN7w)
23/04/27 16:11:37.78 Noc5t00Md.net
assignment expressionが必要になった理由がそれだから仕方ないね(pep572)
241:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/27 16:43:35.35 SfEpe4Pu0.net
m = None
def search(pat):
____global m
____m = re.search(pat, str)
こういうのを直前に書くとか
242:デフォルトの名無しさん (ワッチョイ 4954-RykB)
23/04/27 16:50:03.39 BTOHfqgT0.net
re.searchは別関数にしたいとは常々感じてる
m.groups() を返してくれると有り難い
マッチしなかったら[]を返すようにすれば、ifにそのまま入れられる筈
なんで正規表現回りこんなに不便なんだろう
243:デフォルトの名無しさん (ワッチョイ a633-ASru)
23/04/27 18:30:59.89 5qwnrWFd0.net
競プロで複数行の標準入力を受け取るとき、stdinを使った方がだいぶ早いみたいな記憶があったんだけど、今はだれも使ってない
これは自分が何か記憶違いをしてる?
244:Jun (ワッチョイ a6da-Fj9N)
23/04/27 23:58:21.80 CoNlHc/S0.net BE:846651633-2BP(0)
sssp://img.5ch.net/ico/nida.gif
Pythonはオブジェクト指向とデータ隠蔽の所が面白い。
245:デフォルトの名無しさん (ワッチョイ 66fb-nb5X)
23/04/28 00:38:35.47 fNFGtOF30.net
ハードウェアやdbの設計やらセキュリティやら色々大変だよ
まじで全部はやれそうに無い
246:デフォルトの名無しさん (ワッチョイ a95f-kYp6)
23/04/28 01:17:05.61 0Z+HC9sf0.net
>>241
だれも?
まわりみんなPowerShellユーザなの?
247:241 (ワッチョイ a633-F6q8)
23/04/28 07:46:56.36 X3vhIzka0.net
2系の時の話だったかもしれん
248:241 (アウアウウー Sa21-F6q8)
23/04/28 09:49:13.94 gpbxWykPa.net
>>244
どういうこと?
249:デフォルトの名無しさん (アウウィフ FF21-YWDm)
23/04/28 10:58:04.57 pksuSfeeF.net
>>240
mat
250:chなんか使うからだ findallで良い
251:デフォルトの名無しさん (ワッチョイ 5701-p0t6)
23/05/03 19:16:59.83 LjnRJYKu0.net
個人でプログラムしている程度の素人からの質問です
dataclassでクラスの作り方を覚えたら従来のクラスの作り方を覚える必要ってありますか?
dataclassでできないことがイマイチ分からなくて・・・
252:デフォルトの名無しさん (ワッチョイ 3754-fitb)
23/05/03 20:31:00.66 dRzFRHH60.net
setdefaultが便利なことに気付いた
253:デフォルトの名無しさん (ワッチョイ 375f-qg3Z)
23/05/03 20:42:31.43 jsxN4Jfn0.net
>>248
ひとのコード読まないならいいんじゃない?
@dataclass使わずに自前で実装している事のが多いから
内包表記にもいえるけど同等のベタなコードも知ってたほうが
他人のコードの理解が進むし自分のコードの幅も広がるとは思う
254:デフォルトの名無しさん (ワッチョイ 5701-p0t6)
23/05/04 03:58:07.49 1n3OCeKB0.net
>>250
ありがとうございます
従来のクラスは読める程度にしておいて自分で作るときはデータクラスにしようと思います。
引数をいちいちself.hoge = hogeって列挙していくの面倒で・・・
255:デフォルトの名無しさん (ワッチョイ 3754-fitb)
23/05/04 10:26:11.29 Oq6zT20d0.net
書く量はあんまり変わらないからなあ
reprとか書くならその分減る
256:デフォルトの名無しさん (ブーイモ MMff-1K07)
23/05/08 15:08:20.54 PDbtS8P/M.net
すまん。パイソン歴3年とリクルートエージェントで言ってしまった(笑)
本当はvscodeと言いたいが、実はGoogleコラボしか経験がないです。(笑)
今からvscodeでパイソン歴3年は何を言えばいいですか?
257:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/08 15:26:52.63 OygwxwuO0.net
結果をリストに入れて副作用で返したい
def func(list):
# 処理
list.clear()
list.extend(result)
こんな感じでできるけどどう見ても汚い
副作用がそもそも汚いけど、もう少し何とかならないか
258:デフォルトの名無しさん (ワッチョイ efa7-IT0J)
23/05/08 15:54:19.13 N55ghYlR0.net
>>254
関数にはリストを渡さずに格納したい結果だけを返して、
リストに入れるのは呼び出し元の方でやるのが一般的じゃないかな
259:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/08 15:57:26.54 OygwxwuO0.net
戻り値には成功かどうかを返したい
260:デフォルトの名無しさん (ワッチョイ 1610-vOwS)
23/05/08 16:12:14.22 NZN2JSTa0.net
何がしたいかよく分からないけど成否とリストのタプルを返せばええやん
261:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/08 16:13:54.12 OygwxwuO0.net
:= を使わずにif func()に使いたい
262:デフォルトの名無しさん (ワッチョイ efa7-IT0J)
23/05/08 16:23:33.58 N55ghYlR0.net
成功なら普通に値を、失敗ならFalseを返すとかじゃ駄目なの?
263:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/08 16:26:44.75 OygwxwuO0.net
それは := を使う前提の話では
264:デフォルトの名無しさん (ブーイモ MMdb-vs1K)
23/05/08 17:15:30.96 Kz8WKKNDM.net
成否と成功時の結果を返したい場合は例外を使うのが一般的なんじゃないかと思う
でなければHttpResponseのように結果ステータスとデータをまとめたクラスのインスタンスで返す
タプルはその簡易版
結果ステータスを持たずにクラス化する方法もなくはない
if foo.func(): do_something(foo.data)
265:デフォルトの名無しさん (ワッチョイ 335f-UXjQ)
23/05/08 17:17:05.80 htP7Y4l40.net
if func(list)で副作用で返すとかまぁ現代では誰もやらないから素直に
result = func()
if resultの正常条件:
にしときなよ。
266:デフォルトの名無しさん
23/05/08 17:35:23.12 .net
l = []
result = None
def func():
____try:
________l.clear()
________l.extend(result)
________return l
____except:
________return False
#
result = None
print("成功" if func() else "失敗", l)
#
result = ["r1","r2"]
print("成功" if func() else "失敗", l)
#失敗 []
#成功 ['r1', 'r2']
267:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/08 17:48:09.47 OygwxwuO0.net
elifで繋いでいくとどんどん深くなるんだよな
多分、:= を使うのがベスト
でも環境的に使えない
副作用で返すのが次善の策で、実際うまく行っている
ただどう見てもバグの元
268:デフォルトの名無しさん (ワッチョイ cb10-W4Ad)
23/05/08 19:55:50.84 Z+v93H2P0.net
深くなるなら早期return
関数仕様変えたくないならreplace_xxx(list)とか関数名で説明するしかないんじゃない?
269:デフォルトの名無しさん (ワッチョイ 335f-Mmp8)
23/05/08 20:19:26.02 z5F93KHO0.net
その場で直前に関数定義(def)して条件につかえばブラックボックスにはならない
270:デフォルトの名無しさん (ワッチョイ 92da-tcUg)
23/05/09 01:02:42.07 95FlmxIY0.net
URLリンク(gigazine.net)
> 従来のPythonよりも高速化が可能な新たなプログラミング言語「Mojo」が開発される
> Mojoはこれまでのプログラミング言語であるPythonの使用感と
> C言語並みの性能を合わせ持つ言語だとされています。
271:デフォルトの名無しさん
23/05/09 13:13:30.67 .net
同じコードで動くならもうPython13とかで統合してほしい
272:デフォルトの名無しさん (ワッチョイ 16fb-cJ5Y)
23/05/09 13:25:05.82 iN9Igm8n0.net
アンドロイダー乙
273:デフォルトの名無しさん
23/05/09 17:43:47.32 yVvdWTsg0.net
同じコードで動くのなら、それは現行のpython作ってる人達におまえら無能と言ってるのと同じだからずーっと喧嘩し続けるだろう
274:デフォルトの名無しさん (ワッチョイ 9354-KeI6)
23/05/11 16:00:43.55 gUZpd4Xj0.net
テキストが1行ずつ入ったリストを順に処理していて、
ある条件の時は次の行も読んで処理したい
次のループでは処理済の行は飛ばす
普通にforでループにして、処理の中でイテレータをさらに取ってくるとかできる?
275:デフォルトの名無しさん
23/05/11 16:22:44.99 bMPdFZE5M.net
>>271
2行ずつイテレートすれば?
(1, 2), (3, 4), (5, 6), …で十分なのか
(1, 2), (2, 3), (3, 4), …とする必要があるかは処理内容次第
276:デフォルトの名無しさん
23/05/11 16:25:43.89 bMPdFZE5M.net
次の次の次の行もまとめて処理する必要があったりするならイテレーションを跨いで状態を持ち回る必要があるので単純な2行ごととはまた違うやり方になる
277:デフォルトの名無しさん
23/05/11 16:42:51.40 rmkBIaEM0.net
>>271
処理済の行は飛ばすなら単純
it = iter(lst)
for x in it: print(x, next(it))
ただ最終行でnext(it)したら例外になる
飛ばさないならmore_itertoolsかitertoolsを活用かな
278:デフォルトの名無しさん
23/05/11 17:37:54.85 gUZpd4Xj0.net
forの対象をリストでなくてiterにすればいいのか
forもnext()するし中でも同じものをnext()する
続きがあるよとデータに書いてあるのに実際には無いならそれはエラーでいい
279:デフォルトの名無しさん
23/05/12 00:21:34.94 hQCPlnw9a.net
Ruby なら、
input_text = <<'EOT'
あい
aa
あい
あい
bb
あい
あい
EOT
prev_line = [ ] # 前の行
# 改行を削除して、1行ずつ処理する
input_text.each_line( chomp: true ) do |line|
if line == "あい"
prev_line.push( "あい" ) # 代入だけして処理はしない
else
puts prev_line.join + line # 表示
prev_line = [ ] # 内容を削除
end
end
# もし、中身が残っていれば表示する
puts prev_line.join if prev_line.length > 0
出力
あいaa
あいあいbb
あいあい
280:デフォルトの名無しさん
23/05/12 07:13:16.33 pPbvGVzs0.net
今の行だけで続きがあるか判別できれば楽だけど、
次を読んで始めて前ので終わりだったと判明する処理は厄介だな
実際にはそっちの方が多い
pythonのコードもそれ
次のを読んで確定ならまだいいけど、最後まで読んだら終わりとみなす処理も必ずつきまとう
281:デフォルトの名無しさん
23/05/21 19:54:50.70 .net
なぁ・・ __pycache__とかいう雑草みたいに抜いても抜いても生え散らかす謎ディレクトリなんの役に立つのこれ・・
282:デフォルトの名無しさん
23/05/21 23:07:26.87 kjLdpiYM0.net
キャッシュじゃねーの?
283:デフォルトの名無しさん
23/05/22 17:36:01.89 kOYkg4dap.net
Twitterの自動投稿をスレッド形式でツイートしたいのですけどできるのでしょうか?
284:デフォルトの名無しさん
23/05/22 18:22:25.30 EzOozQYh0.net
techiedelight.com/compiler/?~dictclass
こんな感じで実際にはデータが入ってる辞書型クラスがあるんですが
def get(self, _id:str):
if _id in self._results:
この時点では_idはstr型なのに
def __getitem__(self, key):
これにステップした瞬間keyがつねにintの0になります
デバッガで見ても何が何だかわからんのですが
どういう仕組みなんでしょうか?
285:デフォルトの名無しさん
23/05/22 18:35:07.65 TcXdI8Pp0.net
key は整数型とドキュメントに書かれているが?
286:デフォルトの名無しさん
23/05/22 18:50:31.32 jGNTm+uC0.net
>>282
それはシーケンス型の場合って書いてませんか?
dict型のエミュレーションが目的なんですが
ちなみにin比較しないでmyclass[key]の場合は動作は期待通りです
inで比較したいのにエラーなるのでなぜかわからない事態です
キーは実際にあるので__missing__の実装とは関係ないかと思うのですが
287:デフォルトの名無しさん
23/05/22 19:06:11.68 jGNTm+uC0.net
自己解決しました
>__contains__() を定義しないオブジェクトに対しては、メンバシップテストはまず、 __iter__() を使った反復を試みます
でした
288:デフォルトの名無しさん
23/05/22 19:15:00.64 2xhSnxHv0.net
a, b, c = list[:3]
とすると、中身があればいいけど無いとエラーになる
無い時はNoneが入るようにしようと思うと、
a, b, c = list[:3] + [None, None, None]
みたいにしないといけない
なんかもやもやするので、もっといい書き方ある?
289:デフォルトの名無しさん
23/05/22 19:52:51.64 Y3GhwDFGp.net
List_A
List_B
List_C
があって、CSVに出力すると1行目にA,2行目にBっていうふうになります。
これを縦に並べて1列目にA,2列目にB,3列目にCと出力したいです。
パンダスで行列に変換してから転置、転置したものの1行目をリストA',2行目をリストB'みたいにして出力して対応はできたのですがもう少しスマートなやり方ないでしょうか?
290:デフォルトの名無しさん
23/05/22 20:17:51.14 sAlsu4+P0.net
>>286
URLリンク(docs.python.org)
291:デフォルトの名無しさん
23/05/22 22:53:16.45 XGVinkOj0.net
>>285
いいやり方ないね
a, b, c = unpack_or_default(mylist, 3)のように自分で関数化かな
292:デフォルトの名無しさん
23/05/22 22:55:57.03 sAlsu4+P0.net
おおがかりでもよければ
from more_itertools import *
a, b, c = take(3, pad_none(lst))
293:デフォルトの名無しさん
23/05/22 23:03:18.26 2xhSnxHv0.net
やってること一緒だもんな
足りてない時はNoneで埋めます、を暗黙にする訳にはいかなくて、
何らかの方法でそれが判るように書かないといけないなら、元のままが一番素直かもしれん
294:デフォルトの名無しさん (ワッチョイ defb-Pn9L)
23/05/23 03:09:27.85 gLCisDzi0.net
お前らのせいでクララが立ったんだが
295:デフォルトの名無しさん
23/05/23 10:49:55.37 X1m2WkvHa.net
a, b, c, _ = (list + [None] * 3)[:3]
296:デフォルトの名無しさん
23/05/23 10:57:50.75 Kb7aSTvI0.net
_はなんで要るの?
297:デフォルトの名無しさん
23/05/23 16:45:29.43 koKlYaEi0.net
printで文字列と数値を合わせて表示する場合
formatメソッド使うとstr関数で数値を文字列に変換する必要が無い?
298:デフォルトの名無しさん
23/05/23 16:53:43.43 d8FV5sbM0.net
何故試さないんだ?
299:デフォルトの名無しさん (ワッチョイ 4f54-FIIW)
23/05/23 18:06:50.19 Kb7aSTvI0.net
formatって自由度高すぎて逆に正解が判らん
300:デフォルトの名無しさん (ワッチョイ de7b-nmQz)
23/05/23 18:21:05.98 d8FV5sbM0.net
n=1
print(f"とりあえず{n}回試してみたらいいんだよ")
301:デフォルトの名無しさん (ワッチョイ 0363-SkZo)
23/05/23 18:26:28.31 2KukQYy00.net
古い人間なんで
print('とりあえず{}回試してみたらいいんだよ'.format(n))
302:デフォルトの名無しさん (ワッチョイ 0310-owa4)
23/05/23 18:56:03.36 JMXPuiCR0.net
Formatは使わずに
a=1
print("a:")
print(a)
とかやっちゃうな。
303:デフォルトの名無しさん (ワッチョイ 4f54-FIIW)
23/05/23 18:58:29.83 Kb7aSTvI0.net
print(f'{a=}')
が使えない期間はどのくらいあったんだっけ
304:デフォルトの名無しさん (ワッチョイ defb-Pn9L)
23/05/23 19:02:29.48 gLCisDzi0.net
%dがないと書けないだろそれ
305:デフォルトの名無しさん (ワッチョイ 0310-owa4)
23/05/23 19:37:45.42 JMXPuiCR0.net
a=1
print('aは', a, 'です')
で1行に書ける。
桁数指定等しないならformatを使わなくてもよい。
306:デフォルトの名無しさん (ワッチョイ 4f54-FIIW)
23/05/23 19:44:20.80 Kb7aSTvI0.net
それでいいじゃんという思いがあったから、f文字列の実装があんなに遅かったんだろうな
str = f'aは{a}です'
print(str)
ができるので、文字列にしちゃった方が取り回しがいい
307:デフォルトの名無しさん (ワッチョイ 0310-owa4)
23/05/23 19:46:06.48 JMXPuiCR0.net
>>302
はpython3の場合ね
308:デフォルトの名無しさん (ワッチョイ 6b10-cbOI)
23/05/23 20:26:41.69 vaXvQcIB0.net
PILでカウントアップするgif画像を生成するプログラムを作りたいのですが、gif画像が動きません。
URLリンク(dpaste.com)
希望では開くと順次数字がカウントアップされるgifファイルとなるはずなのですが、
どこがわるいのかわかりません。
309:デフォルトの名無しさん
23/05/23 20:37:30.97 vaXvQcIB0.net
自己解決しました。
最終行のパラメータが
append_image
になってました。正しくは、append_imagesでした。
310:デフォルトの名無しさん
23/05/23 22:16:27.17 gLCisDzi0.net
python2.2くらいのころ
311:デフォルトの名無しさん
23/05/27 08:52:36.37 kNCRj74ed.net
スクレイピングしようとbs4でしたところ
URL:http---.jpgがあってそのままだと吸い出せず
そのあとにつづく.netでした
けれどの\sや\nなどでやっても結合できず
置き換えでやったところprintで見ると.netの部分が空白行になってました
要素か何か別々になってるような感じで、、、
初心者過ぎてよく分かりません
soup = BeautifulSoup(res.text, "html.parser")
[tag.extract() for tag in soup(string='n')]
elems = soup. find_all("img", class_="ほにゃらら")
for elems in elems:
elems = elems.get("data-src")
elems = elems.replace('.net','')
elems = elems.replace('jpg','jpg.net')
elems = elems.replace('png','png.net')
if elems.startswith("http") and (elems.endswith('')):
printした時こうなります
http jpg.net
http jpg.net
http jpg.net
改行のようではなかったのでどのように結合させて
ファイルを1.jpgから順に書き出すにはどうしたらいいですか?
312:デフォルトの名無しさん
23/05/27 09:00:31.23 L2vd50qR0.net
初心者はスクレイピングはするなよ
313:デフォルトの名無しさん (ワッチョイ eb68-jfx8)
23/05/27 09:25:50.64 UvPowDbL0.net
AIに聞け
314:デフォルトの名無しさん
23/05/27 12:02:06.97 fcbjf6f+0.net
skyscraping
315:デフォルトの名無しさん
23/06/01 16:52:29.22 gN7DNRA50.net
import ffmpeg
# 出力①
stream = ffmpeg.input("test1.wav")
stream = stream.filter('afade', type='in', start_time=0, duration=5)
stream = ffmpeg.output(stream, "test1.mp3")
ffmpeg.run(stream)
# 出力②
stream = ffmpeg.input("test2.wav")
stream = stream.filter('afftdn')
stream = ffmpeg.output(stream, "test2.mp3")
ffmpeg.run(stream)
この様にした場合出力①のフィルターは出力2でも有効なのでしょうか
streamのオブジェクトをリセットできませんか
316:デフォルトの名無しさん
23/06/01 17:09:12.89 2ejdPdKk0.net
ffmpegの挙動は謎が多いからなあ
コマンドラインからでもよく判らんものをさらに上から被せたらもっと判らん
317:デフォルトの名無しさん
23/06/01 17:10:47.28 gN7DNRA50.net
stream = Noneとかしておけばいいのかな
318:デフォルトの名無しさん
23/06/01 19:28:49.46 9UkFjNvY0.net
streamのインスタンスはそれしても変わらんから
ライブラリの実装がまずいならPython側でプロセス分けるとか
fork、multiprocessing他
319:デフォルトの名無しさん (スププ Sda2-UeIx)
23/06/03 18:43:23.62 vl84qNBAd.net
>>308だけど
URLを格納したのを表示させたら\n\nでした
それを無くせば良かっただけでした
それで処理からカウントjpgにして、、、
このやり方だと元ファイルがpngとかのフォーマットだとjpgに置き換えてるだけでそれを変換するのが分からないのと
一つ一つDLするとものすごく遅いので
webには並列の非同期asyncioが良いとされているんですが
処理が終わった状態のからカウントjpgになるんですかね?
そのasyncioもこれからなんですけど初心者には難し過ぎるよ、、、
URLリンク(i.imgur.com)
320:デフォルトの名無しさん
23/06/03 20:59:56.61 uw9I+Q3M0.net
>>316
>>309
321:デフォルトの名無しさん
23/06/03 22:18:25.13 ZC+gxQ5g0.net
asyncio使うのはいいけど負荷に気をつけろよ
322:デフォルトの名無しさん
23/06/03 23:03:36.74 2QEQ5+1m0.net
調子乗って処理させたら青画面なった
323:デフォルトの名無しさん
23/06/04 03:47:02.55 XolxJINE0.net
とりあえずテキストエディタの背景が白いのをやめるんだ
324:デフォルトの名無しさん
23/06/06 11:15:45.11 NOo63SXR0.net
ピソン、
なんでもできる言語だと聞きましたが
ブログとか作ろうと思ったら
HTMLのほうがいいんですか?
JAVAの人気もそうですが、
パイソンが出てきても他の言語が駆逐されてないんですね…
325:デフォルトの名無しさん (ワッチョイ 065f-N/Lw)
23/06/06 11:20:43.65 NOo63SXR0.net
すみません、誤爆しました
初心者スレ行けですね
326:デフォルトの名無しさん
23/06/06 12:40:14.37 thyMI4pi0.net
ドストエフスキーの文章よりも難しいな
327:デフォルトの名無しさん
23/06/06 13:18:02.81 h4TMdgn6a.net
マルチ判定リクエスト中
328:デフォルトの名無しさん
23/06/06 13:49:56.81 c5Tg6KEz0.net
出てきてもとか言ってるけどpython自体は確か30年以上前から開発されてる言語だけどな
329:デフォルトの名無しさん (ワッチョイ 7d5f-+AdM)
23/06/06 14:19:20.43 TOjFiGIo0.net
1.5.2より前から使ってるから妻よりつきあい長くて草
330:デフォルトの名無しさん (ワッチョイ 9d54-tyMo)
23/06/06 14:21:55.09 763lc9G+0.net
会社の環境が3.6で固定されてるので、変な回避技が身につく
331:デフォルトの名無しさん
23/06/06 14:55:53.55 qDf8J72k0.net
>>326
奥様の初期版は幾つですか。
332:デフォルトの名無しさん (ワッチョイ eea7-eC91)
23/06/06 19:27:25.63 vWLMTBxN0.net
flaskを使ってloggingでログをファイルに出力しようとしています。
ログを見るとエスケープシーケンスがうまく働いていない?のですが、どうすれば綺麗に読める文字列のみ出力されるでしょうか。
自分なりに調べたらフォーマットを指定していないとこうなるという情報があったのですが、きちんと指定しており実際その通りの形式で出力されているので反映はされていると思っています。
図中の赤い箇所(ESC[31mなどとなっている部分)です。
URLリンク(i.imgur.com)
333:デフォルトの名無しさん
23/06/06 19:42:24.47 763lc9G+0.net
環境による
多分windowsで、その場合は儀式が必要
334:デフォルトの名無しさん
23/06/06 23:57:03.60 On4pFXf00.net
URLリンク(qiita.com)
このPyAudioをつかう方のソースをコピペして、cmdで起動して
リブートってマイク入力すると再起動って表示されるんだけど
recognize_google()なにかおかしいのかな
335:デフォルトの名無しさん (ワッチョイ 7d5f-92fi)
23/06/07 05:30:31.36 aCOIJr4k0.net
>>329
chatGPTに聞いてみたよ
Flaskでログをファイルに出力する場合、デフォルトではログレベルがINFOに設定されており、色付きのログが出力されることがあります。これはターミナルでログを表示する際に役立つものであり、ログファイルではうまく表示されません。
ログフォーマットを指定する際に、色付きログを無効にするよう設定することで、ファイルに綺麗に読める文字列のみ出力されるようになります。具体的には、以下のような設定を追加してみてください:
```python
import logging
from flask import Flask
app = Flask(__name__)
app.logger.setLevel(logging.INFO)
# ログフォーマットを指定
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
# 色付きログを無効化するハンドラを追加
handler = logging.StreamHandler()
handler.setFormatter(formatter)
app.logger.addHandler(handler)
# 以下はログの出力例
app.logger.debug('デバッグメッセージ')
app.logger.info('インフォメーションメッセージ')
app.logger.warning('警告メッセージ')
app.logger.error('エラーメッセージ')
```
この設定を使用すると、色付きのエスケープシーケンスがログファイルに出力されず、綺麗に読める文字列のみが出力されるはずです。
336:デフォルトの名無しさん (ワッチョイ 7d5f-92fi)
23/06/07 05:40:47.02 aCOIJr4k0.net
>>330
同じく聞いてみた
以下のようなコードを使って、リブートと入力すると、再起動と表示されます。期待する結果はリブートとそのまま表示されることですが、何かおかしいところはありますか?
以下回答
会話が噛み合ってないけど内部で一度英語に変換されてるからなんだろうと思う
それを考慮すると噛み合ってんのかなあと
このコードにはいくつかの問題があります。
1. `import speech_recognition as sr`の前に`import pyaudio`を追加する必要があります。
2. `stream_callback=callback`の行の前に`callback`関数を定義する必要があります。コードの上部に`def callback(in_data, frame_count, time_info, status):`を追加してください。
3. `sprec.recognize_google(audiodata, language='ja-JP')`の行の前に`sprec`を初期化するコードが必要です。`main()`関数内の`sprec = sr.Recognizer()`をコメント解除してください。
これらの修正を行った後、再起動と入力すると、"再起動"と表示されるはずです。