Pythonのお勉強 Part66

■ このスレッドは過去ログ倉庫に格納されています
2021/11/12(金) 07:48:11.11ID:vp8lzav70
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

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

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2021/12/11(土) 16:32:46.63ID:PhRtUMglM
>>441
一発でオートフォーマットできるからインデントがめちゃくちゃなコードでも何の問題もない
python以外ではね
2021/12/11(土) 16:33:59.54ID:SDIYylIRD
>>443
何のために を教えてやるのが先でしょ
446デフォルトの名無しさん (ワッチョイ 4733-8/hI)
垢版 |
2021/12/11(土) 16:34:44.72ID:lBTOlMPp0
>>443
インデントするかしないかなんて癖とか慣れみたいなもんだし、根性論がどうとかじゃないだろ
それこそ、インデントに限らず変数名のつけ方とかコメントの書き方とかも同じだよ
実際に書きながらじゃないと身につかん
2021/12/11(土) 17:21:54.24ID:E/VsNyVn0
>それこそ、インデントに限らず変数名のつけ方とかコメントの書き方とかも同じだよ
>実際に書きながらじゃないと身につかん

それが根性論。
わかりやすい変数名は自動じゃ付けられないがインデントは自動でできる。
限りある時間と頭は前者に注力するのが合理的ってもんだろう。
2021/12/11(土) 17:30:00.42ID:OP1TuqIU0
インデントずれてる奴は雑なんだろうな
安心して仕事任せられないわ
2021/12/11(土) 17:41:42.05ID:yK8FRSrA
根性が嫌ならもうコーディングは他人にすべてを任せて貴重な時間を経営やコミュニケーションスキル学習へ回した方が合理的
450デフォルトの名無しさん (ワッチョイ 4733-8/hI)
垢版 |
2021/12/11(土) 17:43:26.35ID:lBTOlMPp0
>>447
わざわざフォーマッタとか使わせるなら最初からまともな開発環境なりエディタなり使わせるわ
2021/12/11(土) 17:52:32.22ID:VpQySh8l0
今日の不毛な議論のテーマ「インデント」です。
結論が必要ない人だけ参加してください。
2021/12/11(土) 17:52:48.44ID:E/VsNyVn0
わざわざ手でインデントすることを強制するよりまともな開発環境使わせろと言ってたのはこっちなんだが
2021/12/11(土) 18:12:04.65ID:ujbkP3uUM
書くのは多少ぐちゃぐちゃでもいいけどレビューの時にはちゃんと整形しとけ
2021/12/11(土) 18:13:25.17ID:4ZOnX4zTa
すげーどうでもいい
2021/12/11(土) 18:27:24.02ID:OP1TuqIU0
ちゃんと整形できない人
ご飯クチャクチャ食べてそう
2021/12/11(土) 18:40:51.75ID:w5YNy+Wd0
プログラムなんて正しく動けばそれで良いのさ
2021/12/11(土) 18:51:29.07ID:FrF9wjhg0
止め跳ね払いさえしっかり書けてればいい
2021/12/11(土) 18:53:13.77ID:V5XtH56o0
つかblackかけるよね
2021/12/11(土) 18:57:33.01ID:w5YNy+Wd0
文豪と呼ばれる人たちの字は汚くて読みづらい
2021/12/11(土) 19:14:05.90ID:4ZOnX4zTa
インデントなんてリフォーマットで一発だし
変数名なんて設計の問題
2021/12/11(土) 19:18:13.33ID:WRoIyzpK0
blackってあの宗教臭いフォーマッタだっけ
2021/12/11(土) 19:22:22.43ID:WRoIyzpK0
フォーマットがしょっちゅう変わるからblameが使いにくくて
何だこれウンコだなって評価してたけど少しはマシになったのか?
2021/12/11(土) 20:11:30.93ID:7e/RY26Q0
インデントずれてるのにリフォーマットしたらロジック変わるんじゃ…
464デフォルトの名無しさん (ワッチョイ 47da-Z7Vi)
垢版 |
2021/12/11(土) 20:16:46.10ID:LVLvmhJV0
意味のない議論だよ
2021/12/11(土) 20:27:04.83ID:E/VsNyVn0
>>463
さすがにブロックや折り返しを正しく認識できない状態で強行するフォーマッタはないだろうし
正しく認識できている状態でフォーマットするならそれが変わることもないはず。
2021/12/11(土) 21:03:52.73ID:BEyyuamvM
自動フォーマットできる範囲がPythonの場合限定的って話でしょ
インデント間違ってたら動かないケースがほとんどなんだから
467デフォルトの名無しさん (ワッチョイ 7f10-LoL2)
垢版 |
2021/12/11(土) 21:04:38.10ID:hm3+CMnM0
こういう話題は盛り上がるんだなあ
自転車置き場の議論だっけか
2021/12/11(土) 21:19:56.71ID:T68Lqt3h0
仕事で書き始めると内包表記とか全然使わんな
使わんでも書けるし
まぁ慣れなんかね
2021/12/11(土) 22:02:55.46ID:V5XtH56o0
内包表記と言われてもcomprehensionと言われてもピンとこない
もっといい呼び方なかったのか
2021/12/11(土) 22:12:01.24ID:OP1TuqIU0
2重の内包記法が出てくるとウッとなる
1重は問題ないが
2021/12/11(土) 22:19:40.70ID:V5XtH56o0
短く圧縮する為の技じゃないしな
理解を阻害するなら本末転倒
正しく使うと読みやすくなる
2021/12/11(土) 22:57:24.80ID:VpQySh8l0
内包表記 + ランバダ式は 「うー」っとなる
2021/12/11(土) 23:17:58.68ID:xs/Eto350
内包表記 + lambda でせっかく数式ぽく見やすく書けるのに
そこで複雑に書いちゃうのは本末転倒だし盛大にディスってええよ
2021/12/11(土) 23:50:48.35ID:+8dJDZod0
単なる長文折返しのときも4つスペース入れてる?
自分は意識的に2つにしてる(pep8でも許容されてる)
2021/12/12(日) 00:11:10.40ID:4/VBhxqq0
ペップ
2021/12/12(日) 00:37:21.74ID:ybDnKR8a0
内包表記は数学が得意な人向け
集合論ではこう書く
2021/12/12(日) 00:42:39.81ID:QuHtW41S0
数学が得意な人はnumpy使うから…(想像)
2021/12/12(日) 01:04:29.47ID:X/X0JWhG0
>>476
このレスみて気づいたけどまんまSQLなんだよな
2021/12/12(日) 01:06:40.44ID:Qvw+czy00
数学得意でもSQLが得意とは限らないよね
480デフォルトの名無しさん (ワッチョイ ff7d-Z7Vi)
垢版 |
2021/12/12(日) 03:26:26.60ID:/VVPjIN/0
まーた意味不明な議論してる
2021/12/12(日) 16:58:22.09ID:xtbg5MqF0
blackのリファレンス見てたら--safeってオプションがあるんだよね
つけないとフォーマット前後でASTが変化してたか検証しないんだってよ
すごくない?
2021/12/12(日) 17:00:27.87ID:xtbg5MqF0
てか普通はASTに解釈してからコード生成するもんだろ
そうすれば構文が変化する可能性は実装ミス以外で理屈上あり得ない
2021/12/12(日) 17:07:01.91ID:cgjbpF8I0
何かのコンファレンスでいろんな国の人が集まって英語で話している
でもみんな母国語は違う言語

なんかpythonはそんな感じで、他に慣れた言語もあるけどpythonでも書く
だから、いろんな方言が混じる
2021/12/12(日) 17:18:41.81ID:s1cq8TlgM
Pythonって言語というかコード自体に対する関心の乏しい人が多くて、
どっちかというとプログラミングオタクみたいなのより目的志向の人がクールだとされるような空気があるんだよな
だからPythonの流儀とか気にしないで無茶苦茶やる人が多い
最近ではJava専のSIerなんかも参戦し始めてて混迷に拍車がかかっている
2021/12/12(日) 17:23:35.86ID:aUiHIMOoa
そこにペチパーも入ってきたら最悪だな
スコープ区切ることもなくダラダラ長いスクリプト書き散らす文化最悪
2021/12/12(日) 19:30:52.03ID:5aMI8rIwM
実際どうでもいいだろ
好きに書かせればいい
ただ型指定強要とかそういうのはパイソニックじゃないから勘弁してほしい
今ん所必須と思ったことはない
2021/12/12(日) 19:46:42.88ID:H5I9C+V/a
さすがに型情報なしは一人プロジェクトじゃないと無理があるんじゃないかと
2021/12/12(日) 20:57:49.24ID:QuHtW41S0
そもそもPythonは大規模開発向きではない気が
2021/12/12(日) 21:14:27.80ID:HT/W5ldUM
一人趣味用だろ
仕事ならちょっとしたツールとか
2021/12/12(日) 21:15:05.32ID:5aMI8rIwM
>>488
これ
2021/12/12(日) 22:32:39.56ID:X/X0JWhG0
>>487
ようつべくらいのコンパクトなプロダクトじゃないとな
2021/12/12(日) 22:56:04.81ID:+lwr5pOP0
100万行のPythonコードとか頭イカれてるとしか
2021/12/12(日) 23:08:08.25ID:cgjbpF8I0
なんでや
多重継承無敵やろ
494デフォルトの名無しさん (ワッチョイ 6736-xNO7)
垢版 |
2021/12/13(月) 20:31:56.30ID:bmYI6DhG0
ts
495デフォルトの名無しさん (ワッチョイ 6736-xNO7)
垢版 |
2021/12/13(月) 20:40:34.40ID:bmYI6DhG0
C++だとクラスを継承して関数を再定義するとき、ヘッダーをみればvirtual関数か見分けがつくじゃん。
pythonだと普通に関数を書けば再定義できちゃうから、見分けが難しいよね。
特に、継承の継承とかしてると更に見分けがむずかしい。

これって、自分で関数名を工夫するとかしか手はないよね?
2021/12/13(月) 23:11:33.32ID:xUh4ce/50
>>495
継承元辿っていかないと仮想関数かどうかわからないのでは?一番親にvirtualついてればよかったよね?
2021/12/13(月) 23:19:20.83ID:lh9CDY7I0
for分のループがよくわからん
2021/12/14(火) 00:12:32.25ID:BYPDUL910
>>>497
https://docs.python.org/ja/3/tutorial/controlflow.html#for-statements
ここのどこでアレってなる?
2021/12/14(火) 02:21:09.13ID:7S3LFIel0
NFTアートが1300万円で落札。VRアーティストせきぐちあいみ「誰もがまだ見ぬ世界を創りたい」

ゴーグルの先に広がるのは、何もない真っ暗な空間。しかし、両手に持ったコントローラーを
振りかざすたびにバーチャルの空間に色が現れ、天地が生まれ、次第に豪華絢爛な異世界が立ち上がる。
その内部は360度から堪能することができ、地を這うことも空を駆けることも自由自在。
VRアーティスト・せきぐちあいみの創作活動は、まさに天地創造だ。
VRと出合ったことで人生が大きく動きだし、今では海外からも注目される存在になった、せきぐち。
VRで人は何を体験できるのか?
そして、彼女のデジタルアート作品に1300万円もの価値をつけたNFTの新たな可能性とは?
2021/12/14(火) 03:06:09.90ID:HCC7MYbd0
創ったやつでどう遊ぶかやな
501デフォルトの名無しさん (JP 0H4f-i5II)
垢版 |
2021/12/14(火) 10:10:15.90ID:DUXpvdCJH
変数名スレと迷ったんだけどpython+tkinter限定の話の気がするのでこっちに…

class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)

__def on_close(self):
____global flg
____app.destroy()
____flg = False

if __name__ == '__main__':
__flg = True
__while flg:
____app()

アプリケーションのリセットを実装するためにこういう書き方を考えたんだけど
1 : 問題ないですよね?
2 : flgの適切な変数名はなんですか?
isAlive? loop?
502デフォルトの名無しさん (JP 0H4f-i5II)
垢版 |
2021/12/14(火) 10:11:31.22ID:DUXpvdCJH
失礼
on_close()内のappはself.appです
2021/12/14(火) 10:26:12.89ID:+EVhZbH90
アンダースコア付けまくる流儀なのかと思った
504デフォルトの名無しさん (ワッチョイ 6736-S64G)
垢版 |
2021/12/14(火) 11:12:22.41ID:0CLeNCku0
class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)

こういうのて全角スペースを使うと見易くなるよ。

class App():
 def __init__(self):
  elf.app = MyWidgets()
  self.app.mainloop()
  self.app.protocol("WM_DELETE_WINDOW", self.on_close)

AAの感覚ねw
2021/12/14(火) 11:21:48.60ID:e0HER7LA0
・のほうがまだ見やすいよ
しかし空白文字を制御に使うなんてどこの誰が考えたんだよ

class App():
・def __init__(self):
・・self.app = MyWidgets()
・・self.app.mainloop()
・・self.app.protocol("WM_DELETE_WINDOW", self.on_close)
2021/12/14(火) 11:23:03.78ID:lIRTHhOV0
2021年になってもコード貼り付けられない掲示板
2021/12/14(火) 11:37:10.44ID:Or5YSda6a
コードがじかに張り付けられて
その場で実行されても困るからな
2021/12/14(火) 11:39:30.28ID:+EVhZbH90
普通は全角スペース使うな
そしてそのまま貼り付けてエラーになる

pythonもスペースとTABの他に全角スペースもインデントに許可してくれればいいのに
2021/12/14(火) 11:59:00.43ID:1bs/ZtcG0
どう考えてもこの掲示板がヤバイのにPythonが悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな

Pythonに型定義が必要だと思ってるとかも...
2021/12/14(火) 12:04:36.90ID:+EVhZbH90
変数名に全角文字も使えるけど、全角スペースは使えないんだよな
だから、pythonも全角スペースをスペースの一種だとは思ってる
strip()でも削除される
でもインデントには使えない
2021/12/14(火) 12:23:23.14ID:1PoShsV10
>>501
Appクラスにstart, stop, restartメソッドを実装して使い分ければmainにflgやwhileは必要なくなる

現状のループ実装ならflgの名前はshould_restartとかかな
ただrestartするのがデフォルトの動きなら真偽を逆にしてshould_exitとかにしたほうが意図が伝わりやすい
2021/12/14(火) 12:25:50.36ID:W8qbVS9SM
じゃあ全角予約語や全角数値リテラルもよろしく
2021/12/14(火) 12:27:24.63ID:VQ9CDzMD0
どう考えてもこの掲示板がコード貼り付けにむいてないだけなのにこの掲示板の機能が悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな
2021/12/14(火) 12:48:14.80ID:+EVhZbH90
この掲示板というより、htmlが連続スペースを無視する仕様を引きずってるんでしょ
ブラウザでやればどこでもそうなる
2021/12/14(火) 12:55:35.00ID:vLIDlmgW0
5ch は、命令によって表示を変えられる掲示板で、
単に文字列として表示しているだけの掲示板じゃない

色々な命令を受け付けるから、危険な命令を書き込めないようにしている
516デフォルトの名無しさん (ワッチョイ 872c-p36F)
垢版 |
2021/12/14(火) 13:00:57.82ID:6KyJPdov0
>>511
import tkinter as tk

class App():
__def start(self):
____self.root = tk.Tk()
____self.btn_1 = tk.Button(self.root, text='stop', width=10, command=self.stop).pack()
____self.btn_2 = tk.Button(self.root, text='reset', width=10, command=self.reset).pack()
____self.root.protocol('WM_DELETE_WINDOW', self.stop)
____self.root.mainloop()

__def stop(self):
____self.root.destroy()

__def reset(self):
____self.root.destroy()
____self.start()

app = App()
app.start()

こういう感じですかね
init経由しないの初めてなのでリセット時にきちんと初期化できてるのか不安
2021/12/14(火) 13:08:39.77ID:+EVhZbH90
Tk使うと途端に思考がイベントドリブンになるんだよな

コンソールに出力してちらつくのが嫌だから、
単に表示用のウィンドウが欲しいだけなのに、
実行開始ボタンみたいなのを追加した方がスムーズに作れる
2021/12/14(火) 13:22:01.69ID:ukp+dl0i0
Unicode的に全角空白含めホワイトスペース(混在不可)でインデントできてもいい気がするが
HTMLで連続する全角空白がそのまま描画されるのはバグ
2021/12/14(火) 13:30:18.23ID:1bs/ZtcG0
めっちゃ効いてて草
520デフォルトの名無しさん (ワッチョイ 6736-S64G)
垢版 |
2021/12/14(火) 13:44:53.68ID:0CLeNCku0
Tkか。
perlで使ってたな。
で、本格的なGUIを作りたくてQtに移行した。でもperl/Qtの使いにくさは異常ww

pythonに移ったらQtとの相性が抜群で驚いた。
本格的にGUIを使うならQtがいいと思う。少なくともTkはダメだな。

python/tkの現在のレベルがどの程度がしらんけどw
2021/12/14(火) 14:16:08.35ID:+EVhZbH90
手軽にGUI化したいか、ちゃんとやりたいかだよな

同じモジュールで簡単に作れるし凝ったものも作れるといいけど、
どちらかに特化してるので結局いろいろ手を出すことになる
2021/12/14(火) 17:36:00.21ID:EGYSSl+K
おれはpythonのGUIは全部webアプリに作り直したわ
個人でやる分にはwebアプリの方が使い勝手が良いというところに帰結した
一番の理由は仮想環境で安定して完結出来る、すぐにデプロイできるという点だったかな
(まぁその考えもまた変わるかもしれないけど)

GUIで作ってた頃はPySimpleGUIってライブラリがめちゃ直感的で使いやすかったな
2021/12/14(火) 17:39:17.97ID:EGYSSl+K
ライブラリというかフレームワークだった
他に何か補助的なライブラリをインストールするとかは必要なく
pysimpleguiだけでほとんどできた記憶
2021/12/14(火) 17:46:18.30ID:gY9N+5Mqa
人名の、外字をreportlabでPDFに出力したいのだけど、□になってしまいます。
PDFにフォント埋め込んで表示させる事はできないのでしょうか?
ちなみにエクセルからPDFに書き出すとちゃんと表示させる。
2021/12/14(火) 17:56:05.21ID:+EVhZbH90
特定の文字種だけ読めなくなってるpdfとかたまに見るな
あれは実は作った本人は読めてるのかもしれない
つまり、pdf自体は正しくて表示する側の問題かもしれない
2021/12/14(火) 19:02:21.60ID:Wlu2x8+4D
外字フォントを埋め込んでないから
2021/12/14(火) 19:07:15.88ID:3xSGx3Cz0
report labでどうやって外字埋め込むの?
2021/12/14(火) 19:34:38.23ID:ukp+dl0i0
埋め込んだフォントに外字が含まれているかどうかの話で
使う側は関係なくない?しらんけど
2021/12/14(火) 19:38:00.75ID:+EVhZbH90
そう思うんだけど、まともに読めないようなものを公開すると思えないんだよな
2021/12/14(火) 19:57:14.83ID:J7XSbp4E0
イメージにしてしまおう
2021/12/14(火) 21:32:31.59ID:Il/nsfIC0
PDFの文字コードはUnicodeじゃなくて独自だった記憶
2021/12/14(火) 21:54:50.72ID:3xSGx3Cz0
自作外字でも、エクセルからPDF書き出ししたらちゃんと見ることが出来るんだわ。windows10のエクセルで書き出したPDFがMacでちゃんと外字も見れるので出来るはずなんだ。
で、それをreportlabでやりたいんだけどやり方が分からんのです。
2021/12/14(火) 21:55:38.65ID:Ae5z0mHZ0
fx-CG50

full pythonでpytorchでも動くようになったら
いいのになぁ
2021/12/15(水) 12:50:56.44ID:lDA2oINn0
>>532

こういう話ではないのですのん?
https://gammasoft.jp/blog/pdf-japanese-font-by-python/
2021/12/15(水) 13:08:06.22ID:XQabx2r27
>>534
これはできる。
ただ、表示する文字列に自作外字が入ると□になる。
なので、pdfに外字の情報を埋め込まなきゃいけないと思うのだけど、やり方が分からないのです。
誰か教えて下さい。
2021/12/15(水) 13:46:40.32ID:N5WUcAXN0
外字の含まれるフォントファイルを読み込んでないんじゃないの、ということだと思うけど
2021/12/15(水) 14:18:04.11ID:0wo19brQ0
Jupyter Notebookに本のサンプルプログラムを
表示させたとき
in ソース
out 処理結果
って表示させられるんですけど
in ソースの部分だけを抜き出したくて困ってます
その部分だけ選択してコピペするには手間がかかります

質問なんですが
Jupyter Notebookで
out の部分を非表示にするいい方法ないですかね?
2021/12/15(水) 14:19:11.58ID:0wo19brQ0
複数in out があるので一気にです
2021/12/15(水) 14:32:36.32ID:NuYoj3Sh7
>>536
えーと、windowsの場合、EUDC.TTEとEUDC.EUFの二つのファイルがシステム標準の外字となっており、すべてのフォントにリンクできます。ですので、MS明朝でも、MSゴシック
でも同じ外字が出力されます。
ので、MS明朝をベースにして作った外字をMSゴシックで表示させると、外字だけ明朝っぽい表示になりその他はゴシックに
なります。
要するに外字のデータはフォントファイルに保存されているのではなくて、別ファイルからリンクが張られているのです。
なお、フォント個別に外字ファイルを作成して個別にリンクさせることもできますが、そっちをreportlabでやってもダメでした。
ExcelからPDF吐いたらちゃんと埋め込まれるのに・・・。
誰か教えて。
2021/12/15(水) 14:57:32.78ID:XLng8AET0
そこまで切り分けできてるんなら
reportlab-users
で聞いてみたら
2021/12/15(水) 15:41:40.80ID:hectGEVQ0
ここは?
https://www.blog.pythonlibrary.org/2013/07/19/reportlab-all-about-fonts/
2021/12/15(水) 16:42:33.36ID:4urMZ+Lwa
フォントを埋め込むのが前提のライブラリなんじゃない?
2021/12/16(木) 18:00:48.64ID:KcTXiqly0
いきなり書き始める段階を脱して、def main(): から書き始めるようになったぜ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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